From 23f70b73686f3758007840d1b51a0b6d0e952404 Mon Sep 17 00:00:00 2001 From: Guilherme Soares Date: Wed, 22 May 2024 10:50:22 +0200 Subject: [PATCH] chore: Upgrade LBC to v2 --- .openzeppelin/unknown-31.json | 368 ++++++++++++++++++ build/contracts/Address.json | 2 +- build/contracts/AddressUpgradeable.json | 2 +- build/contracts/Bridge.json | 4 +- build/contracts/BridgeMock.json | 4 +- build/contracts/BtcUtils.json | 35 +- build/contracts/Context.json | 2 +- build/contracts/ContextUpgradeable.json | 2 +- build/contracts/ERC1967Proxy.json | 2 +- build/contracts/ERC1967Upgrade.json | 2 +- build/contracts/IBeacon.json | 2 +- build/contracts/IERC1822Proxiable.json | 2 +- build/contracts/IERC1967.json | 2 +- .../ITransparentUpgradeableProxy.json | 2 +- build/contracts/Initializable.json | 2 +- build/contracts/LiquidityBridgeContract.json | 4 +- .../LiquidityBridgeContractAdmin.json | 4 +- .../LiquidityBridgeContractProxy.json | 4 +- .../contracts/LiquidityBridgeContractV2.json | 153 +++++--- build/contracts/Migrations.json | 4 +- build/contracts/Mock.json | 4 +- build/contracts/OpCodes.json | 2 +- build/contracts/Ownable.json | 2 +- build/contracts/OwnableUpgradeable.json | 2 +- build/contracts/Proxy.json | 2 +- build/contracts/ProxyAdmin.json | 2 +- build/contracts/Quotes.json | 4 +- build/contracts/QuotesV2.json | 23 +- .../contracts/ReentrancyGuardUpgradeable.json | 2 +- build/contracts/SignatureValidator.json | 7 +- build/contracts/SignatureValidatorMock.json | 4 +- build/contracts/StorageSlot.json | 2 +- .../TransparentUpgradeableProxy.json | 2 +- build/contracts/WalletMock.json | 4 +- config.json | 4 +- package-lock.json | 2 + 36 files changed, 560 insertions(+), 110 deletions(-) diff --git a/.openzeppelin/unknown-31.json b/.openzeppelin/unknown-31.json index b309e6b..a47616e 100644 --- a/.openzeppelin/unknown-31.json +++ b/.openzeppelin/unknown-31.json @@ -8753,6 +8753,374 @@ }, "namespaces": {} } + }, + "56b4d8730bb2da365dde94906809b9c6e3282992debae620b5238d4dcf7fe477": { + "address": "0x7fD406aebE278B77B1304Ed97c547a479aF834C8", + "txHash": "0xf0130b482e1960ef79d6de4d81e6a02307970603579a3380b34f4e120d2abe52", + "layout": { + "solcVersion": "0.8.18", + "storage": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint8", + "src": "../@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:63", + "retypedFrom": "bool" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "../@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:68" + }, + { + "contract": "ContextUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "../@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:40" + }, + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "../@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "contract": "OwnableUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)49_storage", + "src": "../@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "contract": "ReentrancyGuardUpgradeable", + "label": "_status", + "type": "t_uint256", + "src": "../@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" + }, + { + "contract": "ReentrancyGuardUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)49_storage", + "src": "../@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:88" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "bridge", + "type": "t_contract(Bridge)3652", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:92" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "balances", + "type": "t_mapping(t_address,t_uint256)", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:93" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "collateral", + "type": "t_mapping(t_address,t_uint256)", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:94" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "pegoutCollateral", + "type": "t_mapping(t_address,t_uint256)", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:95" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "liquidityProviders", + "type": "t_mapping(t_uint256,t_struct(LiquidityProvider)7500_storage)", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:96" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "callRegistry", + "type": "t_mapping(t_bytes32,t_struct(Registry)7482_storage)", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:97" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "resignationBlockNum", + "type": "t_mapping(t_address,t_uint256)", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:98" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "minCollateral", + "type": "t_uint256", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:100" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "minPegIn", + "type": "t_uint256", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:101" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "rewardP", + "type": "t_uint32", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:103" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "resignDelayInBlocks", + "type": "t_uint32", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:104" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "dust", + "type": "t_uint256", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:105" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "providerId", + "type": "t_uint256", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:106" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "btcBlockTime", + "type": "t_uint256", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:108" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "mainnet", + "type": "t_bool", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:109" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "processedQuotes", + "type": "t_mapping(t_bytes32,t_uint8)", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:111" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "registeredPegoutQuotes", + "type": "t_mapping(t_bytes32,t_struct(PegOutQuote)10638_storage)", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:112" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "pegoutRegistry", + "type": "t_mapping(t_bytes32,t_struct(PegoutRecord)7487_storage)", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:113" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "productFeePercentage", + "type": "t_uint256", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:115" + }, + { + "contract": "LiquidityBridgeContractV2", + "label": "daoFeeCollectorAddress", + "type": "t_address", + "src": "../project:/contracts/LiquidityBridgeContractV2.sol:116" + } + ], + "types": { + "t_contract(Bridge)3652": { + "label": "contract Bridge" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)" + }, + "t_address": { + "label": "address" + }, + "t_uint256": { + "label": "uint256" + }, + "t_mapping(t_uint256,t_struct(LiquidityProvider)7500_storage)": { + "label": "mapping(uint256 => struct LiquidityBridgeContractV2.LiquidityProvider)" + }, + "t_struct(LiquidityProvider)7500_storage": { + "label": "struct LiquidityBridgeContractV2.LiquidityProvider", + "members": [ + { + "label": "id", + "type": "t_uint256" + }, + { + "label": "provider", + "type": "t_address" + }, + { + "label": "name", + "type": "t_string_storage" + }, + { + "label": "apiBaseUrl", + "type": "t_string_storage" + }, + { + "label": "status", + "type": "t_bool" + }, + { + "label": "providerType", + "type": "t_string_storage" + } + ] + }, + "t_string_storage": { + "label": "string" + }, + "t_bool": { + "label": "bool" + }, + "t_mapping(t_bytes32,t_struct(Registry)7482_storage)": { + "label": "mapping(bytes32 => struct LiquidityBridgeContractV2.Registry)" + }, + "t_bytes32": { + "label": "bytes32" + }, + "t_struct(Registry)7482_storage": { + "label": "struct LiquidityBridgeContractV2.Registry", + "members": [ + { + "label": "timestamp", + "type": "t_uint32" + }, + { + "label": "success", + "type": "t_bool" + } + ] + }, + "t_uint32": { + "label": "uint32" + }, + "t_mapping(t_bytes32,t_uint8)": { + "label": "mapping(bytes32 => uint8)" + }, + "t_uint8": { + "label": "uint8" + }, + "t_mapping(t_bytes32,t_struct(PegOutQuote)10638_storage)": { + "label": "mapping(bytes32 => struct QuotesV2.PegOutQuote)" + }, + "t_struct(PegOutQuote)10638_storage": { + "label": "struct QuotesV2.PegOutQuote", + "members": [ + { + "label": "lbcAddress", + "type": "t_address" + }, + { + "label": "lpRskAddress", + "type": "t_address" + }, + { + "label": "btcRefundAddress", + "type": "t_bytes_storage" + }, + { + "label": "rskRefundAddress", + "type": "t_address" + }, + { + "label": "lpBtcAddress", + "type": "t_bytes_storage" + }, + { + "label": "callFee", + "type": "t_uint256" + }, + { + "label": "penaltyFee", + "type": "t_uint256" + }, + { + "label": "nonce", + "type": "t_int64" + }, + { + "label": "deposityAddress", + "type": "t_bytes_storage" + }, + { + "label": "value", + "type": "t_uint256" + }, + { + "label": "agreementTimestamp", + "type": "t_uint32" + }, + { + "label": "depositDateLimit", + "type": "t_uint32" + }, + { + "label": "depositConfirmations", + "type": "t_uint16" + }, + { + "label": "transferConfirmations", + "type": "t_uint16" + }, + { + "label": "transferTime", + "type": "t_uint32" + }, + { + "label": "expireDate", + "type": "t_uint32" + }, + { + "label": "expireBlock", + "type": "t_uint32" + }, + { + "label": "productFeeAmount", + "type": "t_uint256" + }, + { + "label": "gasFee", + "type": "t_uint256" + } + ] + }, + "t_bytes_storage": { + "label": "bytes" + }, + "t_int64": { + "label": "int64" + }, + "t_uint16": { + "label": "uint16" + }, + "t_mapping(t_bytes32,t_struct(PegoutRecord)7487_storage)": { + "label": "mapping(bytes32 => struct LiquidityBridgeContractV2.PegoutRecord)" + }, + "t_struct(PegoutRecord)7487_storage": { + "label": "struct LiquidityBridgeContractV2.PegoutRecord", + "members": [ + { + "label": "depositTimestamp", + "type": "t_uint256" + }, + { + "label": "completed", + "type": "t_bool" + } + ] + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]" + } + }, + "namespaces": {} + } } } } diff --git a/build/contracts/Address.json b/build/contracts/Address.json index 552fbe5..3366126 100644 --- a/build/contracts/Address.json +++ b/build/contracts/Address.json @@ -4371,7 +4371,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.114Z", + "updatedAt": "2024-05-22T08:24:03.620Z", "devdoc": { "details": "Collection of functions related to the address type", "kind": "dev", diff --git a/build/contracts/AddressUpgradeable.json b/build/contracts/AddressUpgradeable.json index d33aa77..d66801e 100644 --- a/build/contracts/AddressUpgradeable.json +++ b/build/contracts/AddressUpgradeable.json @@ -4371,7 +4371,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.099Z", + "updatedAt": "2024-05-22T08:24:03.606Z", "devdoc": { "details": "Collection of functions related to the address type", "kind": "dev", diff --git a/build/contracts/Bridge.json b/build/contracts/Bridge.json index 268beed..93a1919 100644 --- a/build/contracts/Bridge.json +++ b/build/contracts/Bridge.json @@ -1056,7 +1056,7 @@ "sourceMap": "", "deployedSourceMap": "", "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.18;\n\ninterface Bridge {\n\n receive() external payable;\n\n function getBtcBlockchainBestChainHeight() external view returns (int);\n\n function getStateForBtcReleaseClient() external view returns (bytes memory);\n\n function getStateForDebugging() external view returns (bytes memory);\n\n function getBtcBlockchainInitialBlockHeight() external view returns (int);\n\n function getBtcBlockchainBlockHashAtDepth(int256 depth) external view returns (bytes memory);\n\n function getBtcTxHashProcessedHeight(string calldata hash) external view returns (int64);\n\n function isBtcTxHashAlreadyProcessed(string calldata hash) external view returns (bool);\n\n function getFederationAddress() external view returns (string memory);\n\n function registerBtcTransaction(bytes calldata atx, int256 height, bytes calldata pmt) external;\n\n function addSignature(bytes calldata pubkey, bytes[] calldata signatures, bytes calldata txhash) external;\n\n function receiveHeaders(bytes[] calldata blocks) external;\n\n function receiveHeader(bytes calldata ablock) external returns (int256);\n\n function getFederationSize() external view returns (int256);\n\n function getFederationThreshold() external view returns (int256);\n\n function getFederatorPublicKey(int256 index) external view returns (bytes memory);\n\n function getFederatorPublicKeyOfType(int256 index, string calldata atype) external returns (bytes memory);\n\n function getFederationCreationTime() external view returns (int256);\n\n function getFederationCreationBlockNumber() external view returns (int256);\n\n function getRetiringFederationAddress() external view returns (string memory);\n\n function getRetiringFederationSize() external view returns (int256);\n\n function getRetiringFederationThreshold() external view returns (int256);\n\n function getRetiringFederatorPublicKey(int256 index) external view returns (bytes memory);\n\n function getRetiringFederatorPublicKeyOfType(int256 index, string calldata atype)\n external view returns (bytes memory);\n\n function getRetiringFederationCreationTime() external view returns (int256);\n\n function getRetiringFederationCreationBlockNumber() external view returns (int256);\n\n function createFederation() external returns (int256);\n\n function addFederatorPublicKey(bytes calldata key) external returns (int256);\n\n function addFederatorPublicKeyMultikey(bytes calldata btcKey, bytes calldata rskKey,\n bytes calldata mstKey) external returns (int256);\n\n function commitFederation(bytes calldata hash) external returns (int256);\n\n function rollbackFederation() external returns (int256);\n\n function getPendingFederationHash() external view returns (bytes memory);\n\n function getPendingFederationSize() external view returns (int256);\n\n function getPendingFederatorPublicKey(int256 index) external view returns (bytes memory);\n\n function getPendingFederatorPublicKeyOfType(int256 index, string calldata atype)\n external view returns (bytes memory);\n\n function getLockWhitelistSize() external view returns (int256);\n\n function getLockWhitelistAddress(int256 index) external view returns (string memory);\n\n function getLockWhitelistEntryByAddress(string calldata aaddress) external view returns (int256);\n\n function addLockWhitelistAddress(string calldata aaddress, int256 maxTransferValue) external returns (int256);\n\n function addOneOffLockWhitelistAddress(string calldata aaddress, int256 maxTransferValue)\n external returns (int256);\n\n function addUnlimitedLockWhitelistAddress(string calldata aaddress) external returns (int256);\n\n function removeLockWhitelistAddress(string calldata aaddress) external returns (int256);\n\n function setLockWhitelistDisableBlockDelay(int256 disableDelay) external returns (int256);\n\n function getFeePerKb() external view returns (int256);\n\n function voteFeePerKbChange(int256 feePerKb) external returns (int256);\n\n function updateCollections() external;\n\n function getMinimumLockTxValue() external view returns (int256);\n\n function getBtcTransactionConfirmations(bytes32 txHash, bytes32 blockHash,\n uint256 merkleBranchPath, bytes32[] calldata merkleBranchHashes) external view returns (int256);\n\n function getLockingCap() external view returns (int256);\n\n function increaseLockingCap(int256 newLockingCap) external returns (bool);\n\n function registerBtcCoinbaseTransaction(bytes calldata btcTxSerialized, bytes32 blockHash,\n bytes calldata pmtSerialized, bytes32 witnessMerkleRoot, bytes32 witnessReservedValue) external;\n\n function hasBtcBlockCoinbaseTransactionInformation(bytes32 blockHash) external returns (bool);\n\n function registerFastBridgeBtcTransaction(bytes calldata btcTxSerialized, uint256 height,\n bytes calldata pmtSerialized, bytes32 derivationArgumentsHash,\n bytes calldata userRefundBtcAddress, address payable liquidityBridgeContractAddress,\n bytes calldata liquidityProviderBtcAddress, bool shouldTransferToContract) external returns (int256);\n\n function getActiveFederationCreationBlockHeight() external view returns (uint256);\n\n function getActivePowpegRedeemScript() external view returns (bytes memory);\n\n function getBtcBlockchainBestBlockHeader() external view returns (bytes memory);\n\n function getBtcBlockchainBlockHeaderByHash(bytes32 btcBlockHash) external view returns (bytes memory);\n\n function getBtcBlockchainBlockHeaderByHeight(uint256 btcBlockHeight) external view returns (bytes memory);\n\n function getBtcBlockchainParentBlockHeaderByHash(bytes32 btcBlockHash) external view returns (bytes memory);\n}", - "sourcePath": "/Users/luischavez/iov/liquidity-bridge-contract/contracts/Bridge.sol", + "sourcePath": "/Users/guilhermesoares/Desktop/RskCodebase/liquidity-bridge-contract/contracts/Bridge.sol", "ast": { "absolutePath": "project:/contracts/Bridge.sol", "exportedSymbols": { @@ -5783,7 +5783,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.122Z", + "updatedAt": "2024-05-22T08:24:03.631Z", "devdoc": { "kind": "dev", "methods": {}, diff --git a/build/contracts/BridgeMock.json b/build/contracts/BridgeMock.json index 1b07bdc..763ccdb 100644 --- a/build/contracts/BridgeMock.json +++ b/build/contracts/BridgeMock.json @@ -13918,7 +13918,7 @@ "sourceMap": "82:8510:20:-:0;;;;;;;;;;;;;;;;;;;", "deployedSourceMap": "82:8510:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7050:99;;;;;;;;;;-1:-1:-1;7050:99:20;;;;;:::i;:::-;-1:-1:-1;7122:6:20;;7050:99;;;;342:25:32;;;330:2;315:18;7050:99:20;;;;;;;;4202:105;;;;;;;;;;-1:-1:-1;4280:6:20;4202:105;;7154:52;;;;;;;;;;;;;2104:108;;;;;;;;;;-1:-1:-1;2171:12:20;2104:108;;;;;;;:::i;1053:127::-;;;;;;:::i;:::-;1129:7;:32;;;;;;;;;;1164:9;1129:44;;1053:127;5229:104;;;;;;;;;;-1:-1:-1;5229:104:20;;;;;:::i;:::-;5306:6;5229:104;;;;;1424:455;;;;;;;;;;;;;:::i;2582:110::-;;;;;;;;;;-1:-1:-1;2582:110:20;;;;;:::i;:::-;;;2843:14:32;;2836:22;2818:41;;2806:2;2791:18;2582:110:20;2678:187:32;7879:125:20;;;;;;;;;;-1:-1:-1;7879:125:20;;;;;:::i;7211:95::-;;;;;;;;;;-1:-1:-1;7302:1:20;7211:95;;2867:110;;;;;;;;;;-1:-1:-1;2867:110:20;;;;;:::i;:::-;;;;;;;5064:160;;;;;;;;;;-1:-1:-1;5064:160:20;;;;;:::i;:::-;5197:6;5064:160;;;;;;;;;4312:132;;;;;;;;;;-1:-1:-1;4312:132:20;;;;;:::i;:::-;-1:-1:-1;4395:12:20;;4312:132;3989:103;;;;;;;;;;-1:-1:-1;4081:9:20;;;;;;;;;-1:-1:-1;4081:9:20;;3989:103;;6293:130;;;;;;;;;;-1:-1:-1;6293:130:20;;;;;:::i;:::-;6388:6;6293:130;;;;;;3623:146;;;;;;;;;;-1:-1:-1;3623:146:20;;;;;:::i;:::-;3728:12;3623:146;;;;;;1186:104;;;;;;;;;;-1:-1:-1;1186:104:20;;;;;:::i;:::-;;:::i;7311:160::-;;;;;;;;;;-1:-1:-1;7311:160:20;;;;;:::i;:::-;7444:6;7311:160;;;;;;;;2697:137;;;;;;;;;;;;;:::i;313:582::-;;;;;;;;;;-1:-1:-1;313:582:20;;;;;:::i;:::-;;:::i;8269:170::-;;;;;;;;;;-1:-1:-1;8269:170:20;;;;;:::i;:::-;;:::i;6050:104::-;;;;;;;;;;-1:-1:-1;6050:104:20;;;;;:::i;:::-;-1:-1:-1;6143:9:20;;;;;;;;;-1:-1:-1;6143:9:20;;;6050:104;2463:114;;;;;;;;;;-1:-1:-1;2463:114:20;;;;;:::i;:::-;;;9884:1:32;9873:21;;;;9855:40;;9843:2;9828:18;2463:114:20;9713:188:32;901:146:20;;;;;;;;;;-1:-1:-1;901:146:20;;;;;:::i;:::-;;:::i;7665:209::-;;;;;;;;;;-1:-1:-1;7665:209:20;;;;;:::i;:::-;;;;;;;;;1296:122;;;;;;;;;;-1:-1:-1;1296:122:20;;;;;:::i;:::-;;:::i;3115:72::-;;;;;;;;;;-1:-1:-1;3115:72:20;;;;;:::i;:::-;;;;2982:128;;;;;;;;;;-1:-1:-1;2982:128:20;;;;;:::i;:::-;;;;;;;;1424:455;1486:12;1510:18;:108;;;;;;;;;;;;;;;;;;;1628:18;:110;;;;;;;;;;;;;;;;;;;1748:18;:70;;;;;;;;;;;;;-1:-1:-1;;;1748:70:20;;;;;1852:5;1859;1866;1835:37;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1828:44;;;;;1424:455;:::o;1186:104::-;1259:15;;;;:7;:15;;;;;:24;1277:6;1259:15;:24;:::i;:::-;;1186:104;;:::o;2697:137::-;2764:13;2788:44;;;;;;;;;;;;;;;;;;;2697:137;:::o;313:582::-;614:6;649:32;;;;;;;;;;;;;691:36;;;;756:54;;614:6;;-1:-1:-1;;;;;756:35:20;;;649:32;;614:6;756:54;614:6;756:54;649:32;756:35;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;737:73;;;828:7;820:40;;;;-1:-1:-1;;;820:40:20;;16610:2:32;820:40:20;;;16592:21:32;16649:2;16629:18;;;16622:30;-1:-1:-1;;;16668:18:32;;;16661:50;16728:18;;820:40:20;;;;;;;;-1:-1:-1;881:6:20;313:582;-1:-1:-1;;;;;;;;;313:582:20:o;8269:170::-;8408:24;;;;:13;:24;;;;;8401:31;;8377:12;;8408:24;8401:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8269:170;;;:::o;901:146::-;1025:15;;;;:7;:15;;;;;1018:22;;994:12;;1025:15;1018:22;;;:::i;1296:122::-;1378:24;;;;:13;:24;;;;;:33;1405:6;1378:24;:33;:::i;14:179:32:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;-1:-1:-1;164:23:32;;14:179;-1:-1:-1;14:179:32:o;378:250::-;463:1;473:113;487:6;484:1;481:13;473:113;;;563:11;;;557:18;544:11;;;537:39;509:2;502:10;473:113;;;-1:-1:-1;;620:1:32;602:16;;595:27;378:250::o;633:270::-;674:3;712:5;706:12;739:6;734:3;727:19;755:76;824:6;817:4;812:3;808:14;801:4;794:5;790:16;755:76;:::i;:::-;885:2;864:15;-1:-1:-1;;860:29:32;851:39;;;;892:4;847:50;;633:270;-1:-1:-1;;633:270:32:o;908:217::-;1055:2;1044:9;1037:21;1018:4;1075:44;1115:2;1104:9;1100:18;1092:6;1075:44;:::i;:::-;1067:52;908:217;-1:-1:-1;;;908:217:32:o;1315:347::-;1366:8;1376:6;1430:3;1423:4;1415:6;1411:17;1407:27;1397:55;;1448:1;1445;1438:12;1397:55;-1:-1:-1;1471:20:32;;-1:-1:-1;;;;;1503:30:32;;1500:50;;;1546:1;1543;1536:12;1500:50;1583:4;1575:6;1571:17;1559:29;;1635:3;1628:4;1619:6;1611;1607:19;1603:30;1600:39;1597:59;;;1652:1;1649;1642:12;1597:59;1315:347;;;;;:::o;1667:409::-;1737:6;1745;1798:2;1786:9;1777:7;1773:23;1769:32;1766:52;;;1814:1;1811;1804:12;1766:52;1841:23;;-1:-1:-1;;;;;1876:30:32;;1873:50;;;1919:1;1916;1909:12;1873:50;1958:58;2008:7;1999:6;1988:9;1984:22;1958:58;:::i;:::-;2035:8;;1932:84;;-1:-1:-1;1667:409:32;-1:-1:-1;;;;1667:409:32:o;2870:784::-;2968:6;2976;2984;2992;3000;3053:2;3041:9;3032:7;3028:23;3024:32;3021:52;;;3069:1;3066;3059:12;3021:52;3096:23;;-1:-1:-1;;;;;3168:14:32;;;3165:34;;;3195:1;3192;3185:12;3165:34;3234:58;3284:7;3275:6;3264:9;3260:22;3234:58;:::i;:::-;3311:8;;-1:-1:-1;3208:84:32;-1:-1:-1;3393:2:32;3378:18;;3365:32;;-1:-1:-1;3450:2:32;3435:18;;3422:32;;-1:-1:-1;3466:16:32;;;3463:36;;;3495:1;3492;3485:12;3463:36;;3534:60;3586:7;3575:8;3564:9;3560:24;3534:60;:::i;:::-;2870:784;;;;-1:-1:-1;2870:784:32;;-1:-1:-1;3613:8:32;;3508:86;2870:784;-1:-1:-1;;;2870:784:32:o;3659:1004::-;3769:6;3777;3785;3793;3801;3809;3862:2;3850:9;3841:7;3837:23;3833:32;3830:52;;;3878:1;3875;3868:12;3830:52;3905:23;;-1:-1:-1;;;;;3977:14:32;;;3974:34;;;4004:1;4001;3994:12;3974:34;4043:58;4093:7;4084:6;4073:9;4069:22;4043:58;:::i;:::-;4120:8;;-1:-1:-1;4017:84:32;-1:-1:-1;4208:2:32;4193:18;;4180:32;;-1:-1:-1;4224:16:32;;;4221:36;;;4253:1;4250;4243:12;4221:36;4292:60;4344:7;4333:8;4322:9;4318:24;4292:60;:::i;:::-;4371:8;;-1:-1:-1;4266:86:32;-1:-1:-1;4459:2:32;4444:18;;4431:32;;-1:-1:-1;4475:16:32;;;4472:36;;;4504:1;4501;4494:12;4472:36;;4543:60;4595:7;4584:8;4573:9;4569:24;4543:60;:::i;:::-;3659:1004;;;;-1:-1:-1;3659:1004:32;;-1:-1:-1;3659:1004:32;;4622:8;;3659:1004;-1:-1:-1;;;3659:1004:32:o;4892:477::-;4971:6;4979;4987;5040:2;5028:9;5019:7;5015:23;5011:32;5008:52;;;5056:1;5053;5046:12;5008:52;5083:23;;-1:-1:-1;;;;;5118:30:32;;5115:50;;;5161:1;5158;5151:12;5115:50;5200:58;5250:7;5241:6;5230:9;5226:22;5200:58;:::i;:::-;5277:8;;5174:84;;-1:-1:-1;5359:2:32;5344:18;;;;5331:32;;4892:477;-1:-1:-1;;;;4892:477:32:o;5374:::-;5453:6;5461;5469;5522:2;5510:9;5501:7;5497:23;5493:32;5490:52;;;5538:1;5535;5528:12;5490:52;5561:23;;;-1:-1:-1;5635:2:32;5620:18;;5607:32;-1:-1:-1;;;;;5651:30:32;;5648:50;;;5694:1;5691;5684:12;5648:50;5733:58;5783:7;5774:6;5763:9;5759:22;5733:58;:::i;:::-;5374:477;;5810:8;;-1:-1:-1;5707:84:32;;-1:-1:-1;;;;5374:477:32:o;5856:127::-;5917:10;5912:3;5908:20;5905:1;5898:31;5948:4;5945:1;5938:15;5972:4;5969:1;5962:15;5988:718;6030:5;6083:3;6076:4;6068:6;6064:17;6060:27;6050:55;;6101:1;6098;6091:12;6050:55;6124:20;;-1:-1:-1;;;;;6193:10:32;;;6190:36;;;6206:18;;:::i;:::-;6281:2;6275:9;6249:2;6335:13;;-1:-1:-1;;6331:22:32;;;6355:2;6327:31;6323:40;6311:53;;;6379:18;;;6399:22;;;6376:46;6373:72;;;6425:18;;:::i;:::-;6465:10;6461:2;6454:22;6500:2;6492:6;6485:18;6546:3;6539:4;6534:2;6526:6;6522:15;6518:26;6515:35;6512:55;;;6563:1;6560;6553:12;6512:55;6627:2;6620:4;6612:6;6608:17;6601:4;6593:6;6589:17;6576:54;6674:1;6667:4;6662:2;6654:6;6650:15;6646:26;6639:37;6694:6;6685:15;;;;;;5988:718;;;;:::o;6711:388::-;6788:6;6796;6849:2;6837:9;6828:7;6824:23;6820:32;6817:52;;;6865:1;6862;6855:12;6817:52;6888:23;;;-1:-1:-1;6962:2:32;6947:18;;6934:32;-1:-1:-1;;;;;6978:30:32;;6975:50;;;7021:1;7018;7011:12;6975:50;7044:49;7085:7;7076:6;7065:9;7061:22;7044:49;:::i;:::-;7034:59;;;6711:388;;;;;:::o;7104:367::-;7167:8;7177:6;7231:3;7224:4;7216:6;7212:17;7208:27;7198:55;;7249:1;7246;7239:12;7198:55;-1:-1:-1;7272:20:32;;-1:-1:-1;;;;;7304:30:32;;7301:50;;;7347:1;7344;7337:12;7301:50;7384:4;7376:6;7372:17;7360:29;;7444:3;7437:4;7427:6;7424:1;7420:14;7412:6;7408:27;7404:38;7401:47;7398:67;;;7461:1;7458;7451:12;7476:642;7589:6;7597;7605;7613;7621;7674:3;7662:9;7653:7;7649:23;7645:33;7642:53;;;7691:1;7688;7681:12;7642:53;7714:23;;;-1:-1:-1;7784:2:32;7769:18;;7756:32;;-1:-1:-1;7835:2:32;7820:18;;7807:32;;-1:-1:-1;7890:2:32;7875:18;;7862:32;-1:-1:-1;;;;;7906:30:32;;7903:50;;;7949:1;7946;7939:12;7903:50;7988:70;8050:7;8041:6;8030:9;8026:22;7988:70;:::i;8123:181::-;8199:20;;-1:-1:-1;;;;;8248:31:32;;8238:42;;8228:70;;8294:1;8291;8284:12;8228:70;8123:181;;;:::o;8309:160::-;8374:20;;8430:13;;8423:21;8413:32;;8403:60;;8459:1;8456;8449:12;8474:1234;8637:6;8645;8653;8661;8669;8677;8685;8693;8746:3;8734:9;8725:7;8721:23;8717:33;8714:53;;;8763:1;8760;8753:12;8714:53;8790:23;;-1:-1:-1;;;;;8862:14:32;;;8859:34;;;8889:1;8886;8879:12;8859:34;8912:49;8953:7;8944:6;8933:9;8929:22;8912:49;:::i;:::-;8902:59;;9008:2;8997:9;8993:18;8980:32;8970:42;;9065:2;9054:9;9050:18;9037:32;9021:48;;9094:2;9084:8;9081:16;9078:36;;;9110:1;9107;9100:12;9078:36;9133:51;9176:7;9165:8;9154:9;9150:24;9133:51;:::i;:::-;9123:61;;9231:2;9220:9;9216:18;9203:32;9193:42;;9288:3;9277:9;9273:19;9260:33;9244:49;;9318:2;9308:8;9305:16;9302:36;;;9334:1;9331;9324:12;9302:36;9357:51;9400:7;9389:8;9378:9;9374:24;9357:51;:::i;:::-;9347:61;;9427:47;9469:3;9458:9;9454:19;9427:47;:::i;:::-;9417:57;;9527:3;9516:9;9512:19;9499:33;9483:49;;9557:2;9547:8;9544:16;9541:36;;;9573:1;9570;9563:12;9541:36;;9596:51;9639:7;9628:8;9617:9;9613:24;9596:51;:::i;:::-;9586:61;;;9666:36;9697:3;9686:9;9682:19;9666:36;:::i;:::-;9656:46;;8474:1234;;;;;;;;;;;:::o;10091:923::-;10208:6;10216;10224;10232;10240;10248;10256;10309:3;10297:9;10288:7;10284:23;10280:33;10277:53;;;10326:1;10323;10316:12;10277:53;10353:23;;-1:-1:-1;;;;;10425:14:32;;;10422:34;;;10452:1;10449;10442:12;10422:34;10491:58;10541:7;10532:6;10521:9;10517:22;10491:58;:::i;:::-;10568:8;;-1:-1:-1;10465:84:32;-1:-1:-1;10650:2:32;10635:18;;10622:32;;-1:-1:-1;10707:2:32;10692:18;;10679:32;;-1:-1:-1;10723:16:32;;;10720:36;;;10752:1;10749;10742:12;10720:36;;10791:60;10843:7;10832:8;10821:9;10817:24;10791:60;:::i;:::-;10091:923;;;;-1:-1:-1;10091:923:32;;10870:8;;10765:86;10952:2;10937:18;;10924:32;;11003:3;10988:19;10975:33;;-1:-1:-1;10091:923:32;-1:-1:-1;;;;10091:923:32:o;11412:448::-;11509:6;11517;11570:2;11558:9;11549:7;11545:23;11541:32;11538:52;;;11586:1;11583;11576:12;11538:52;11613:23;;-1:-1:-1;;;;;11648:30:32;;11645:50;;;11691:1;11688;11681:12;11645:50;11730:70;11792:7;11783:6;11772:9;11768:22;11730:70;:::i;11865:1043::-;12002:6;12010;12018;12026;12034;12042;12095:2;12083:9;12074:7;12070:23;12066:32;12063:52;;;12111:1;12108;12101:12;12063:52;12138:23;;-1:-1:-1;;;;;12210:14:32;;;12207:34;;;12237:1;12234;12227:12;12207:34;12276:58;12326:7;12317:6;12306:9;12302:22;12276:58;:::i;:::-;12353:8;;-1:-1:-1;12250:84:32;-1:-1:-1;12441:2:32;12426:18;;12413:32;;-1:-1:-1;12457:16:32;;;12454:36;;;12486:1;12483;12476:12;12454:36;12525:72;12589:7;12578:8;12567:9;12563:24;12525:72;:::i;12913:697::-;13134:3;13172:6;13166:13;13188:66;13247:6;13242:3;13235:4;13227:6;13223:17;13188:66;:::i;:::-;13317:13;;13276:16;;;;13339:70;13317:13;13276:16;13386:4;13374:17;;13339:70;:::i;:::-;13476:13;;13431:20;;;13498:70;13476:13;13431:20;13545:4;13533:17;;13498:70;:::i;:::-;13584:20;;12913:697;-1:-1:-1;;;;;12913:697:32:o;13615:380::-;13694:1;13690:12;;;;13737;;;13758:61;;13812:4;13804:6;13800:17;13790:27;;13758:61;13865:2;13857:6;13854:14;13834:18;13831:38;13828:161;;13911:10;13906:3;13902:20;13899:1;13892:31;13946:4;13943:1;13936:15;13974:4;13971:1;13964:15;13828:161;;13615:380;;;:::o;14125:544::-;14226:2;14221:3;14218:11;14215:448;;;14262:1;14287:5;14283:2;14276:17;14332:4;14328:2;14318:19;14402:2;14390:10;14386:19;14383:1;14379:27;14373:4;14369:38;14438:4;14426:10;14423:20;14420:47;;;-1:-1:-1;14461:4:32;14420:47;14516:2;14511:3;14507:12;14504:1;14500:20;14494:4;14490:31;14480:41;;14571:82;14589:2;14582:5;14579:13;14571:82;;;14634:17;;;14615:1;14604:13;14571:82;;14845:1348;14963:10;;-1:-1:-1;;;;;14985:30:32;;14982:56;;;15018:18;;:::i;:::-;15047:96;15136:6;15096:38;15128:4;15122:11;15096:38;:::i;:::-;15090:4;15047:96;:::i;:::-;15198:4;;15262:2;15251:14;;15279:1;15274:662;;;;15980:1;15997:6;15994:89;;;-1:-1:-1;16049:19:32;;;16043:26;15994:89;-1:-1:-1;;14802:1:32;14798:11;;;14794:24;14790:29;14780:40;14826:1;14822:11;;;14777:57;16096:81;;15244:943;;15274:662;14072:1;14065:14;;;14109:4;14096:18;;-1:-1:-1;;15310:20:32;;;15427:236;15441:7;15438:1;15435:14;15427:236;;;15530:19;;;15524:26;15509:42;;15622:27;;;;15590:1;15578:14;;;;15457:19;;15427:236;;;15431:3;15691:6;15682:7;15679:19;15676:201;;;15752:19;;;15746:26;-1:-1:-1;;15835:1:32;15831:14;;;15847:3;15827:24;15823:37;15819:42;15804:58;15789:74;;15676:201;-1:-1:-1;;;;;15923:1:32;15907:14;;;15903:22;15890:36;;-1:-1:-1;14845:1348:32:o", "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.18;\n\nimport \"./Bridge.sol\";\n\ncontract BridgeMock is Bridge {\n\n mapping(bytes32 => uint256) private amounts;\n mapping(uint256 => bytes) private headers;\n mapping (bytes32 => bytes) private headersByHash;\n\n receive() external payable override {}\n function registerFastBridgeBtcTransaction(\n bytes memory , \n uint256 , \n bytes memory, \n bytes32 derivationArgumentsHash, \n bytes memory, \n address payable liquidityBridgeContractAddress,\n bytes memory , \n bool \n ) external override returns (int256) {\n uint256 amount = amounts[derivationArgumentsHash];\n amounts[derivationArgumentsHash] = 0;\n (bool success, ) = liquidityBridgeContractAddress.call{value: amount}(\"\");\n require(success, \"Sending funds failed\");\n return int(amount);\n }\n\n function getBtcBlockchainBlockHeaderByHeight(uint256 height) external view override returns (bytes memory) {\n return headers[height];\n }\n\n function setPegin(bytes32 derivationArgumentsHash) public payable {\n amounts[derivationArgumentsHash] = msg.value;\n }\n\n function setHeader(uint256 height, bytes memory header) public {\n headers[height] = header;\n }\n\n function setHeaderByHash(bytes32 blockHash, bytes memory header) public {\n headersByHash[blockHash] = header;\n }\n\n function getActivePowpegRedeemScript() external pure returns (bytes memory) {\n bytes memory part1 = hex\"522102cd53fc53a07f211641a677d250f6de99caf620e8e77071e811a28b3bcddf0be1210362634ab5\";\n bytes memory part2 = hex\"7dae9cb373a5d536e66a8c4f67468bbcfb063809bab643072d78a1242103c5946b3fbae03a654237da86\";\n bytes memory part3 = hex\"3c9ed534e0878657175b132b8ca630f245df04db53ae\";\n return abi.encodePacked(part1, part2, part3);\n }\n\n function getBtcBlockchainBestChainHeight ( ) external pure override returns (int) {return 0;}\n function getStateForBtcReleaseClient ( ) external pure override returns (bytes memory) {bytes memory b; return b;}\n function getStateForDebugging ( ) external pure override returns (bytes memory) {bytes memory b; return b;}\n function getBtcBlockchainInitialBlockHeight ( ) external pure override returns (int) {return int(0);}\n function getBtcBlockchainBlockHashAtDepth ( int256 ) external pure override returns\n (bytes memory) {bytes memory b; return b;}\n function getBtcTxHashProcessedHeight ( string calldata ) external pure override returns (int64) {return int64(0);}\n function isBtcTxHashAlreadyProcessed ( string calldata ) external pure override returns (bool) {return false;}\n function getFederationAddress ( ) external pure override returns (string memory)\n {return \"2N5muMepJizJE1gR7FbHJU6CD18V3BpNF9p\";} // regtest genesis fed addr\n function registerBtcTransaction ( bytes calldata atx, int256 height, bytes calldata pmt ) external override {}\n function addSignature ( bytes calldata pubkey, bytes[] calldata signatures, bytes calldata txhash )\n external override {}\n function receiveHeaders ( bytes[] calldata blocks ) external override {}\n function receiveHeader ( bytes calldata ) external pure override returns (int256) {return int256(0);}\n function getFederationSize ( ) external pure override returns (int256) {return int256(0);}\n function getFederationThreshold ( ) external pure override returns (int256) {return int256(0);}\n function getFederatorPublicKey ( int256 ) external pure override returns (bytes memory)\n {bytes memory b; return b;}\n function getFederatorPublicKeyOfType ( int256, string calldata ) external pure\n override returns (bytes memory) {bytes memory b; return b;}\n function getFederationCreationTime ( ) external pure override returns (int256) {return int256(0);}\n function getFederationCreationBlockNumber ( ) external pure override returns (int256) {return int256(0);}\n function getRetiringFederationAddress ( ) external pure override returns (string memory) {return \"\";}\n function getRetiringFederationSize ( ) external override pure returns (int256) {return int256(0);}\n function getRetiringFederationThreshold ( ) external override pure returns (int256) {return int256(0);}\n function getRetiringFederatorPublicKey ( int256 ) external override pure returns (bytes memory)\n {bytes memory b; return b;}\n function getRetiringFederatorPublicKeyOfType ( int256,string calldata ) external pure override\n returns (bytes memory) {bytes memory b; return b;}\n function getRetiringFederationCreationTime ( ) external pure override returns (int256) {return int256(0);}\n function getRetiringFederationCreationBlockNumber ( ) external override pure returns\n (int256) {return int256(0);}\n function createFederation ( ) external pure override returns (int256) {return int256(0);}\n function addFederatorPublicKey ( bytes calldata ) external pure override returns (int256)\n {return int256(0);}\n function addFederatorPublicKeyMultikey ( bytes calldata , bytes calldata , bytes calldata )\n external pure override returns (int256) {return int256(0);}\n function commitFederation ( bytes calldata ) external pure override returns (int256) {return int256(0);}\n function rollbackFederation ( ) external pure override returns (int256) {return int256(0);}\n function getPendingFederationHash ( ) external pure override returns (bytes memory) {bytes memory b; return b;}\n function getPendingFederationSize ( ) external pure override returns (int256) {return int256(0);}\n function getPendingFederatorPublicKey ( int256 ) external pure override returns (bytes memory)\n {bytes memory b; return b;}\n function getPendingFederatorPublicKeyOfType ( int256 , string calldata ) external pure override\n returns (bytes memory) {bytes memory b; return b;}\n function getLockWhitelistSize ( ) external pure override returns (int256) {return int256(0);}\n function getLockWhitelistAddress ( int256 ) external pure override returns (string memory) {return \"\";}\n function getLockWhitelistEntryByAddress ( string calldata ) external pure override returns (int256)\n {return int256(0);}\n function addLockWhitelistAddress ( string calldata , int256 ) external pure override returns (int256)\n {return int256(0);}\n function addOneOffLockWhitelistAddress ( string calldata , int256 ) external pure override returns\n (int256) {return int256(0);}\n function addUnlimitedLockWhitelistAddress ( string calldata ) external pure override returns (int256)\n {return int256(0);}\n function removeLockWhitelistAddress ( string calldata ) external pure override returns (int256)\n {return int256(0);}\n function setLockWhitelistDisableBlockDelay ( int256 ) external pure override returns (int256)\n {return int256(0);}\n function getFeePerKb ( ) external pure override returns (int256) {return int256(0);}\n function voteFeePerKbChange ( int256 ) external pure override returns (int256) {return int256(0);}\n function updateCollections ( ) external override {}\n function getMinimumLockTxValue ( ) external pure override returns (int256) {return int256(2);}\n function getBtcTransactionConfirmations ( bytes32 , bytes32, uint256 , bytes32[] calldata )\n external pure override returns (int256) {return int256(0);}\n function getLockingCap ( ) external pure override returns (int256) {return int256(0);}\n function increaseLockingCap ( int256 ) external pure override returns (bool) {return false;}\n function registerBtcCoinbaseTransaction ( bytes calldata btcTxSerialized, bytes32 blockHash, bytes\n calldata pmtSerialized, bytes32 witnessMerkleRoot, bytes32 witnessReservedValue ) external override {}\n function hasBtcBlockCoinbaseTransactionInformation ( bytes32 ) external pure override returns\n (bool) {return false;}\n function getActiveFederationCreationBlockHeight ( ) external pure override returns (uint256)\n {return uint256(0);}\n function getBtcBlockchainBestBlockHeader ( ) external pure override returns (bytes memory)\n {bytes memory b; return b;}\n\n function getBtcBlockchainBlockHeaderByHash(\n bytes32 blockHash\n ) external view override returns (bytes memory) {\n return headersByHash[blockHash];\n }\n\n function getBtcBlockchainParentBlockHeaderByHash ( bytes32) external pure override returns\n (bytes memory) {bytes memory b; return b;}\n \n}\n", - "sourcePath": "/Users/luischavez/iov/liquidity-bridge-contract/contracts/BridgeMock.sol", + "sourcePath": "/Users/guilhermesoares/Desktop/RskCodebase/liquidity-bridge-contract/contracts/BridgeMock.sol", "ast": { "absolutePath": "project:/contracts/BridgeMock.sol", "exportedSymbols": { @@ -23815,7 +23815,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:09.296Z", + "updatedAt": "2024-05-22T08:30:02.492Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/BtcUtils.json b/build/contracts/BtcUtils.json index 610dd6f..48e5262 100644 --- a/build/contracts/BtcUtils.json +++ b/build/contracts/BtcUtils.json @@ -40,7 +40,8 @@ } ], "stateMutability": "pure", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -64,7 +65,8 @@ } ], "stateMutability": "pure", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -83,7 +85,8 @@ } ], "stateMutability": "pure", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -102,7 +105,8 @@ } ], "stateMutability": "pure", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -126,7 +130,8 @@ } ], "stateMutability": "pure", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -150,7 +155,8 @@ } ], "stateMutability": "pure", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -169,7 +175,8 @@ } ], "stateMutability": "pure", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -188,7 +195,8 @@ } ], "stateMutability": "pure", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -207,7 +215,8 @@ } ], "stateMutability": "pure", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -236,7 +245,8 @@ } ], "stateMutability": "pure", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -260,7 +270,8 @@ } ], "stateMutability": "pure", - "type": "function" + "type": "function", + "constant": true } ], "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"header\",\"type\":\"bytes\"}],\"name\":\"getBtcBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"rawTx\",\"type\":\"bytes\"}],\"name\":\"getOutputs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"pkScript\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"scriptSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSize\",\"type\":\"uint256\"}],\"internalType\":\"struct BtcUtils.TxRawOutput[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"script\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"mainnet\",\"type\":\"bool\"}],\"name\":\"getP2SHAddressFromScript\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"btcTx\",\"type\":\"bytes\"}],\"name\":\"hashBtcTx\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"pkScript\",\"type\":\"bytes\"}],\"name\":\"isP2PKHOutput\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"pkScript\",\"type\":\"bytes\"}],\"name\":\"isP2SHOutput\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"outputScript\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"mainnet\",\"type\":\"bool\"}],\"name\":\"outputScriptToAddress\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"outputScript\",\"type\":\"bytes\"}],\"name\":\"parseNullDataScript\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"outputScript\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"mainnet\",\"type\":\"bool\"}],\"name\":\"parsePayToPubKeyHash\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"outputScript\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"mainnet\",\"type\":\"bool\"}],\"name\":\"parsePayToScriptHash\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"p2sh\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"script\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"mainnet\",\"type\":\"bool\"}],\"name\":\"validateP2SHAdress\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getBtcBlockTimestamp(bytes)\":{\"details\":\"Gets the timestamp of a Bitcoin block header\",\"params\":{\"header\":\"The block header\"},\"returns\":{\"_0\":\"The timestamp of the block header\"}},\"getOutputs(bytes)\":{\"params\":{\"rawTx\":\"the raw transaction\"},\"returns\":{\"_0\":\"An array of `TxRawOutput` with the outputs of the transaction\"}},\"getP2SHAddressFromScript(bytes,bool)\":{\"params\":{\"mainnet\":\"flag to specify if the output should be a mainnet address\",\"script\":\"the script to generate the address from\"},\"returns\":{\"_0\":\"The address generate from the script\"}},\"hashBtcTx(bytes)\":{\"params\":{\"btcTx\":\"the transaction to hash\"},\"returns\":{\"_0\":\"The transaction id \"}},\"isP2PKHOutput(bytes)\":{\"params\":{\"pkScript\":\"the fragment of the raw transaction containing the raw output script\"},\"returns\":{\"_0\":\"Whether the script has a pay-to-public-key-hash output structure or not\"}},\"isP2SHOutput(bytes)\":{\"params\":{\"pkScript\":\"the fragment of the raw transaction containing the raw output script\"},\"returns\":{\"_0\":\"Whether the script has a pay-to-script-hash output structure or not\"}},\"outputScriptToAddress(bytes,bool)\":{\"params\":{\"mainnet\":\"if the address to generate is from mainnet or testnet\",\"outputScript\":\"the fragment of the raw transaction containing the raw output script\"},\"returns\":{\"_0\":\"The address bytes regarless of the output script type\"}},\"parseNullDataScript(bytes)\":{\"params\":{\"outputScript\":\"the fragment of the raw transaction containing the raw output script \"},\"returns\":{\"_0\":\"The content embedded inside the script\"}},\"parsePayToPubKeyHash(bytes,bool)\":{\"params\":{\"mainnet\":\"if the address to generate is from mainnet or testnet \",\"outputScript\":\"the fragment of the raw transaction containing the raw output script\"},\"returns\":{\"_0\":\"The address generated using the receiver's public key hash\"}},\"parsePayToScriptHash(bytes,bool)\":{\"params\":{\"mainnet\":\"if the address to generate is from mainnet or testnet\",\"outputScript\":\"the fragment of the raw transaction containing the raw output script\"},\"returns\":{\"_0\":\"The address generated using the script hash\"}},\"validateP2SHAdress(bytes,bytes,bool)\":{\"params\":{\"mainnet\":\"flag to specify if its a mainnet address\",\"p2sh\":\"the pay-to-script-hash address\",\"script\":\"the script to check\"},\"returns\":{\"_0\":\"Whether the address belongs to the script or not\"}}},\"title\":\"BtcUtils\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getOutputs(bytes)\":{\"notice\":\"Parse a raw transaction to get an array of its outputs in a structured representation\"},\"getP2SHAddressFromScript(bytes,bool)\":{\"notice\":\"Generate a pay-to-script-hash address from a script, the resulting byte array already contains the 4 checksum bytes at the end of it\"},\"hashBtcTx(bytes)\":{\"notice\":\"Hash a bitcoin raw transaction to get its id (reversed double sha256)\"},\"isP2PKHOutput(bytes)\":{\"notice\":\"Check if a raw output script is a pay-to-public-key-hash output\"},\"isP2SHOutput(bytes)\":{\"notice\":\"Check if a raw output script is a pay-to-script-hash output\"},\"outputScriptToAddress(bytes,bool)\":{\"notice\":\"Parse a raw output script whose type is not known by the consumer. The function will return the corresponding address if the type of the script is supported or an error if not. For the addresses that are encoded with base58check the checksum bytes are not included in the resulting byte array\"},\"parseNullDataScript(bytes)\":{\"notice\":\"Parse a raw null-data output script to get its content\"},\"parsePayToPubKeyHash(bytes,bool)\":{\"notice\":\"Parse a raw pay-to-public-key-hash output script to get the corresponding address, the resulting byte array doesn't include the checksum bytes of the base58check encoding at the end\"},\"parsePayToScriptHash(bytes,bool)\":{\"notice\":\"Parse a raw pay-to-script-hash output script to get the corresponding address, the resulting byte array doesn't include the checksum bytes of the base58check encoding at the end\"},\"validateP2SHAdress(bytes,bytes,bool)\":{\"notice\":\"Check if a pay-to-script-hash address belogs to a specific script, expects the address bytes to include the 4 checksum bytes at the end\"}},\"notice\":\"This library contains functionality to make easier to work with Bitcoin transactions in Solidity.This library is based in this document: https://developer.bitcoin.org/reference/transactions.html#raw-transaction-format\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@rsksmart/btc-transaction-solidity-helper/contracts/BtcUtils.sol\":\"BtcUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@rsksmart/btc-transaction-solidity-helper/contracts/BtcUtils.sol\":{\"keccak256\":\"0x0dc781715e8c751a32cc8a6cb062c0aa315dac2d14f9e00cf93d3aec0ae295e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc434f8cc19e5ddf589ec5bab31427e9b0a0eb990e00a217fdfeca7223cf4f9\",\"dweb:/ipfs/QmUpkMKeG7ncvyxpye4Z1izF2NvRK4rJ2nt6fof9TbPsvc\"]},\"@rsksmart/btc-transaction-solidity-helper/contracts/OpCodes.sol\":{\"keccak256\":\"0x74d384b5e0ce7b5be1cb5d1446b40e788a0b3e13522aaa583d73a554c835c4d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e94fc123058c5e2cc8cd4635f12bcba195b8b57fef895980c519130f44aa5d17\",\"dweb:/ipfs/QmVhqvcmMhvwYeuYgheTFVBo3EHBKuyYpthdhQRwTdBfx4\"]}},\"version\":1}", @@ -24245,7 +24256,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:09.311Z", + "updatedAt": "2024-05-22T08:30:50.055Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/Context.json b/build/contracts/Context.json index 5a7e4e3..d0bf2f6 100644 --- a/build/contracts/Context.json +++ b/build/contracts/Context.json @@ -340,7 +340,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.115Z", + "updatedAt": "2024-05-22T08:24:03.622Z", "devdoc": { "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.", "kind": "dev", diff --git a/build/contracts/ContextUpgradeable.json b/build/contracts/ContextUpgradeable.json index 5da8b8c..1d09725 100644 --- a/build/contracts/ContextUpgradeable.json +++ b/build/contracts/ContextUpgradeable.json @@ -555,7 +555,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.101Z", + "updatedAt": "2024-05-22T08:24:03.608Z", "devdoc": { "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.", "events": { diff --git a/build/contracts/ERC1967Proxy.json b/build/contracts/ERC1967Proxy.json index e71585b..03abaef 100644 --- a/build/contracts/ERC1967Proxy.json +++ b/build/contracts/ERC1967Proxy.json @@ -3719,7 +3719,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.104Z", + "updatedAt": "2024-05-22T08:24:03.610Z", "devdoc": { "details": "This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.", "events": { diff --git a/build/contracts/ERC1967Upgrade.json b/build/contracts/ERC1967Upgrade.json index 256f2da..786e590 100644 --- a/build/contracts/ERC1967Upgrade.json +++ b/build/contracts/ERC1967Upgrade.json @@ -3943,7 +3943,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.106Z", + "updatedAt": "2024-05-22T08:24:03.611Z", "devdoc": { "details": "This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. _Available since v4.1._", "events": { diff --git a/build/contracts/IBeacon.json b/build/contracts/IBeacon.json index b115f35..0c6353f 100644 --- a/build/contracts/IBeacon.json +++ b/build/contracts/IBeacon.json @@ -144,7 +144,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.108Z", + "updatedAt": "2024-05-22T08:24:03.613Z", "devdoc": { "details": "This is the interface that {BeaconProxy} expects of its beacon.", "kind": "dev", diff --git a/build/contracts/IERC1822Proxiable.json b/build/contracts/IERC1822Proxiable.json index a8e90b9..da47d03 100644 --- a/build/contracts/IERC1822Proxiable.json +++ b/build/contracts/IERC1822Proxiable.json @@ -143,7 +143,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.103Z", + "updatedAt": "2024-05-22T08:24:03.609Z", "devdoc": { "details": "ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.", "kind": "dev", diff --git a/build/contracts/IERC1967.json b/build/contracts/IERC1967.json index dcba458..ef51b54 100644 --- a/build/contracts/IERC1967.json +++ b/build/contracts/IERC1967.json @@ -296,7 +296,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.103Z", + "updatedAt": "2024-05-22T08:24:03.609Z", "devdoc": { "details": "ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. _Available since v4.8.3._", "events": { diff --git a/build/contracts/ITransparentUpgradeableProxy.json b/build/contracts/ITransparentUpgradeableProxy.json index 8f93959..547f0ba 100644 --- a/build/contracts/ITransparentUpgradeableProxy.json +++ b/build/contracts/ITransparentUpgradeableProxy.json @@ -4124,7 +4124,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.110Z", + "updatedAt": "2024-05-22T08:24:03.615Z", "devdoc": { "details": "Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy} does not implement this interface directly, and some of its functions are implemented by an internal dispatch mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not include them in the ABI so this interface must be used to interact with it.", "events": { diff --git a/build/contracts/Initializable.json b/build/contracts/Initializable.json index 5b367e2..43500bb 100644 --- a/build/contracts/Initializable.json +++ b/build/contracts/Initializable.json @@ -2083,7 +2083,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.097Z", + "updatedAt": "2024-05-22T08:24:03.604Z", "devdoc": { "custom:oz-upgrades-unsafe-allow": "constructor constructor() { _disableInitializers(); } ``` ====", "details": "This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\"MyToken\", \"MTK\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\"MyToken\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```", diff --git a/build/contracts/LiquidityBridgeContract.json b/build/contracts/LiquidityBridgeContract.json index a6f75d0..ea16c57 100644 --- a/build/contracts/LiquidityBridgeContract.json +++ b/build/contracts/LiquidityBridgeContract.json @@ -49074,7 +49074,7 @@ "sourceMap": "479:35588:21:-:0;;;;;;;;;;;;;;;;;;;", "deployedSourceMap": "479:35588:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6609:6;;-1:-1:-1;;;;;6609:6:21;6587:10;:29;6579:48;;;;-1:-1:-1;;;6579:48:21;;216:2:32;6579:48:21;;;198:21:32;255:1;235:18;;;228:29;-1:-1:-1;;;273:18:32;;;266:36;319:18;;6579:48:21;;;;;;;;;479:35588;;;;;748:40;;;;;;;;;;;;787:1;748:40;;;;;520:4:32;508:17;;;490:36;;478:2;463:18;748:40:21;;;;;;;;794:46;;;;;;;;;;;;839:1;794:46;;6640:89;;;;;;;;;;-1:-1:-1;6712:10:21;;6640:89;;;683:25:32;;;671:2;656:18;6640:89:21;537:177:32;28870:132:21;;;;;;;;;;-1:-1:-1;28870:132:21;;;;;:::i;:::-;;:::i;12429:292::-;;;;;;;;;;-1:-1:-1;12429:292:21;;;;;:::i;:::-;;:::i;7235:85::-;;;;;;;;;;-1:-1:-1;7309:4:21;;7235:85;;13333:556;;;;;;;;;;;;;:::i;8471:1660::-;;;;;;:::i;:::-;;:::i;1388:94::-;;;;;;;;;;;;-1:-1:-1;;1388:94:21;;;;;7557:1:32;7546:21;;;;7528:40;;7516:2;7501:18;1388:94:21;7386:188:32;11957:192:21;;;:::i;5305:814::-;;;;;;;;;;-1:-1:-1;5305:814:21;;;;;:::i;:::-;;:::i;7838:145::-;;;;;;;;;;-1:-1:-1;7838:145:21;;;;;:::i;:::-;;:::i;:::-;;;8908:14:32;;8901:22;8883:41;;8871:2;8856:18;7838:145:21;8743:187:32;8177:185:21;;;;;;;;;;-1:-1:-1;8177:185:21;;;;;:::i;:::-;;:::i;7506:139::-;;;;;;;;;;-1:-1:-1;7506:139:21;;;;;:::i;:::-;7580:4;7603:25;;;:14;:25;;;;;:35;;;;;;7506:139;12795:532;;;;;;;;;;;;;:::i;10970:732::-;;;;;;;;;;-1:-1:-1;10970:732:21;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;29008:159::-;;;;;;;;;;-1:-1:-1;29008:159:21;;;;;:::i;:::-;;:::i;13963:205::-;;;;;;;;;;;;;:::i;17208:6399::-;;;;;;;;;;-1:-1:-1;17208:6399:21;;;;;:::i;:::-;;:::i;2085:101:0:-;;;;;;;;;;;;;:::i;6351:185:21:-;;;;;;;;;;-1:-1:-1;6351:185:21;;;;;:::i;:::-;;:::i;23613:1139::-;;;;;;:::i;:::-;;:::i;4084:22::-;;;;;;;;;;;;;;;;1062:79;;;;;;;;;;;;-1:-1:-1;;1062:79:21;;1462:85:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;24758:1040:21:-;;;;;;;;;;-1:-1:-1;24758:1040:21;;;;;:::i;:::-;;:::i;14366:109::-;;;;;;;;;;-1:-1:-1;14366:109:21;;;;;:::i;:::-;-1:-1:-1;;;;;14452:16:21;14426:7;14452:16;;;:10;:16;;;;;;;14366:109;694:48;;;;;;;;;;;;741:1;694:48;;583;;;;;;;;;;;;626:5;583:48;;;;;17380:6:32;17368:19;;;17350:38;;17338:2;17323:18;583:48:21;17206:188:32;11786:165:21;;;:::i;35334:302::-;;;;;;;;;;-1:-1:-1;35334:302:21;;;;;:::i;:::-;;:::i;27962:697::-;;;;;;;;;;-1:-1:-1;27962:697:21;;;;;:::i;:::-;;:::i;1646:42::-;;;;;;;;;;;;1687:1;1646:42;;1147:82;;;;;;;;;;;;-1:-1:-1;;1147:82:21;;15102:1589;;;;;;:::i;:::-;;:::i;979:77::-;;;;;;;;;;;;-1:-1:-1;;979:77:21;;1488:50;;;;;;;;;;;;-1:-1:-1;;1488:50:21;;14481:121;;;;;;;;;;-1:-1:-1;14481:121:21;;;;;:::i;:::-;-1:-1:-1;;;;;14573:22:21;14547:7;14573:22;;;:16;:22;;;;;;;14481:121;7125:104;;;;;;;;;;-1:-1:-1;7203:19:21;;-1:-1:-1;;;7203:19:21;;;;7125:104;;1594:46;;;;;;;;;;;;1639:1;1594:46;;1235:71;;;;;;;;;;;;-1:-1:-1;;1235:71:21;;7028:91;;;;;;;;;;-1:-1:-1;7105:7:21;;;;7028:91;;1312:70;;;;;;;;;;;;-1:-1:-1;;1312:70:21;;12220:106;;;:::i;25804:2153::-;;;;;;;;;;-1:-1:-1;25804:2153:21;;;;;:::i;:::-;;:::i;637:50::-;;;;;;;;;;;;683:4;637:50;;914:59;;;;;;;;;;;;-1:-1:-1;;914:59:21;;1544:44;;;;;;;;;;;;-1:-1:-1;;1544:44:21;;3557:20;;;;;;;;;;-1:-1:-1;3557:20:21;;;;-1:-1:-1;;;;;3557:20:21;;;6840:92;;;;;;;;;;-1:-1:-1;6912:13:21;;6840:92;;847:61;;;;;;;;;;;;-1:-1:-1;;847:61:21;;7326:174;;;;;;;;;;-1:-1:-1;7326:174:21;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2335:198:0:-;;;;;;;;;;-1:-1:-1;2335:198:0;;;;;:::i;:::-;;:::i;14801:104:21:-;;;;;;;;;;-1:-1:-1;14801:104:21;;;;;:::i;:::-;-1:-1:-1;;;;;14884:14:21;14858:7;14884:14;;;:8;:14;;;;;;;14801:104;6938:84;;;;;;;;;;-1:-1:-1;7007:8:21;;6938:84;;6735:99;;;;;;;;;;-1:-1:-1;6820:6:21;;-1:-1:-1;;;;;6820:6:21;6735:99;;28870:132;28942:7;28968:27;28989:5;28968:20;:27::i;:::-;28961:34;28870:132;-1:-1:-1;;28870:132:21:o;12429:292::-;12499:10;12490:20;;;;:8;:20;;;;;;:30;-1:-1:-1;12490:30:21;12482:49;;;;-1:-1:-1;;;12482:49:21;;;;;;;:::i;:::-;12550:10;12541:20;;;;:8;:20;;;;;:30;;12565:6;;12541:20;:30;;12565:6;;12541:30;:::i;:::-;;;;-1:-1:-1;;12599:34:21;;12582:12;;12599:10;;12622:6;;12582:12;12599:34;12582:12;12599:34;12622:6;12599:10;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12581:52;;;12651:7;12643:26;;;;-1:-1:-1;;;12643:26:21;;;;;;;:::i;:::-;12684:30;12695:10;12707:6;12684:30;;;;;;;:::i;:::-;;;;;;;;12472:249;12429:292;:::o;13333:556::-;13416:10;13430:1;13396:31;;;:19;:31;;;;;;13388:54;;;;-1:-1:-1;;;13388:54:21;;;;;;;:::i;:::-;13535:19;;13508:10;13488:31;;;;:19;:31;;;;;;-1:-1:-1;;;13535:19:21;;;;;;13473:46;;:12;:46;:::i;:::-;:81;;13452:134;;;;-1:-1:-1;;;13452:134:21;;;;;;;:::i;:::-;13627:10;13596:11;13610:28;;;:16;:28;;;;;;;;;;13648:32;;;;13690:19;:31;;;;;;:35;;;13753:34;13610:28;;13627:10;13610:28;;13596:11;13753:34;13596:11;13753:34;13610:28;13627:10;13753:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13735:52;;;13805:7;13797:26;;;;-1:-1:-1;;;13797:26:21;;;;;;;:::i;:::-;13838:44;13863:10;13875:6;13838:44;;;;;;;:::i;8471:1660::-;8652:4;4624:9;4637:10;4624:23;4616:42;;;;-1:-1:-1;;;4616:42:21;;24783:2:32;4616:42:21;;;24765:21:32;24822:1;24802:18;;;24795:29;-1:-1:-1;;;24840:18:32;;;24833:36;24886:18;;4616:42:21;24581:329:32;4616:42:21;8738:107:::1;8778:5;8797:11;8822:13;8738:26;:107::i;:::-;8875:10;8864:22;::::0;;;:10:::1;:22;::::0;;;;;:27;:64;::::1;;;-1:-1:-1::0;8912:10:21::1;8895:28;::::0;;;:16:::1;:28;::::0;;;;;:33;8864:64:::1;8856:83;;;::::0;-1:-1:-1;;;8856:83:21;;25117:2:32;8856:83:21::1;::::0;::::1;25099:21:32::0;25156:1;25136:18;;;25129:29;-1:-1:-1;;;25174:18:32;;;25167:36;25220:18;;8856:83:21::1;24915:329:32::0;8856:83:21::1;8990:10;8970:31;::::0;;;:19:::1;:31;::::0;;;;;:36;8949:89:::1;;;::::0;-1:-1:-1;;;8949:89:21;;25451:2:32;8949:89:21::1;::::0;::::1;25433:21:32::0;25490:1;25470:18;;;25463:29;-1:-1:-1;;;25508:18:32;;;25501:36;25554:18;;8949:89:21::1;25249:329:32::0;8949:89:21::1;9109:25;;;;;;;:::i;:::-;;;;;;;;;;;;;9099:36;;;;;;9080:13;9063:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;9053:42;;;;;;:82:::0;9049:700:::1;;9172:13;;9159:9;:26;;9151:45;;;;-1:-1:-1::0;;;9151:45:21::1;;;;;;;:::i;:::-;9221:10;9210:22;::::0;;;:10:::1;:22;::::0;;;;9235:9:::1;9210:34:::0;;9049:700:::1;;;9321:26;;;;;;;:::i;:::-;;;;;;;;;;;;;9311:37;;;;;;9292:13;9275:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;9265:42;;;;;;:83:::0;9261:488:::1;;9385:13;;9372:9;:26;;9364:45;;;;-1:-1:-1::0;;;9364:45:21::1;;;;;;;:::i;:::-;9440:10;9423:28;::::0;;;:16:::1;:28;::::0;;;;9454:9:::1;9423:40:::0;;9261:488:::1;;;9515:13;::::0;:17:::1;::::0;9531:1:::1;9515:17;:::i;:::-;9502:9;:30;;9494:49;;;;-1:-1:-1::0;;;9494:49:21::1;;;;;;;:::i;:::-;9557:17;9577:13;9589:1;9577:9;:13;:::i;:::-;9557:33:::0;-1:-1:-1;9629:13:21::1;9641:1;9629:9;:13;:::i;:::-;:18:::0;:52:::1;;9665:16;:12:::0;9680:1:::1;9665:16;:::i;:::-;9629:52;;;9650:12;9629:52;9615:10;9604:22;::::0;;;:10:::1;:22;::::0;;;;;;;:77;;;;9695:16:::1;:28:::0;;;:43;9261:488:::1;9759:10;:12:::0;;;:10:::1;:12;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;9814:223:21::1;::::0;;::::1;::::0;::::1;::::0;;9850:10:::1;::::0;9814:223;;;9884:10:::1;9814:223;::::0;;::::1;::::0;;;;;;;;;;;;;;;;::::1;;::::0;;;;;;;;;;-1:-1:-1;9781:30:21;;;:18:::1;:30:::0;;;;;;;:256;;;;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;9781:256:21::1;-1:-1:-1::0;;;;;9781:256:21;;::::1;::::0;;;::::1;::::0;;;;9814:223;;9781:30;:256:::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;9781:256:21::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;9781:256:21::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;9781:256:21::1;::::0;::::1;;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;10061:10:21::1;::::0;10052:43:::1;::::0;;30312:25:32;;;10085:9:21::1;30368:2:32::0;30353:18;;30346:34;10073:10:21::1;::::0;-1:-1:-1;10052:43:21::1;::::0;30285:18:32;10052:43:21::1;;;;;;;-1:-1:-1::0;10113:10:21::1;::::0;4668:1:::1;8471:1660:::0;;;;;;:::o;11957:192::-;4519:33;4541:10;4519:21;:33::i;:::-;4511:52;;;;-1:-1:-1;;;4511:52:21;;;;;;;:::i;:::-;12056:10:::1;12039:28;::::0;;;:16:::1;:28;::::0;;;;:41;;12071:9:::1;::::0;12039:28;:41:::1;::::0;12071:9;;12039:41:::1;:::i;:::-;::::0;;;-1:-1:-1;;12095:47:21::1;::::0;::::1;::::0;::::1;::::0;12120:10:::1;::::0;12132:9:::1;::::0;12095:47:::1;:::i;:::-;;;;;;;;11957:192::o:0;5305:814::-;3279:19:1;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:1;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:1;1713:19:3;:23;;;3387:66:1;;-1:-1:-1;3436:12:1;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:1;;30927:2:32;3325:201:1;;;30909:21:32;30966:2;30946:18;;;30939:30;31005:34;30985:18;;;30978:62;-1:-1:-1;;;31056:18:32;;;31049:44;31110:19;;3325:201:1;30725:410:32;3325:201:1;3536:12;:16;;-1:-1:-1;;3536:16:1;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:1;;;;;3562:65;5645:3:21::1;5624:17;:24;;;;5616:43;;;::::0;-1:-1:-1;;;5616:43:21;;31342:2:32;5616:43:21::1;::::0;::::1;31324:21:32::0;31381:1;31361:18;;;31354:29;-1:-1:-1;;;31399:18:32;;;31392:36;31445:18;;5616:43:21::1;31140:329:32::0;5616:43:21::1;5699:10;5677:18;:32;;5669:51;;;::::0;-1:-1:-1;;;5669:51:21;;31676:2:32;5669:51:21::1;::::0;::::1;31658:21:32::0;31715:1;31695:18;;;31688:29;-1:-1:-1;;;31733:18:32;;;31726:36;31779:18;;5669:51:21::1;31474:329:32::0;5669:51:21::1;5760:2;5738:18;:24;;;;5730:43;;;::::0;-1:-1:-1;;;5730:43:21;;32010:2:32;5730:43:21::1;::::0;::::1;31992:21:32::0;32049:1;32029:18;;;32022:29;-1:-1:-1;;;32067:18:32;;;32060:36;32113:18;;5730:43:21::1;31808:329:32::0;5730:43:21::1;5783:26;:24;:26::i;:::-;5819:6;:31:::0;;-1:-1:-1;;;;;5819:31:21;::::1;-1:-1:-1::0;;;;;;5819:31:21;;::::1;;::::0;;5860:13:::1;:34:::0;;;5904:8:::1;:24:::0;;;5938:7:::1;:27:::0;;::::1;5975:40:::0;;::::1;-1:-1:-1::0;;;5975:40:21::1;-1:-1:-1::0;;;;;;5975:40:21;;;5938:27;;::::1;5975:40:::0;::::1;::::0;;6025:4:::1;:21:::0;;;6056:12:::1;:28:::0;;;6094:7:::1;:18:::0;;;::::1;;-1:-1:-1::0;;6094:18:21;;::::1;;::::0;;3647:99:1;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:1;;;3721:14;;-1:-1:-1;490:36:32;;3721:14:1;;478:2:32;463:18;3721:14:1;;;;;;;3647:99;3269:483;5305:814:21;;;;;;;;:::o;7838:145::-;7898:4;7921:18;7934:4;7921:12;:18::i;:::-;:55;;;;-1:-1:-1;7963:13:21;;-1:-1:-1;;;;;7943:16:21;;;;;;:10;:16;;;;;;:33;;7914:62;7838:145;-1:-1:-1;;7838:145:21:o;8177:185::-;8246:4;8277:27;8299:4;8277:21;:27::i;:::-;:78;;;;-1:-1:-1;8342:13:21;;-1:-1:-1;;;;;8316:22:21;;;;;;:16;:22;;;;;;:39;;8262:93;8177:185;-1:-1:-1;;8177:185:21:o;12795:532::-;12872:10;12886:1;12852:31;;;:19;:31;;;;;;12844:54;;;;-1:-1:-1;;;12844:54:21;;;;;;;:::i;:::-;12991:19;;12964:10;12944:31;;;;:19;:31;;;;;;-1:-1:-1;;;12991:19:21;;;;;;12929:46;;:12;:46;:::i;:::-;:81;;12908:134;;;;-1:-1:-1;;;12908:134:21;;;;;;;:::i;:::-;13077:10;13052:11;13066:22;;;:10;:22;;;;;;;;;;13098:26;;;;13134:19;:31;;;;;;:35;;;13197:34;13066:22;;13077:10;13066:22;;13052:11;13197:34;13052:11;13197:34;13066:22;13077:10;13197:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13179:52;;;13249:7;13241:26;;;;-1:-1:-1;;;13241:26:21;;;;;;;:::i;:::-;13282:38;13301:10;13313:6;13282:38;;;;;;;:::i;10970:732::-;11056:26;11094:44;11178:11;:18;-1:-1:-1;;;;;11141:65:21;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11141:65:21;;;;;;;;;;;;;;;;;11094:112;;11216:10;11246:6;11241:421;11262:11;:18;11258:1;:22;11241:421;;;11301:7;11311:11;11323:1;11311:14;;;;;;;;:::i;:::-;;;;;;;;;;;;11374:22;;;;:18;:22;;;;;;;:31;;;11311:14;;-1:-1:-1;11361:45:21;;-1:-1:-1;;;;;11374:31:21;11361:12;:45::i;:::-;:119;;;-1:-1:-1;11448:22:21;;;;:18;:22;;;;;:31;;;11426:54;;-1:-1:-1;;;;;11448:31:21;11426:21;:54::i;:::-;11360:170;;;;-1:-1:-1;11501:22:21;;;;:18;:22;;;;;:29;;;;;11360:170;11339:313;;;11590:22;;;;:18;:22;;;;;;;;;11563:49;;;;;;;;;;;;;;;-1:-1:-1;;;;;11563:49:21;;;;;;;;;;;;;;;11590:22;;11563:49;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11563:49:21;;;-1:-1:-1;;11563:49:21;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;11581:5;11563:24;;;;;;;;:::i;:::-;;;;;;:49;;;;11630:7;;;;;:::i;:::-;;;;11339:313;-1:-1:-1;11282:3:21;;;;:::i;:::-;;;;11241:421;;;-1:-1:-1;11678:17:21;;10970:732;-1:-1:-1;;;10970:732:21:o;29008:159::-;29101:7;29127:33;29154:5;29127:26;:33::i;13963:205::-;4407:24;4420:10;4407:12;:24::i;:::-;4399:43;;;;-1:-1:-1;;;4399:43:21;;;;;;;:::i;:::-;14043:10:::1;14023:31;::::0;;;:19:::1;:31;::::0;;;;;:36;14015:55:::1;;;::::0;-1:-1:-1;;;14015:55:21;;32675:2:32;14015:55:21::1;::::0;::::1;32657:21:32::0;32714:1;32694:18;;;32687:29;-1:-1:-1;;;32732:18:32;;;32725:36;32778:18;;14015:55:21::1;32473:329:32::0;14015:55:21::1;14100:10;14080:31;::::0;;;:19:::1;:31;::::0;;;;;;14114:12:::1;14080:46:::0;;14141:20;::::1;::::0;::::1;::::0;::::1;:::i;17208:6399::-:0;17442:6;2526:21:2;:19;:21::i;:::-;17460:17:21::1;17480:27;17501:5;17480:20;:27::i;:::-;17633:26;::::0;;;:15:::1;:26;::::0;;;;;;;-1:-1:-1;787:1:21::1;17633:44;:26:::0;;::::1;:44;;17612:97;;;;-1:-1:-1::0;;;17612:97:21::1;;;;;;;:::i;:::-;17783:33;::::0;;::::1;::::0;17740:144;;-1:-1:-1;;;17740:144:21;;:18:::1;::::0;:25:::1;::::0;:144:::1;::::0;17783:33;17834:9;;17861;;17740:144:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17719:197;;;;-1:-1:-1::0;;;17719:197:21::1;;;;;;;:::i;:::-;17958:15;17934:41:::0;::::1;17926:60;;;::::0;-1:-1:-1;;;17926:60:21;;34326:2:32;17926:60:21::1;::::0;::::1;34308:21:32::0;34365:1;34345:18;;;34338:29;-1:-1:-1;;;34383:18:32;;;34376:36;34429:18;;17926:60:21::1;34124:329:32::0;17926:60:21::1;17997:35;18035:148;18063:5;18082:17;18113;18144:6;18164:9;18035:14;:148::i;:::-;17997:186:::0;-1:-1:-1;18215:85:21;;;18194:138:::1;;;::::0;-1:-1:-1;;;18194:138:21;;34660:2:32;18194:138:21::1;::::0;::::1;34642:21:32::0;34699:1;34679:18;;;34672:29;-1:-1:-1;;;34717:18:32;;;34710:36;34763:18;;18194:138:21::1;34458:329:32::0;18194:138:21::1;18363:96:::0;;;18342:149:::1;;;::::0;-1:-1:-1;;;18342:149:21;;34994:2:32;18342:149:21::1;::::0;::::1;34976:21:32::0;35033:1;35013:18;;;35006:29;-1:-1:-1;;;35051:18:32;;;35044:36;35097:18;;18342:149:21::1;34792:329:32::0;18342:149:21::1;18522:84:::0;;;18501:137:::1;;;::::0;-1:-1:-1;;;18501:137:21;;35328:2:32;18501:137:21::1;::::0;::::1;35310:21:32::0;35367:1;35347:18;;;35340:29;-1:-1:-1;;;35385:18:32;;;35378:36;35431:18;;18501:137:21::1;35126:329:32::0;18501:137:21::1;18669:104:::0;;;18648:157:::1;;;::::0;-1:-1:-1;;;18648:157:21;;35662:2:32;18648:157:21::1;::::0;::::1;35644:21:32::0;35701:1;35681:18;;;35674:29;-1:-1:-1;;;35719:18:32;;;35712:36;35765:18;;18648:157:21::1;35460:329:32::0;18648:157:21::1;18836:52:::0;;;18815:105:::1;;;::::0;-1:-1:-1;;;18815:105:21;;35996:2:32;18815:105:21::1;::::0;::::1;35978:21:32::0;36035:1;36015:18;;;36008:29;-1:-1:-1;;;36053:18:32;;;36046:36;36099:18;;18815:105:21::1;35794:329:32::0;18815:105:21::1;18982:1;18951:28;:32;:109;;;-1:-1:-1::0;;;18999:61:21;::::1;18951:109;:188;;;-1:-1:-1::0;;;19076:63:21;::::1;18951:188;18930:241;;;::::0;-1:-1:-1;;;18930:241:21;;36330:2:32;18930:241:21::1;::::0;::::1;36312:21:32::0;36369:1;36349:18;;;36342:29;-1:-1:-1;;;36387:18:32;;;36380:36;36433:18;;18930:241:21::1;36128:329:32::0;18930:241:21::1;19290:23;::::0;;;:12:::1;:23;::::0;;;;:33;19199:154:::1;::::0;19229:5;;19248:28;;19290:33:::1;;19337:6:::0;19199:16:::1;:154::i;:::-;19182:816;;;19425:16;::::0;::::1;::::0;19470:33:::1;::::0;;::::1;::::0;-1:-1:-1;;;;;19459:45:21::1;19378:23;19459:45:::0;;;:10:::1;:45;::::0;;;;;19378:23;;19404:114:::1;::::0;:3:::1;:114::i;:::-;19378:140;;19644:18;19595:10;:45;19606:5;:33;;;-1:-1:-1::0;;;;;19595:45:21::1;-1:-1:-1::0;;;;;19595:45:21::1;;;;;;;;;;;;;:67;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;19708:33:21::1;::::0;;::::1;::::0;19681:137;;-1:-1:-1;;;;;;;;;;;19681:137:21;::::1;::::0;19759:18;;19795:9;;19681:137:::1;:::i;:::-;;;;;;;;19916:7;::::0;19869:22:::1;::::0;19927:3:::1;::::0;19895:28:::1;::::0;19916:7:::1;;19895:18:::0;:28:::1;:::i;:::-;19894:36;;;;:::i;:::-;19869:61;;19944:43;19960:10;19972:14;19944:15;:43::i;:::-;19364:634;;19182:816;-1:-1:-1::0;;20025:61:21;::::1;::::0;:140:::1;;-1:-1:-1::0;;;20102:63:21;::::1;20025:140;20008:447;;;20225:26;::::0;;;:15:::1;:26;::::0;;;;;;;:49;;-1:-1:-1;;20225:49:21::1;839:1;20225:49;::::0;;20295:12:::1;:23:::0;;;;;;20288:30;;-1:-1:-1;;20288:30:21;;;20337:58;;30312:25:32;;;30353:18;;;30346:34;;;20337:58:21::1;::::0;30285:18:32;20337:58:21::1;;;;;;;20416:28:::0;-1:-1:-1;20409:35:21::1;::::0;-1:-1:-1;20409:35:21::1;20008:447;20711:50;::::0;-1:-1:-1;;;20711:50:21;;20671:28;;20711:6:::1;::::0;:24:::1;::::0;:50:::1;::::0;20736:5;;20671:28;;20711:50:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;20812:1:21::1;20776:23:::0;;;:12:::1;:23;::::0;;;;:33;::::1;;:37:::0;;-1:-1:-1;20772:2614:21::1;;20829:17;20865:23:::0;;;:12:::1;:23;::::0;;;;:31;-1:-1:-1;;;20865:31:21;::::1;;;20861:285;;;20931:109;20956:17;21009:5;:13;;;20995:5;:11;;;:27;;;;:::i;:::-;20931:3;:109::i;:::-;20916:124;;20861:285;;;21094:37;21098:17;21117:5;:13;;;21094:3;:37::i;:::-;21079:52;;20861:285;21159:64;21175:5;:33;;;21210:12;21159:15;:64::i;:::-;21237:20;21260:32;21280:12:::0;21260:17;:32:::1;:::i;:::-;21237:55;;21329:4;;21311:15;:22;21307:829;;;21453:22;::::0;::::1;::::0;:152:::1;::::0;21436:12:::1;::::0;-1:-1:-1;;;;;21453:27:21::1;::::0;683:4:::1;::::0;21564:15;;21436:12;21453:152;21436:12;21453:152;21564:15;21453:27;683:4;21453:152:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21435:170;;;-1:-1:-1::0;;;;;;;;;;;21656:5:21::1;:22;;;21700:15;21737:7;21766:9;21628:165;;;;;;;;;:::i;:::-;;;;;;;;21817:7;21812:310;;21966:137;22007:5;:33;;;22066:15;21966;:137::i;:::-;21335:801;21307:829;20815:1331;;20772:2614;;;22222:20;::::0;::::1;::::0;22186:17;;22222:51;::::1;;;;22262:5;:11;;;22246:12;:27;;22222:51;22218:656;;;22294:16;22315:5;:21;;;-1:-1:-1::0;;;;;22315:26:21::1;22372:5;:14;;;22315:149;;22419:5;:11;;;22453:5;:10;;;22315:149;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22293:171;;;22552:5;:21;;;-1:-1:-1::0;;;;;22487:269:21::1;22520:10;-1:-1:-1::0;;;;;22487:269:21::1;-1:-1:-1::0;;;;;;;;;;;22595:5:21::1;:14;;;22631:5;:11;;;22664:5;:10;;;22696:11;22729:9;22487:269;;;;;;;;;;:::i;:::-;;;;;;;;22779:11;22775:85;;;22830:11;::::0;::::1;::::0;22814:27:::1;::::0;;::::1;:::i;:::-;;;22775:85;22275:599;22218:656;22906:4;;22891:12;:19;22887:489;;;23027:22;::::0;::::1;::::0;:149:::1;::::0;23010:12:::1;::::0;-1:-1:-1;;;;;23027:27:21::1;::::0;683:4:::1;::::0;23138:12;;23010;23027:149;23010:12;23027:149;23138:12;23027:27;683:4;23027:149:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23009:167;;;-1:-1:-1::0;;;;;;;;;;;23227:5:21::1;:22;;;23271:12;23305:7;23334:9;23199:162;;;;;;;;;:::i;:::-;;;;;;;;22912:464;22887:489;22152:1234;20772:2614;23395:26;::::0;;;:15:::1;:26;::::0;;;;;;;:49;;-1:-1:-1;;23395:49:21::1;839:1;23395:49;::::0;;23461:12:::1;:23:::0;;;;;;23454:30;;-1:-1:-1;;23454:30:21;;;23499:56;;683:25:32;;;23395:26:21;;23499:56:::1;::::0;656:18:32;23499:56:21::1;;;;;;;-1:-1:-1::0;23572:28:21;-1:-1:-1;;2557:1:2::1;2568:20:::0;1808:1;3074:7;:22;2894:209;2568:20;17208:6399:21;;;;;;;:::o;2085:101:0:-;1355:13;:11;:13::i;:::-;2149:30:::1;2176:1;2149:18;:30::i;:::-;2085:101::o:0;6351:185:21:-;6459:11;6218:7;:5;:7::i;:::-;-1:-1:-1;;;;;6204:21:21;:10;-1:-1:-1;;;;;6204:21:21;;:91;;;-1:-1:-1;6255:31:21;;;;:18;:31;;;;;:40;;;-1:-1:-1;;;;;6255:40:21;6241:10;:54;6204:91;6183:144;;;;-1:-1:-1;;;6183:144:21;;41273:2:32;6183:144:21;;;41255:21:32;41312:1;41292:18;;;41285:29;-1:-1:-1;;;41330:18:32;;;41323:36;41376:18;;6183:144:21;41071:329:32;6183:144:21;-1:-1:-1;6482:31:21::1;::::0;;;:18:::1;:31;::::0;;;;;:38:::1;;:47:::0;;-1:-1:-1;;6482:47:21::1;::::0;::::1;;::::0;;;::::1;::::0;;6351:185::o;23613:1139::-;23814:41;23836:5;:18;;;23814:21;:41::i;:::-;23806:60;;;;-1:-1:-1;;;23806:60:21;;41607:2:32;23806:60:21;;;41589:21:32;41646:1;41626:18;;;41619:29;-1:-1:-1;;;41664:18:32;;;41657:36;41710:18;;23806:60:21;41405:329:32;23806:60:21;23915:9;23898:5;:13;;;23884:5;:11;;;:27;;;;:::i;:::-;:40;;23876:59;;;;-1:-1:-1;;;23876:59:21;;41941:2:32;23876:59:21;;;41923:21:32;41980:1;41960:18;;;41953:29;-1:-1:-1;;;41998:18:32;;;41991:36;42044:18;;23876:59:21;41739:329:32;23876:59:21;23972:5;:22;;;23953:41;;:15;:41;;23945:60;;;;-1:-1:-1;;;23945:60:21;;42275:2:32;23945:60:21;;;42257:21:32;42314:1;42294:18;;;42287:29;-1:-1:-1;;;42332:18:32;;;42325:36;42378:18;;23945:60:21;42073:329:32;23945:60:21;24042:5;:16;;;24023:35;;:15;:35;;24015:54;;;;-1:-1:-1;;;24015:54:21;;42609:2:32;24015:54:21;;;42591:21:32;42648:1;42628:18;;;42621:29;-1:-1:-1;;;42666:18:32;;;42659:36;42712:18;;24015:54:21;42407:329:32;24015:54:21;24103:5;:17;;;24087:33;;:12;:33;;24079:52;;;;-1:-1:-1;;;24079:52:21;;42943:2:32;24079:52:21;;;42925:21:32;42982:1;42962:18;;;42955:29;-1:-1:-1;;;43000:18:32;;;42993:36;43046:18;;24079:52:21;42741:329:32;24079:52:21;24141:17;24161:22;24177:5;24161:15;:22::i;:::-;24240:18;;;;24214:67;;-1:-1:-1;;;24214:67:21;;24141:42;;-1:-1:-1;24214:18:21;;:25;;:67;;24141:42;;24271:9;;24214:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24193:120;;;;-1:-1:-1;;;24193:120:21;;;;;;;:::i;:::-;24324:42;24369:33;;;:22;:33;;;;;;;;24421:14;:25;;;;;;:35;;;;;:44;24413:63;;;;-1:-1:-1;;;24413:63:21;;;;;;;:::i;:::-;24494:26;;-1:-1:-1;;;;;24494:26:21;:40;24486:59;;;;-1:-1:-1;;;24486:59:21;;;;;;;:::i;:::-;24555:33;;;;:22;:33;;;;;;;;;:41;;;;-1:-1:-1;;;;;;24555:41:21;;;-1:-1:-1;;;;;24555:41:21;;;;;;;;;;-1:-1:-1;24555:41:21;;;;;;;;;;;;;;;;;;;:33;:41;;;;;;;;:::i;:::-;-1:-1:-1;24555:41:21;;;;;;;;;-1:-1:-1;;;;;;24555:41:21;-1:-1:-1;;;;;24555:41:21;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;24555:41:21;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24555:41:21;-1:-1:-1;;;;;24555:41:21;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;24555:41:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24555:41:21;;;;;;;-1:-1:-1;;;24555:41:21;;;;;;;;;;;-1:-1:-1;;;;24555:41:21;-1:-1:-1;;;24555:41:21;;;;;-1:-1:-1;;;;24555:41:21;;-1:-1:-1;;;24555:41:21;;;;;;;;;-1:-1:-1;;;;;;;;24555:41:21;-1:-1:-1;;;24555:41:21;;;;;;;-1:-1:-1;;;;24555:41:21;;-1:-1:-1;;;24555:41:21;;;;;;;;;;;-1:-1:-1;;;;24555:41:21;-1:-1:-1;;;24555:41:21;;;;;;;;;;;;;;-1:-1:-1;24606:25:21;;;:14;:25;;;;;;;;;24651:15;24606:60;;;;24681:64;;24718:9;30312:25:32;;30353:18;;;30346:34;24706:10:21;;24606:25;;24681:64;;30285:18:32;24681:64:21;;;;;;;23796:956;;23613:1139;;:::o;1462:85:0:-;1534:6;;-1:-1:-1;;;;;1534:6:0;;1462:85::o;24758:1040:21:-;2526:21:2;:19;:21::i;:::-;24847:32:21::1;24882:33:::0;;;:22:::1;:33;::::0;;;;24934:16;;-1:-1:-1;;;;;24934:16:21::1;24926:49;;;;-1:-1:-1::0;;;24926:49:21::1;;;;;;;:::i;:::-;25024:16;::::0;::::1;::::0;-1:-1:-1;;;25024:16:21;::::1;;;25006:15;:34;:82:::0;::::1;;;-1:-1:-1::0;25071:17:21::1;::::0;::::1;::::0;-1:-1:-1;;;25071:17:21;::::1;;;25056:12;:32;25006:82;24985:135;;;::::0;-1:-1:-1;;;24985:135:21;;45300:2:32;24985:135:21::1;::::0;::::1;45282:21:32::0;45339:1;45319:18;;;45312:29;-1:-1:-1;;;45357:18:32;;;45350:36;45403:18;;24985:135:21::1;45098:329:32::0;24985:135:21::1;25131:20;25168:5;:13;;;25154:5;:11;;;:27;;;;:::i;:::-;25219:22;::::0;::::1;::::0;25271:16:::1;::::0;::::1;::::0;25219:22;25306:18;::::1;::::0;-1:-1:-1;;;;;25306:18:21;;::::1;25191:25;25289:36:::0;;;:16:::1;:36;::::0;;;;;25131:50;;-1:-1:-1;25219:22:21;::::1;::::0;25267:59:::1;::::0;25271:16;25267:3:::1;:59::i;:::-;25353:18;::::0;::::1;::::0;-1:-1:-1;;;;;25353:18:21::1;25336:36;::::0;;;:16:::1;:36;::::0;;;;:47;;25252:74;;-1:-1:-1;25252:74:21;;25336:36;;;:47:::1;::::0;25252:74;;25336:47:::1;:::i;:::-;::::0;;;-1:-1:-1;;25409:18:21::1;::::0;::::1;::::0;25399:49:::1;::::0;-1:-1:-1;;;;;;;;;;;25399:49:21;::::1;::::0;-1:-1:-1;;;;;25409:18:21;;::::1;::::0;25429:7;;25438:9;;25399:49:::1;:::i;:::-;;;;;;;;25547:22;::::0;::::1;::::0;25463:116:::1;::::0;;45606:25:32;;;-1:-1:-1;;;;;25547:22:21;;::::1;45662:2:32::0;45647:18;;45640:60;25495:9:21;;25463:116:::1;::::0;45579:18:32;25463:116:21::1;;;;;;;25597:33;::::0;;;:22:::1;:33;::::0;;;;25590:40;;-1:-1:-1;;;;;;25590:40:21;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;25597:33;25590:40:::1;;::::0;::::1;25597:33:::0;25590:40:::1;:::i;:::-;;::::0;::::1;::::0;;-1:-1:-1;;;;;;25590:40:21::1;::::0;;::::1;;::::0;::::1;;;:::i;:::-;;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;25590:40:21::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;25590:40:21::1;;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;25590:40:21;;;25640:25;;;:14:::1;:25;::::0;;;;;-1:-1:-1;25640:35:21;;::::1;:42:::0;;-1:-1:-1;;25640:42:21::1;::::0;;::::1;::::0;;25708:50;-1:-1:-1;;;;;25708:22:21;::::1;::::0;25738:15;;25590:40;25708:50;25590:40;25708:50;25738:15;25708:22;:50:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25693:65;;;25776:4;25768:23;;;::::0;-1:-1:-1;;;25768:23:21;;45913:2:32;25768:23:21::1;::::0;::::1;45895:21:32::0;45952:1;45932:18;;;45925:29;-1:-1:-1;;;45970:18:32;;;45963:36;46016:18;;25768:23:21::1;45711:329:32::0;25768:23:21::1;24837:961;;;;;2568:20:2::0;1808:1;3074:7;:22;2894:209;2568:20;24758:1040:21;:::o;11786:165::-;4407:24;4420:10;4407:12;:24::i;:::-;4399:43;;;;-1:-1:-1;;;4399:43:21;;;;;;;:::i;:::-;11864:10:::1;11853:22;::::0;;;:10:::1;:22;::::0;;;;:35;;11879:9:::1;::::0;11853:22;:35:::1;::::0;11879:9;;11853:35:::1;:::i;:::-;::::0;;;-1:-1:-1;;11903:41:21::1;::::0;::::1;::::0;::::1;::::0;11922:10:::1;::::0;11934:9:::1;::::0;11903:41:::1;:::i;35334:302::-:0;35420:7;35551:6;:13;35568:2;35551:19;35543:38;;;;-1:-1:-1;;;35543:38:21;;46247:2:32;35543:38:21;;;46229:21:32;46286:1;46266:18;;;46259:29;-1:-1:-1;;;46304:18:32;;;46297:36;46350:18;;35543:38:21;46045:329:32;35543:38:21;35599:30;35618:6;35626:2;35599:18;:30::i;:::-;35592:37;;;35334:302;-1:-1:-1;;35334:302:21:o;27962:697::-;28105:4;28121:23;28200:16;28210:5;28200:9;:16::i;:::-;28234:5;:22;;;28282:5;:16;;;28274:25;;28317:5;:33;;;28170:194;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;28147:227;;;;;;28121:253;;28384:32;28466:15;28516:6;;;;;;;;;-1:-1:-1;;;;;28516:6:21;-1:-1:-1;;;;;28516:34:21;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28516:36:21;;;;;;;;;;;;:::i;:::-;28419:143;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;28419:143:21;;;;;;;;;;28644:7;;-1:-1:-1;;;28579:73:21;;28419:143;;-1:-1:-1;28579:8:21;;:27;;:73;;28607:14;;28419:143;;28644:7;;;;;28579:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15102:1589::-;15223:4;4407:24;4420:10;4407:12;:24::i;:::-;4399:43;;;;-1:-1:-1;;;4399:43:21;;;;;;;:::i;:::-;2526:21:2::1;:19;:21::i;:::-;15274:5:21::2;:33;;;-1:-1:-1::0;;;;;15260:47:21::2;:10;-1:-1:-1::0;;;;;15260:47:21::2;;15239:100;;;::::0;-1:-1:-1;;;15239:100:21;;49114:2:32;15239:100:21::2;::::0;::::2;49096:21:32::0;49153:1;49133:18;;;49126:29;-1:-1:-1;;;49171:18:32;;;49164:36;49217:18;;15239:100:21::2;48912:329:32::0;15239:100:21::2;15441:11;::::0;::::2;::::0;15379:33:::2;::::0;;::::2;::::0;-1:-1:-1;;;;;15370:43:21::2;;::::0;;;:8:::2;:43;::::0;;;:55:::2;::::0;15416:9:::2;::::0;15370:55:::2;:::i;:::-;:82;;15349:135;;;;-1:-1:-1::0;;;15349:135:21::2;;;;;;;:::i;:::-;15495:17;15515:27;15536:5;15515:20;:27::i;:::-;741:1;15573:26:::0;;;:15:::2;:26;::::0;;;;;15495:47;;-1:-1:-1;15573:52:21::2;:26;:52:::0;15552:105:::2;;;::::0;-1:-1:-1;;;15552:105:21;;49448:2:32;15552:105:21::2;::::0;::::2;49430:21:32::0;49487:1;49467:18;;;49460:29;-1:-1:-1;;;49505:18:32;;;49498:36;49551:18;;15552:105:21::2;49246:329:32::0;15552:105:21::2;15668:61;15684:5;:33;;;15719:9;15668:15;:61::i;:::-;15875:14;::::0;::::2;::::0;:34:::2;::::0;626:5:::2;::::0;15875:34:::2;:::i;:::-;15862:47;;:9;:47;;15841:100;;;::::0;-1:-1:-1;;;15841:100:21;;49959:2:32;15841:100:21::2;::::0;::::2;49941:21:32::0;49998:1;49978:18;;;49971:29;-1:-1:-1;;;50016:18:32;;;50009:36;50062:18;;15841:100:21::2;49757:329:32::0;15841:100:21::2;15952:12;15969:5;:21;;;-1:-1:-1::0;;;;;15969:26:21::2;16018:5;:14;;;15969:125;;16057:5;:11;;;16083:5;:10;;;15969:125;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;15951:143:21;;-1:-1:-1;;16132:16:21::2;16113:15;:35;;16105:54;;;::::0;-1:-1:-1;;;16105:54:21;;50293:2:32;16105:54:21::2;::::0;::::2;50275:21:32::0;50332:1;50312:18;;;50305:29;-1:-1:-1;;;50350:18:32;;;50343:36;50396:18;;16105:54:21::2;50091:329:32::0;16105:54:21::2;16169:23;::::0;;;:12:::2;:23;::::0;;;;:59;;-1:-1:-1;;16169:59:21::2;16212:15;16169:59;;;::::0;;16239:153;::::2;;;16266:23;::::0;;;:12:::2;:23;::::0;;;;;;:38;;-1:-1:-1;;;;16266:38:21::2;-1:-1:-1::0;;;16266:38:21::2;::::0;;16334:33;::::2;::::0;16369:11:::2;::::0;::::2;::::0;16318:63:::2;::::0;16334:33;16318:15:::2;:63::i;:::-;16455:5;:21;;;-1:-1:-1::0;;;;;16406:201:21::2;16431:10;-1:-1:-1::0;;;;;16406:201:21::2;-1:-1:-1::0;;;;;;;;;;;16490:5:21::2;:14;;;16518:5;:11;;;16543:5;:10;;;16567:7;16588:9;16406:201;;;;;;;;;;:::i;:::-;;;;;;;;16617:26;::::0;;;:15:::2;:26;::::0;;;;;:43;;-1:-1:-1;;16617:43:21::2;787:1;16617:43;::::0;;16677:7;-1:-1:-1;2568:20:2::1;1808:1:::0;3074:7;:22;2894:209;2568:20:::1;15102:1589:21::0;;;:::o;12220:106::-;4407:24;4420:10;4407:12;:24::i;:::-;4399:43;;;;-1:-1:-1;;;4399:43:21;;;;;;;:::i;:::-;12281:38:::1;12297:10;12309:9;12281:15;:38::i;25804:2153::-:0;2526:21:2;:19;:21::i;:::-;4519:33:21::1;4541:10;4519:21;:33::i;:::-;4511:52;;;;-1:-1:-1::0;;;4511:52:21::1;;;;;;;:::i;:::-;26065:25:::2;::::0;;;:14:::2;:25;::::0;;;;:35:::2;;::::0;::::2;;:44;26057:63;;;;-1:-1:-1::0;;;26057:63:21::2;;;;;;;:::i;:::-;26130:32;26165:33:::0;;;:22:::2;:33;::::0;;;;26216:16;;-1:-1:-1;;;;;26216:16:21::2;26208:49;;;;-1:-1:-1::0;;;26208:49:21::2;;;;;;;:::i;:::-;26307:26;::::0;-1:-1:-1;;;26307:26:21;;26267:37:::2;::::0;26307:8:::2;::::0;:19:::2;::::0;:26:::2;::::0;26327:5;;26307:26:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;26307:26:21::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;26267:66;;26343:19;26376:8;:28;26405:7;1687:1;26405:26;;;;;;;;:::i;:::-;;;;;;;:35;;;26376:65;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;26376:65:21::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;26365:88;;;;;;;;;;;;:::i;:::-;26343:110;;26484:11;26471:9;:24;26463:43;;;::::0;-1:-1:-1;;;26463:43:21;;53059:2:32;26463:43:21::2;::::0;::::2;53041:21:32::0;53098:1;53078:18;;;53071:29;-1:-1:-1;;;53116:18:32;;;53109:36;53162:18;;26463:43:21::2;52857:329:32::0;26463:43:21::2;26538:18;::::0;::::2;::::0;-1:-1:-1;;;;;26538:18:21::2;26524:10;:32;26516:51;;;::::0;-1:-1:-1;;;26516:51:21;;53393:2:32;26516:51:21::2;::::0;::::2;53375:21:32::0;53432:1;53412:18;;;53405:29;-1:-1:-1;;;53450:18:32;;;53443:36;53496:18;;26516:51:21::2;53191:329:32::0;26516:51:21::2;26815:27;::::0;::::2;::::0;26598:6:::2;::::0;26653:25:::2;::::0;-1:-1:-1;;;26653:25:21;;-1:-1:-1;;;26815:27:21;;::::2;;;::::0;-1:-1:-1;;;;;26598:6:21;;::::2;::::0;:37:::2;::::0;26653:8:::2;::::0;:18:::2;::::0;:25:::2;::::0;26672:5;;26653:25:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26696:18;26732:17;26767:18;26598:201;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:246;;26577:299;;;::::0;-1:-1:-1;;;26577:299:21;;54768:2:32;26577:299:21::2;::::0;::::2;54750:21:32::0;54807:1;54787:18;;;54780:29;-1:-1:-1;;;54825:18:32;;;54818:36;54871:18;;26577:299:21::2;54566:329:32::0;26577:299:21::2;26909:7;1639:1;26909:30;;;;;;;;:::i;:::-;;;;;;;:36;;;26949:6;26909:47;;;;:::i;:::-;-1:-1:-1::0;;;;;26894:62:21::2;:5;:11;;;:62;;26886:81;;;::::0;-1:-1:-1;;;26886:81:21;;55364:2:32;26886:81:21::2;::::0;::::2;55346:21:32::0;55403:1;55383:18;;;55376:29;-1:-1:-1;;;55421:18:32;;;55414:36;55467:18;;26886:81:21::2;55162:329:32::0;26886:81:21::2;26995:29;27027:8;:29;27057:7;1639:1;27057:30;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;;;:52:::2;::::0;27111:7:::2;::::0;27027:92:::2;::::0;-1:-1:-1;;;;;;27027:92:21::2;::::0;;;;;;::::2;::::0;27057:52;27111:7:::2;;::::0;27027:92:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;27027:92:21::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;26995:124;;27183:16;27173:27;;;;;;27147:5;:21;;27137:32;;;;;;:::i;:::-;;;;;;;;:63;27129:82;;;::::0;-1:-1:-1;;;27129:82:21;;56855:2:32;27129:82:21::2;::::0;::::2;56837:21:32::0;56894:1;56874:18;;;56867:29;-1:-1:-1;;;56912:18:32;;;56905:36;56958:18;;27129:82:21::2;56653:329:32::0;27129:82:21::2;27239:124;::::0;;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;;;27239:124:21;;::::2;::::0;;;;::::2;::::0;::::2;;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;27279:5;;27239:124;;;;::::2;::::0;::::2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;27239:124:21;;;-1:-1:-1;;27239:124:21::2;::::0;::::2;::::0;-1:-1:-1;;;;;27239:124:21::2;;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;;;;;;::::2;::::0;::::2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;27239:124:21;;;-1:-1:-1;;27239:124:21::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;;;;::::2;::::0;;::::2;::::0;;::::2;::::0;;;;::::2;::::0;::::2;::::0;;;;;;;::::2;::::0;::::2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;27239:124:21;;;-1:-1:-1;;27239:124:21::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;::::0;;::::2;::::0;;;;-1:-1:-1;;;27239:124:21;::::2;::::0;::::2;::::0;;;;::::2;-1:-1:-1::0;;;27239:124:21;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;27239:124:21;::::2;;::::0;;;;-1:-1:-1;;;27239:124:21;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;27239:124:21;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;27239:124:21;;::::2;;;::::0;;;;27302:11;27331:18;27239:22:::2;:124::i;:::-;27222:428;;;27424:16;::::0;::::2;::::0;27475:18:::2;::::0;::::2;::::0;-1:-1:-1;;;;;27475:18:21::2;27388:12;27458:36:::0;;;:16:::2;:36;::::0;;;;;27388:12;;27403:105:::2;::::0;:3:::2;:105::i;:::-;27539:18;::::0;::::2;::::0;-1:-1:-1;;;;;27539:18:21::2;27522:36;::::0;;;:16:::2;:36;::::0;;;;:47;;27388:120;;-1:-1:-1;27388:120:21;;27522:36;;;:47:::2;::::0;27388:120;;27522:47:::2;:::i;:::-;::::0;;;-1:-1:-1;;27598:18:21::2;::::0;::::2;::::0;27588:51:::2;::::0;-1:-1:-1;;;;;;;;;;;27588:51:21;::::2;::::0;-1:-1:-1;;;;;27598:18:21;;::::2;::::0;27618:7;;27627:11;;27588:51:::2;:::i;:::-;;;;;;;;27374:276;27222:428;27675:18;::::0;::::2;::::0;27737:13:::2;::::0;::::2;::::0;27723:11:::2;::::0;::::2;::::0;27661:9:::2;::::0;-1:-1:-1;;;;;27675:18:21::2;::::0;27723:27:::2;::::0;::::2;:::i;:::-;27675:93;::::0;::::2;::::0;;;;;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27660:108;;;27786:4;27778:23;;;::::0;-1:-1:-1;;;27778:23:21;;57189:2:32;27778:23:21::2;::::0;::::2;57171:21:32::0;57228:1;57208:18;;;57201:29;-1:-1:-1;;;57246:18:32;;;57239:36;57292:18;;27778:23:21::2;56987:329:32::0;27778:23:21::2;27819:35;::::0;;;:22:::2;:35;::::0;;;;27812:42;;-1:-1:-1;;;;;;27812:42:21;;::::2;::::0;;;;::::2;::::0;;;;::::2;::::0;;27819:35;27812:42:::2;;::::0;::::2;27819:35:::0;27812:42:::2;:::i;:::-;;::::0;::::2;::::0;;-1:-1:-1;;;;;;27812:42:21::2;::::0;;::::2;;::::0;::::2;;;:::i;:::-;;;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;;-1:-1:-1;;;;;;27812:42:21::2;::::0;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;-1:-1:-1::0;27812:42:21::2;;::::0;::::2;::::0;;;::::2;::::0;;::::2;::::0;;-1:-1:-1;;;;;;27812:42:21;;;27864:27;;;:14:::2;:27;::::0;;;;;27812:42;27864:37;;::::2;:44:::0;;-1:-1:-1;;27864:44:21::2;::::0;;::::2;::::0;;27923:27;27879:11;;27923:27:::2;::::0;::::2;26047:1910;;;;;2568:20:2::0;1808:1;3074:7;:22;2894:209;2568:20;25804:2153:21;;;;;:::o;7326:174::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7460:33:21;;;:22;:33;;;;;;7453:40;;;;;;;;;-1:-1:-1;;;;;7453:40:21;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7453:40:21;;7460:33;;7453:40;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7453:40:21;;;-1:-1:-1;;7453:40:21;;;;-1:-1:-1;;;;;7453:40:21;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7453:40:21;;;-1:-1:-1;;7453:40:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7453:40:21;;;-1:-1:-1;;7453:40:21;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7453:40:21;;;;;;;;;-1:-1:-1;;;7453:40:21;;;;;;;;-1:-1:-1;;;7453:40:21;;;;;;;-1:-1:-1;;;7453:40:21;;;;;;;;-1:-1:-1;;;7453:40:21;;;;;;;;-1:-1:-1;;;7453:40:21;;;;;;;;;;7326:174;-1:-1:-1;;7326:174:21:o;2335:198:0:-;1355:13;:11;:13::i;:::-;-1:-1:-1;;;;;2423:22:0;::::1;2415:73;;;::::0;-1:-1:-1;;;2415:73:0;;57523:2:32;2415:73:0::1;::::0;::::1;57505:21:32::0;57562:2;57542:18;;;57535:30;57601:34;57581:18;;;57574:62;-1:-1:-1;;;57652:18:32;;;57645:36;57698:19;;2415:73:0::1;57321:402:32::0;2415:73:0::1;2498:28;2517:8;2498:18;:28::i;29173:839:21:-:0;29271:7;29315:5;:16;;;-1:-1:-1;;;;;29298:33:21;29306:4;-1:-1:-1;;;;;29298:33:21;;29290:52;;;;-1:-1:-1;;;29290:52:21;;57930:2:32;29290:52:21;;;57912:21:32;57969:1;57949:18;;;57942:29;-1:-1:-1;;;57987:18:32;;;57980:36;58033:18;;29290:52:21;57728:329:32;29290:52:21;29392:21;;;;29381:6;;-1:-1:-1;;;;;29373:40:21;;;29381:6;;29373:40;29352:93;;;;-1:-1:-1;;;29352:93:21;;58264:2:32;29352:93:21;;;58246:21:32;58303:1;58283:18;;;58276:29;-1:-1:-1;;;58321:18:32;;;58314:36;58367:18;;29352:93:21;58062:329:32;29352:93:21;29476:5;:22;;;:29;29509:2;29476:35;:86;;;;29527:5;:22;;;:29;29560:2;29527:35;29476:86;29455:139;;;;-1:-1:-1;;;29455:139:21;;58598:2:32;29455:139:21;;;58580:21:32;58637:1;58617:18;;;58610:29;-1:-1:-1;;;58655:18:32;;;58648:36;58701:18;;29455:139:21;58396:329:32;29455:139:21;29625:5;:33;;;:40;29669:2;29625:46;29604:99;;;;-1:-1:-1;;;29604:99:21;;58932:2:32;29604:99:21;;;58914:21:32;58971:1;58951:18;;;58944:29;-1:-1:-1;;;58989:18:32;;;58982:36;59035:18;;29604:99:21;58730:329:32;29604:99:21;29765:8;;29748:5;:13;;;29734:5;:11;;;:27;;;;:::i;:::-;:39;;29713:92;;;;-1:-1:-1;;;29713:92:21;;59266:2:32;29713:92:21;;;59248:21:32;59305:1;59285:18;;;59278:29;-1:-1:-1;;;59323:18:32;;;59316:36;59369:18;;29713:92:21;59064:329:32;29713:92:21;29898:5;:20;;;29891:28;;29863:5;:24;;;29856:32;;:63;;;;:::i;:::-;-1:-1:-1;;;;;29836:83:21;:16;:83;;29815:136;;;;-1:-1:-1;;;29815:136:21;;59785:2:32;29815:136:21;;;59767:21:32;59824:1;59804:18;;;59797:29;-1:-1:-1;;;59842:18:32;;;59835:36;59888:18;;29815:136:21;59583:329:32;29815:136:21;29979:25;;-1:-1:-1;;;29979:25:21;;:6;;:18;;:25;;29998:5;;29979:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;29979:25:21;;;;;;;;;;;;:::i;:::-;29969:36;;;;;;29962:43;;29173:839;;;:::o;10216:748::-;10413:1;10397:5;10391:19;:23;10383:42;;;;-1:-1:-1;;;10383:42:21;;60401:2:32;10383:42:21;;;60383:21:32;60440:1;60420:18;;;60413:29;-1:-1:-1;;;60458:18:32;;;60451:36;60504:18;;10383:42:21;60199:329:32;10383:42:21;10484:1;10462:11;10456:25;:29;10435:82;;;;-1:-1:-1;;;10435:82:21;;60735:2:32;10435:82:21;;;60717:21:32;60774:1;60754:18;;;60747:29;-1:-1:-1;;;60792:18:32;;;60785:36;60838:18;;10435:82:21;60533:329:32;10435:82:21;10679:25;;;;;;;:::i;:::-;;;;;;;;;;;;;10669:36;;;;;;10638:13;10621:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;10611:42;;;;;;:94;:205;;;;10789:26;;;;;;;:::i;:::-;;;;;;;;;;;;;10779:37;;;;;;10748:13;10731:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;10721:42;;;;;;:95;10611:205;:314;;;-1:-1:-1;10900:24:21;;-1:-1:-1;;;10900:24:21;;;61069:19:32;61104:11;;10900:24:21;;;;;;;;;;;;10890:35;;;;;;10859:13;10842:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;10832:42;;;;;;:93;10611:314;10590:367;;;;-1:-1:-1;;;10590:367:21;;61328:2:32;10590:367:21;;;61310:21:32;61367:1;61347:18;;;61340:29;-1:-1:-1;;;61385:18:32;;;61378:36;61431:18;;10590:367:21;61126:329:32;10590:367:21;10216:748;;;:::o;31096:157::-;-1:-1:-1;;;;;31186:22:21;;31163:4;31186:22;;;:16;:22;;;;;;:26;;;;:60;;-1:-1:-1;;;;;;;31216:25:21;;;;;:19;:25;;;;;;:30;;31096:157::o;1125:111:0:-;5374:13:1;;;;;;;5366:69;;;;-1:-1:-1;;;5366:69:1;;61662:2:32;5366:69:1;;;61644:21:32;61701:2;61681:18;;;61674:30;61740:34;61720:18;;;61713:62;-1:-1:-1;;;61791:18:32;;;61784:41;61842:19;;5366:69:1;61460:407:32;5366:69:1;1197:32:0::1;965:10:4::0;1197:18:0::1;:32::i;30948:142:21:-:0;-1:-1:-1;;;;;31029:16:21;;31006:4;31029:16;;;:10;:16;;;;;;:20;;;;:54;;-1:-1:-1;;;;;;;31053:25:21;;;;;:19;:25;;;;;;:30;;30948:142::o;30018:243::-;30167:16;;30123:7;;-1:-1:-1;;;;;30150:33:21;30158:4;30150:33;30142:52;;;;-1:-1:-1;;;30142:52:21;;62074:2:32;30142:52:21;;;62056:21:32;62113:1;62093:18;;;62086:29;-1:-1:-1;;;62131:18:32;;;62124:36;62177:18;;30142:52:21;61872:329:32;30142:52:21;30222:31;;-1:-1:-1;;;30222:31:21;;:6;;:24;;:31;;30247:5;;30222:31;;;:::i;2601:287:2:-;1851:1;2733:7;;:19;2725:63;;;;-1:-1:-1;;;2725:63:2;;64860:2:32;2725:63:2;;;64842:21:32;64899:2;64879:18;;;64872:30;64938:33;64918:18;;;64911:61;64989:18;;2725:63:2;64658:355:32;2725:63:2;1851:1;2863:7;:18;2601:287::o;31680:628:21:-;31936:6;;32099:22;;;;32162:33;;;;31903:6;32209:28;;;:12;:28;;;;;:38;31903:6;;-1:-1:-1;;;;;31936:6:21;;:39;;31989:17;;32020:6;;32040:17;;32071:14;;32143:4;;32162:33;32209:38;;:42;;;;:82;;-1:-1:-1;32255:28:21;;;;:12;:28;;;;;:36;-1:-1:-1;;;32255:36:21;;;;32209:82;31936:365;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31921:380;31680:628;-1:-1:-1;;;;;;31680:628:21:o;32730:1576::-;32902:4;32992:1;32983:6;:10;:59;;;;;33029:5;:13;;;33015:5;:11;;;:27;;;;:::i;:::-;33005:6;32997:45;32983:59;32979:102;;;-1:-1:-1;33065:5:21;33058:12;;32979:102;33130:6;;:59;;-1:-1:-1;;;33130:59:21;;;;;683:25:32;;;33091:36:21;;-1:-1:-1;;;;;33130:6:21;;:51;;656:18:32;;33130:59:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;33130:59:21;;;;;;;;;;;;:::i;:::-;33091:98;;33240:1;33207:23;:30;:34;33199:67;;;;-1:-1:-1;;;33199:67:21;;66288:2:32;33199:67:21;;;66270:21:32;66327:2;66307:18;;;66300:30;-1:-1:-1;;;66346:18:32;;;66339:50;66406:18;;33199:67:21;66086:344:32;33199:67:21;33277:34;33314:67;33348:23;33314:20;:67::i;:::-;33277:104;;33521:14;33565:5;:20;;;33538:5;:24;;;:47;;;;:::i;:::-;33521:64;;;;33628:9;33599:26;:38;33595:81;;;33660:5;33653:12;;;;;;;33595:81;33731:13;33748:1;33731:18;33727:60;;33772:4;33765:11;;;;;;;33727:60;33833:6;;33907:26;;;;33797:33;;-1:-1:-1;;;;;33833:6:21;;:51;;:6;;33898:35;;;;:6;:35;:::i;:::-;:39;;;;:::i;:::-;33833:114;;;;;;;;;;;;;683:25:32;;671:2;656:18;;537:177;33833:114:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;33833:114:21;;;;;;;;;;;;:::i;:::-;33797:150;;33995:1;33965:20;:27;:31;33957:50;;;;-1:-1:-1;;;33957:50:21;;66637:2:32;33957:50:21;;;66619:21:32;66676:1;66656:18;;;66649:29;-1:-1:-1;;;66694:18:32;;;66687:36;66740:18;;33957:50:21;66435:329:32;33957:50:21;34018:31;34052:64;34086:20;34052;:64::i;:::-;34018:98;;34226:5;:14;;;34200:40;;:23;:40;;;;:::i;:::-;34184:13;:56;34180:98;;;34263:4;34256:11;;;;;;;;;34180:98;-1:-1:-1;34294:5:21;;32730:1576;-1:-1:-1;;;;;;;;;32730:1576:21:o;30267:94::-;30318:4;30345:1;30341;:5;:13;;30353:1;30341:13;;;30349:1;30341:13;30334:20;30267:94;-1:-1:-1;;;30267:94:21:o;30434:145::-;-1:-1:-1;;;;;30504:14:21;;;;;;:8;:14;;;;;:24;;30522:6;;30504:14;:24;;30522:6;;30504:24;:::i;:::-;;;;-1:-1:-1;;30543:29:21;;;;;;30559:4;;30565:6;;30543:29;:::i;1620:130:0:-;965:10:4;1683:7:0;:5;:7::i;:::-;-1:-1:-1;;;;;1683:23:0;;1675:68;;;;-1:-1:-1;;;1675:68:0;;66971:2:32;1675:68:0;;;66953:21:32;;;66990:18;;;66983:30;67049:34;67029:18;;;67022:62;67101:18;;1675:68:0;66769:356:32;2687:187:0;2779:6;;;-1:-1:-1;;;;;2795:17:0;;;-1:-1:-1;;;;;;2795:17:0;;;;;;;2827:40;;2779:6;;;2795:17;2779:6;;2827:40;;2760:16;;2827:40;2750:124;2687:187;:::o;35701:364:21:-;35804:6;35843:10;:6;35852:1;35843:10;:::i;:::-;35830:2;:9;:23;;35822:42;;;;-1:-1:-1;;;35822:42:21;;67332:2:32;35822:42:21;;;67314:21:32;67371:1;67351:18;;;67344:29;-1:-1:-1;;;67389:18:32;;;67382:36;67435:18;;35822:42:21;67130:329:32;35822:42:21;36055:2;36035;36038:10;:6;36047:1;36038:10;:::i;:::-;36035:14;;;;;;;;:::i;:::-;;;;;;;36022:35;;36007:2;35987;35990:10;:6;35999:1;35990:10;:::i;:::-;35987:14;;;;;;;;:::i;:::-;;;;;;;35974:35;;35960:1;35940:2;35943:10;:6;35952:1;35943:10;:::i;:::-;35940:14;;;;;;;;:::i;:::-;;;;;35903:10;;35940:14;;;;;35927:34;;;;35903:2;;35906:6;;35903:10;;;;;;:::i;:::-;;;;;;;35890:72;:120;:168;;-1:-1:-1;35701:364:21;;;;:::o;30585:145::-;-1:-1:-1;;;;;30655:14:21;;;;;;:8;:14;;;;;:24;;30673:6;;30655:14;:24;;30673:6;;30655:24;:::i;:::-;;;;-1:-1:-1;;30694:29:21;;;;;;30710:4;;30716:6;;30694:29;:::i;34312:853::-;34522:6;;:51;;-1:-1:-1;;;34522:51:21;;;;;683:25:32;;;34467:4:21;;;;-1:-1:-1;;;;;34522:6:21;;;;:40;;656:18:32;;34522:51:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34522:51:21;;;;;;;;;;;;:::i;:::-;34483:90;;34624:1;34591:23;:30;:34;34583:53;;;;-1:-1:-1;;;34583:53:21;;67666:2:32;34583:53:21;;;67648:21:32;67705:1;67685:18;;;67678:29;-1:-1:-1;;;67723:18:32;;;67716:36;67769:18;;34583:53:21;67464:329:32;34583:53:21;34647:34;34684:45;34705:23;34684:20;:45::i;:::-;34908:12;;34887:18;;;;34830:25;;;;:14;:25;;;;;:42;34647:82;;-1:-1:-1;34908:12:21;;34830:75;;;;;;:::i;:::-;:90;;;;:::i;:::-;34801:26;:119;34797:161;;;34943:4;34936:11;;;;;;34797:161;35046:5;:16;;;35028:34;;:15;:34;:70;;;;35081:5;:17;;;35066:32;;:12;:32;35028:70;35024:112;;;35121:4;35114:11;;;;;;35024:112;-1:-1:-1;35153:5:21;;34312:853;-1:-1:-1;;;;;34312:853:21:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;719:127:32:-;780:10;775:3;771:20;768:1;761:31;811:4;808:1;801:15;835:4;832:1;825:15;851:255;923:2;917:9;965:6;953:19;;-1:-1:-1;;;;;987:34:32;;1023:22;;;984:62;981:88;;;1049:18;;:::i;:::-;1085:2;1078:22;851:255;:::o;1111:::-;1183:2;1177:9;1225:6;1213:19;;-1:-1:-1;;;;;1247:34:32;;1283:22;;;1244:62;1241:88;;;1309:18;;:::i;1371:253::-;1443:2;1437:9;1485:4;1473:17;;-1:-1:-1;;;;;1505:34:32;;1541:22;;;1502:62;1499:88;;;1567:18;;:::i;1629:275::-;1700:2;1694:9;1765:2;1746:13;;-1:-1:-1;;1742:27:32;1730:40;;-1:-1:-1;;;;;1785:34:32;;1821:22;;;1782:62;1779:88;;;1847:18;;:::i;:::-;1883:2;1876:22;1629:275;;-1:-1:-1;1629:275:32:o;1909:177::-;1977:20;;-1:-1:-1;;;;;;2026:35:32;;2016:46;;2006:74;;2076:1;2073;2066:12;2091:131;-1:-1:-1;;;;;2166:31:32;;2156:42;;2146:70;;2212:1;2209;2202:12;2227:134;2295:20;;2324:31;2295:20;2324:31;:::i;2366:186::-;2414:4;-1:-1:-1;;;;;2436:30:32;;2433:56;;;2469:18;;:::i;:::-;-1:-1:-1;2535:2:32;2514:15;-1:-1:-1;;2510:29:32;2541:4;2506:40;;2366:186::o;2557:462::-;2599:5;2652:3;2645:4;2637:6;2633:17;2629:27;2619:55;;2670:1;2667;2660:12;2619:55;2706:6;2693:20;2737:48;2753:31;2781:2;2753:31;:::i;:::-;2737:48;:::i;:::-;2810:2;2801:7;2794:19;2856:3;2849:4;2844:2;2836:6;2832:15;2828:26;2825:35;2822:55;;;2873:1;2870;2863:12;2822:55;2938:2;2931:4;2923:6;2919:17;2912:4;2903:7;2899:18;2886:55;2986:1;2961:16;;;2979:4;2957:27;2950:38;;;;2965:7;2557:462;-1:-1:-1;;;2557:462:32:o;3024:163::-;3091:20;;3151:10;3140:22;;3130:33;;3120:61;;3177:1;3174;3167:12;3192:160;3258:20;;3318:1;3307:20;;;3297:31;;3287:59;;3342:1;3339;3332:12;3357:159;3424:20;;3484:6;3473:18;;3463:29;;3453:57;;3506:1;3503;3496:12;3521:118;3607:5;3600:13;3593:21;3586:5;3583:32;3573:60;;3629:1;3626;3619:12;3644:128;3709:20;;3738:28;3709:20;3738:28;:::i;3777:2005::-;3834:5;3882:6;3870:9;3865:3;3861:19;3857:32;3854:52;;;3902:1;3899;3892:12;3854:52;3924:22;;:::i;:::-;3915:31;;3969:29;3988:9;3969:29;:::i;:::-;3962:5;3955:44;4031:38;4065:2;4054:9;4050:18;4031:38;:::i;:::-;4026:2;4019:5;4015:14;4008:62;4102:38;4136:2;4125:9;4121:18;4102:38;:::i;:::-;4097:2;4086:14;;4079:62;4192:2;4177:18;;4164:32;-1:-1:-1;;;;;4245:14:32;;;4242:34;;;4272:1;4269;4262:12;4242:34;4308:45;4349:3;4340:6;4329:9;4325:22;4308:45;:::i;:::-;4303:2;4296:5;4292:14;4285:69;4387:39;4421:3;4410:9;4406:19;4387:39;:::i;:::-;4381:3;4374:5;4370:15;4363:64;4480:3;4469:9;4465:19;4452:33;4436:49;;4510:2;4500:8;4497:16;4494:36;;;4526:1;4523;4516:12;4494:36;4563:47;4606:3;4595:8;4584:9;4580:24;4563:47;:::i;:::-;4557:3;4550:5;4546:15;4539:72;4672:3;4661:9;4657:19;4644:33;4638:3;4631:5;4627:15;4620:58;4739:3;4728:9;4724:19;4711:33;4705:3;4698:5;4694:15;4687:58;4764:3;4754:13;;4799:38;4833:2;4822:9;4818:18;4799:38;:::i;:::-;4794:2;4787:5;4783:14;4776:62;4857:3;4847:13;;4913:2;4902:9;4898:18;4885:32;4942:2;4932:8;4929:16;4926:36;;;4958:1;4955;4948:12;4926:36;4994:47;5037:3;5026:8;5015:9;5011:24;4994:47;:::i;:::-;4989:2;4982:5;4978:14;4971:71;;;;5061:3;5096:37;5129:2;5118:9;5114:18;5096:37;:::i;:::-;5080:14;;;5073:61;5153:3;5188:36;5205:18;;;5188:36;:::i;:::-;5172:14;;;5165:60;5244:3;5292:18;;;5279:32;5263:14;;;5256:56;5331:3;5366:37;5384:18;;;5366:37;:::i;:::-;5350:14;;;5343:61;5423:3;5458:37;5476:18;;;5458:37;:::i;:::-;5442:14;;;5435:61;5515:3;5550:37;5568:18;;;5550:37;:::i;:::-;5534:14;;;5527:61;5608:3;5644:38;5662:19;;;5644:38;:::i;:::-;5627:15;;;5620:63;5703:3;5739:36;5755:19;;;5739:36;:::i;:::-;5722:15;;;5715:61;5726:5;3777:2005;-1:-1:-1;;3777:2005:32:o;5787:352::-;5875:6;5928:2;5916:9;5907:7;5903:23;5899:32;5896:52;;;5944:1;5941;5934:12;5896:52;5971:23;;-1:-1:-1;;;;;6006:30:32;;6003:50;;;6049:1;6046;6039:12;6003:50;6072:61;6125:7;6116:6;6105:9;6101:22;6072:61;:::i;6326:180::-;6385:6;6438:2;6426:9;6417:7;6413:23;6409:32;6406:52;;;6454:1;6451;6444:12;6406:52;-1:-1:-1;6477:23:32;;6326:180;-1:-1:-1;6326:180:32:o;6511:870::-;6624:6;6632;6640;6648;6701:3;6689:9;6680:7;6676:23;6672:33;6669:53;;;6718:1;6715;6708:12;6669:53;6745:23;;-1:-1:-1;;;;;6817:14:32;;;6814:34;;;6844:1;6841;6834:12;6814:34;6867:49;6908:7;6899:6;6888:9;6884:22;6867:49;:::i;:::-;6857:59;;6969:2;6958:9;6954:18;6941:32;6925:48;;6998:2;6988:8;6985:16;6982:36;;;7014:1;7011;7004:12;6982:36;7037:51;7080:7;7069:8;7058:9;7054:24;7037:51;:::i;:::-;7027:61;;7138:2;7127:9;7123:18;7110:32;7097:45;;7151:28;7173:5;7151:28;:::i;:::-;7198:5;;-1:-1:-1;7256:2:32;7241:18;;7228:32;;7272:16;;;7269:36;;;7301:1;7298;7291:12;7269:36;;7324:51;7367:7;7356:8;7345:9;7341:24;7324:51;:::i;:::-;7314:61;;;6511:870;;;;;;;:::o;7579:811::-;7704:6;7712;7720;7728;7736;7744;7752;7760;7813:3;7801:9;7792:7;7788:23;7784:33;7781:53;;;7830:1;7827;7820:12;7781:53;7869:9;7856:23;7888:31;7913:5;7888:31;:::i;:::-;7938:5;-1:-1:-1;7990:2:32;7975:18;;7962:32;;-1:-1:-1;8041:2:32;8026:18;;8013:32;;-1:-1:-1;8064:37:32;8097:2;8082:18;;8064:37;:::i;:::-;8054:47;;8120:38;8153:3;8142:9;8138:19;8120:38;:::i;:::-;8110:48;;8205:3;8194:9;8190:19;8177:33;8167:43;;8257:3;8246:9;8242:19;8229:33;8219:43;;8314:3;8303:9;8299:19;8286:33;8328:30;8350:7;8328:30;:::i;:::-;8377:7;8367:17;;;7579:811;;;;;;;;;;;:::o;8395:247::-;8454:6;8507:2;8495:9;8486:7;8482:23;8478:32;8475:52;;;8523:1;8520;8513:12;8475:52;8562:9;8549:23;8581:31;8606:5;8581:31;:::i;9120:183::-;9180:4;-1:-1:-1;;;;;9202:30:32;;9199:56;;;9235:18;;:::i;:::-;-1:-1:-1;9280:1:32;9276:14;9292:4;9272:25;;9120:183::o;9308:891::-;9392:6;9423:2;9466;9454:9;9445:7;9441:23;9437:32;9434:52;;;9482:1;9479;9472:12;9434:52;9509:23;;-1:-1:-1;;;;;9544:30:32;;9541:50;;;9587:1;9584;9577:12;9541:50;9610:22;;9663:4;9655:13;;9651:27;-1:-1:-1;9641:55:32;;9692:1;9689;9682:12;9641:55;9728:2;9715:16;9751:60;9767:43;9807:2;9767:43;:::i;9751:60::-;9845:15;;;9927:1;9923:10;;;;9915:19;;9911:28;;;9876:12;;;;9951:19;;;9948:39;;;9983:1;9980;9973:12;9948:39;10007:11;;;;10027:142;10043:6;10038:3;10035:15;10027:142;;;10109:17;;10097:30;;10060:12;;;;10147;;;;10027:142;;;10188:5;9308:891;-1:-1:-1;;;;;;;9308:891:32:o;10204:104::-;-1:-1:-1;;;;;10270:31:32;10258:44;;10204:104::o;10313:250::-;10398:1;10408:113;10422:6;10419:1;10416:13;10408:113;;;10498:11;;;10492:18;10479:11;;;10472:39;10444:2;10437:10;10408:113;;;-1:-1:-1;;10555:1:32;10537:16;;10530:27;10313:250::o;10568:271::-;10610:3;10648:5;10642:12;10675:6;10670:3;10663:19;10691:76;10760:6;10753:4;10748:3;10744:14;10737:4;10730:5;10726:16;10691:76;:::i;:::-;10821:2;10800:15;-1:-1:-1;;10796:29:32;10787:39;;;;10828:4;10783:50;;10568:271;-1:-1:-1;;10568:271:32:o;10844:1665::-;11056:4;11085:2;11125;11114:9;11110:18;11155:2;11144:9;11137:21;11178:6;11213;11207:13;11244:6;11236;11229:22;11270:2;11260:12;;11303:2;11292:9;11288:18;11281:25;;11365:2;11355:6;11352:1;11348:14;11337:9;11333:30;11329:39;11403:2;11395:6;11391:15;11424:1;11434:1046;11448:6;11445:1;11442:13;11434:1046;;;11513:22;;;-1:-1:-1;;11509:36:32;11497:49;;11569:13;;11637:9;;11622:25;;11694:11;;;11688:18;-1:-1:-1;;;;;11684:44:32;11667:15;;;11660:69;11768:11;;;11762:18;11605:4;11800:15;;;11793:27;;;11605:4;11847:48;11879:15;;;11762:18;11847:48;:::i;:::-;11833:62;;;11918:4;11971:2;11967;11963:11;11957:18;12024:6;12016;12012:19;12007:2;11999:6;11995:15;11988:44;12059:41;12093:6;12077:14;12059:41;:::i;:::-;12045:55;;;;12123:4;12192:2;12188;12184:11;12178:18;12171:26;12164:34;12159:2;12151:6;12147:15;12140:59;;12222:4;12275:2;12271;12267:11;12261:18;12239:40;;12328:6;12320;12316:19;12311:2;12303:6;12299:15;12292:44;;12359:41;12393:6;12377:14;12359:41;:::i;:::-;12458:12;;;;12349:51;-1:-1:-1;;;12423:15:32;;;;11470:1;11463:9;11434:1046;;;-1:-1:-1;12497:6:32;;10844:1665;-1:-1:-1;;;;;;;;10844:1665:32:o;12514:1911::-;12572:5;12620:6;12608:9;12603:3;12599:19;12595:32;12592:52;;;12640:1;12637;12630:12;12592:52;12662:22;;:::i;:::-;12653:31;;12707:29;12726:9;12707:29;:::i;:::-;12700:5;12693:44;12769:38;12803:2;12792:9;12788:18;12769:38;:::i;:::-;12764:2;12753:14;;12746:62;12859:2;12844:18;;12831:32;-1:-1:-1;;;;;12912:14:32;;;12909:34;;;12939:1;12936;12929:12;12909:34;12975:45;13016:3;13007:6;12996:9;12992:22;12975:45;:::i;:::-;12970:2;12963:5;12959:14;12952:69;13053:38;13087:2;13076:9;13072:18;13053:38;:::i;:::-;13048:2;13041:5;13037:14;13030:62;13145:3;13134:9;13130:19;13117:33;13101:49;;13175:2;13165:8;13162:16;13159:36;;;13191:1;13188;13181:12;13159:36;13228:47;13271:3;13260:8;13249:9;13245:24;13228:47;:::i;:::-;13222:3;13215:5;13211:15;13204:72;13337:3;13326:9;13322:19;13309:33;13303:3;13296:5;13292:15;13285:58;13404:3;13393:9;13389:19;13376:33;13370:3;13363:5;13359:15;13352:58;13443:37;13475:3;13464:9;13460:19;13443:37;:::i;:::-;13437:3;13430:5;13426:15;13419:62;13500:3;13490:13;;13556:2;13545:9;13541:18;13528:32;13585:2;13575:8;13572:16;13569:36;;;13601:1;13598;13591:12;13569:36;13637:47;13680:3;13669:8;13658:9;13654:24;13637:47;:::i;:::-;13632:2;13625:5;13621:14;13614:71;;;;13704:3;13767:2;13756:9;13752:18;13739:32;13734:2;13727:5;13723:14;13716:56;;13791:3;13826:37;13859:2;13848:9;13844:18;13826:37;:::i;:::-;13810:14;;;13803:61;13883:3;13918:37;13936:18;;;13918:37;:::i;:::-;13902:14;;;13895:61;13975:3;14010:37;14028:18;;;14010:37;:::i;:::-;13994:14;;;13987:61;14067:3;14102:37;14120:18;;;14102:37;:::i;:::-;14086:14;;;14079:61;14159:3;14194:37;14212:18;;;14194:37;:::i;:::-;14178:14;;;14171:61;14251:3;14286:37;14304:18;;;14286:37;:::i;:::-;14270:14;;;14263:61;14344:3;14380:38;14398:19;;;14380:38;:::i;14430:354::-;14519:6;14572:2;14560:9;14551:7;14547:23;14543:32;14540:52;;;14588:1;14585;14578:12;14540:52;14615:23;;-1:-1:-1;;;;;14650:30:32;;14647:50;;;14693:1;14690;14683:12;14647:50;14716:62;14770:7;14761:6;14750:9;14746:22;14716:62;:::i;14789:1037::-;14940:6;14948;14956;14964;14972;15025:3;15013:9;15004:7;15000:23;14996:33;14993:53;;;15042:1;15039;15032:12;14993:53;15069:23;;-1:-1:-1;;;;;15141:14:32;;;15138:34;;;15168:1;15165;15158:12;15138:34;15191:61;15244:7;15235:6;15224:9;15220:22;15191:61;:::i;:::-;15181:71;;15305:2;15294:9;15290:18;15277:32;15261:48;;15334:2;15324:8;15321:16;15318:36;;;15350:1;15347;15340:12;15318:36;15373:51;15416:7;15405:8;15394:9;15390:24;15373:51;:::i;:::-;15363:61;;15477:2;15466:9;15462:18;15449:32;15433:48;;15506:2;15496:8;15493:16;15490:36;;;15522:1;15519;15512:12;15490:36;15545:51;15588:7;15577:8;15566:9;15562:24;15545:51;:::i;:::-;15535:61;;15649:2;15638:9;15634:18;15621:32;15605:48;;15678:2;15668:8;15665:16;15662:36;;;15694:1;15691;15684:12;15662:36;;15717:51;15760:7;15749:8;15738:9;15734:24;15717:51;:::i;:::-;14789:1037;;;;-1:-1:-1;14789:1037:32;;15815:3;15800:19;15787:33;;14789:1037;-1:-1:-1;;;14789:1037:32:o;16011:309::-;16076:6;16084;16137:2;16125:9;16116:7;16112:23;16108:32;16105:52;;;16153:1;16150;16143:12;16105:52;16189:9;16176:23;16166:33;;16249:2;16238:9;16234:18;16221:32;16262:28;16284:5;16262:28;:::i;:::-;16309:5;16299:15;;;16011:309;;;;;:::o;16325:573::-;16432:6;16440;16493:2;16481:9;16472:7;16468:23;16464:32;16461:52;;;16509:1;16506;16499:12;16461:52;16536:23;;-1:-1:-1;;;;;16608:14:32;;;16605:34;;;16635:1;16632;16625:12;16605:34;16658:62;16712:7;16703:6;16692:9;16688:22;16658:62;:::i;:::-;16648:72;;16773:2;16762:9;16758:18;16745:32;16729:48;;16802:2;16792:8;16789:16;16786:36;;;16818:1;16815;16808:12;16786:36;;16841:51;16884:7;16873:8;16862:9;16858:24;16841:51;:::i;:::-;16831:61;;;16325:573;;;;;:::o;16903:203::-;-1:-1:-1;;;;;17067:32:32;;;;17049:51;;17037:2;17022:18;;16903:203::o;17399:320::-;17467:6;17520:2;17508:9;17499:7;17495:23;17491:32;17488:52;;;17536:1;17533;17526:12;17488:52;17563:23;;-1:-1:-1;;;;;17598:30:32;;17595:50;;;17641:1;17638;17631:12;17595:50;17664:49;17705:7;17696:6;17685:9;17681:22;17664:49;:::i;17724:571::-;17830:6;17838;17891:2;17879:9;17870:7;17866:23;17862:32;17859:52;;;17907:1;17904;17897:12;17859:52;17934:23;;-1:-1:-1;;;;;18006:14:32;;;18003:34;;;18033:1;18030;18023:12;18003:34;18056:61;18109:7;18100:6;18089:9;18085:22;18056:61;:::i;18300:1316::-;18429:6;18437;18445;18453;18461;18514:3;18502:9;18493:7;18489:23;18485:33;18482:53;;;18531:1;18528;18521:12;18482:53;18554:23;;;-1:-1:-1;18596:2:32;18634:18;;;18621:32;-1:-1:-1;;;;;18702:14:32;;;18699:34;;;18729:1;18726;18719:12;18699:34;18752:49;18793:7;18784:6;18773:9;18769:22;18752:49;:::i;:::-;18742:59;;18848:2;18837:9;18833:18;18820:32;18810:42;;18899:2;18888:9;18884:18;18871:32;18861:42;;18956:3;18945:9;18941:19;18928:33;18912:49;;18986:2;18976:8;18973:16;18970:36;;;19002:1;18999;18992:12;18970:36;-1:-1:-1;19025:24:32;;19080:4;19072:13;;19068:27;-1:-1:-1;19058:55:32;;19109:1;19106;19099:12;19058:55;19145:2;19132:16;19168:60;19184:43;19224:2;19184:43;:::i;19168:60::-;19262:15;;;19344:1;19340:10;;;;19332:19;;19328:28;;;19293:12;;;;19368:19;;;19365:39;;;19400:1;19397;19390:12;19365:39;19424:11;;;;19444:142;19460:6;19455:3;19452:15;19444:142;;;19526:17;;19514:30;;19477:12;;;;19564;;;;19444:142;;;19605:5;19595:15;;;;;;;18300:1316;;;;;;;;:::o;20047:2439::-;20236:2;20225:9;20218:21;20248:53;20297:2;20286:9;20282:18;20273:6;20267:13;20248:53;:::i;:::-;20199:4;20348:2;20340:6;20336:15;20330:22;20361:52;20409:2;20398:9;20394:18;20380:12;20361:52;:::i;:::-;;20462:2;20454:6;20450:15;20444:22;20485:6;20527:2;20522;20511:9;20507:18;20500:30;20553:54;20602:3;20591:9;20587:19;20571:14;20553:54;:::i;:::-;20539:68;;20656:2;20648:6;20644:15;20638:22;20669:55;20719:3;20708:9;20704:19;20688:14;20669:55;:::i;:::-;;20773:3;20765:6;20761:16;20755:23;20801:2;20797:7;20869:2;20857:9;20849:6;20845:22;20841:31;20835:3;20824:9;20820:19;20813:60;20896:41;20930:6;20914:14;20896:41;:::i;:::-;20882:55;;20992:3;20984:6;20980:16;20974:23;20968:3;20957:9;20953:19;20946:52;21053:3;21045:6;21041:16;21035:23;21029:3;21018:9;21014:19;21007:52;21108:3;21100:6;21096:16;21090:23;21068:45;;21132:3;21144:52;21192:2;21181:9;21177:18;21161:14;19927:1;19916:20;19904:33;;19852:91;21144:52;21245:2;21237:6;21233:15;21227:22;21205:44;;;21268:3;21335:2;21323:9;21315:6;21311:22;21307:31;21302:2;21291:9;21287:18;21280:59;21362:41;21396:6;21380:14;21362:41;:::i;:::-;21428:15;;;21422:22;21463:3;21482:18;;;21475:30;;;;21542:15;;21536:22;21348:55;;-1:-1:-1;21536:22:32;-1:-1:-1;21577:3:32;;-1:-1:-1;21589:53:32;21623:18;;;21536:22;20024:10;20013:22;20001:35;;19948:94;21589:53;21679:15;;21673:22;;-1:-1:-1;21714:3:32;21726:53;21760:18;;;21673:22;20024:10;20013:22;20001:35;;19948:94;21726:53;21816:15;;21810:22;;-1:-1:-1;21851:3:32;21863:53;21897:18;;;21810:22;17187:6;17176:18;17164:31;;17111:90;21863:53;21953:15;;21947:22;;-1:-1:-1;21989:3:32;22001:54;22035:19;;;21947:22;17187:6;17176:18;17164:31;;17111:90;22001:54;22093:16;;22087:23;;-1:-1:-1;22130:3:32;22142:55;22177:19;;;22087:23;20024:10;20013:22;20001:35;;19948:94;22142:55;22235:16;;22229:23;;-1:-1:-1;22272:3:32;22284:55;22319:19;;;22229:23;20024:10;20013:22;20001:35;;19948:94;22284:55;22377:16;;22371:23;20024:10;20013:22;;22438:18;;;20001:35;22371:23;-1:-1:-1;22403:54:32;-1:-1:-1;22474:6:32;;20047:2439;-1:-1:-1;;;;20047:2439:32:o;22491:329::-;22693:2;22675:21;;;22732:1;22712:18;;;22705:29;-1:-1:-1;;;22765:2:32;22750:18;;22743:36;22811:2;22796:18;;22491:329::o;22825:127::-;22886:10;22881:3;22877:20;22874:1;22867:31;22917:4;22914:1;22907:15;22941:4;22938:1;22931:15;22957:128;23024:9;;;23045:11;;;23042:37;;;23059:18;;:::i;23300:329::-;23502:2;23484:21;;;23541:1;23521:18;;;23514:29;-1:-1:-1;;;23574:2:32;23559:18;;23552:36;23620:2;23605:18;;23300:329::o;23634:274::-;-1:-1:-1;;;;;23826:32:32;;;;23808:51;;23890:2;23875:18;;23868:34;23796:2;23781:18;;23634:274::o;23913:329::-;24115:2;24097:21;;;24154:1;24134:18;;;24127:29;-1:-1:-1;;;24187:2:32;24172:18;;24165:36;24233:2;24218:18;;23913:329::o;24247:::-;24449:2;24431:21;;;24488:1;24468:18;;;24461:29;-1:-1:-1;;;24521:2:32;24506:18;;24499:36;24567:2;24552:18;;24247:329::o;25583:255::-;-1:-1:-1;;;25785:20:32;;25830:1;25821:11;;25583:255::o;25843:289::-;25974:3;26012:6;26006:13;26028:66;26087:6;26082:3;26075:4;26067:6;26063:17;26028:66;:::i;:::-;26110:16;;;;;25843:289;-1:-1:-1;;25843:289:32:o;26137:329::-;26339:2;26321:21;;;26378:1;26358:18;;;26351:29;-1:-1:-1;;;26411:2:32;26396:18;;26389:36;26457:2;26442:18;;26137:329::o;26471:256::-;-1:-1:-1;;;26673:21:32;;26719:1;26710:11;;26471:256::o;26732:168::-;26805:9;;;26836;;26853:15;;;26847:22;;26833:37;26823:71;;26874:18;;:::i;26905:127::-;26966:10;26961:3;26957:20;26954:1;26947:31;26997:4;26994:1;26987:15;27021:4;27018:1;27011:15;27037:120;27077:1;27103;27093:35;;27108:18;;:::i;:::-;-1:-1:-1;27142:9:32;;27037:120::o;27162:112::-;27194:1;27220;27210:35;;27225:18;;:::i;:::-;-1:-1:-1;27259:9:32;;27162:112::o;27279:125::-;27344:9;;;27365:10;;;27362:36;;;27378:18;;:::i;27409:135::-;27448:3;27469:17;;;27466:43;;27489:18;;:::i;:::-;-1:-1:-1;27536:1:32;27525:13;;27409:135::o;27549:380::-;27628:1;27624:12;;;;27671;;;27692:61;;27746:4;27738:6;27734:17;27724:27;;27692:61;27799:2;27791:6;27788:14;27768:18;27765:38;27762:161;;27845:10;27840:3;27836:20;27833:1;27826:31;27880:4;27877:1;27870:15;27908:4;27905:1;27898:15;27762:161;;27549:380;;;:::o;28060:545::-;28162:2;28157:3;28154:11;28151:448;;;28198:1;28223:5;28219:2;28212:17;28268:4;28264:2;28254:19;28338:2;28326:10;28322:19;28319:1;28315:27;28309:4;28305:38;28374:4;28362:10;28359:20;28356:47;;;-1:-1:-1;28397:4:32;28356:47;28452:2;28447:3;28443:12;28440:1;28436:20;28430:4;28426:31;28416:41;;28507:82;28525:2;28518:5;28515:13;28507:82;;;28570:17;;;28551:1;28540:13;28507:82;;;28511:3;;;28060:545;;;:::o;28781:1352::-;28901:10;;-1:-1:-1;;;;;28923:30:32;;28920:56;;;28956:18;;:::i;:::-;28985:97;29075:6;29035:38;29067:4;29061:11;29035:38;:::i;:::-;29029:4;28985:97;:::i;:::-;29137:4;;29201:2;29190:14;;29218:1;29213:663;;;;29920:1;29937:6;29934:89;;;-1:-1:-1;29989:19:32;;;29983:26;29934:89;-1:-1:-1;;28738:1:32;28734:11;;;28730:24;28726:29;28716:40;28762:1;28758:11;;;28713:57;30036:81;;29183:944;;29213:663;28007:1;28000:14;;;28044:4;28031:18;;-1:-1:-1;;29249:20:32;;;29367:236;29381:7;29378:1;29375:14;29367:236;;;29470:19;;;29464:26;29449:42;;29562:27;;;;29530:1;29518:14;;;;29397:19;;29367:236;;;29371:3;29631:6;29622:7;29619:19;29616:201;;;29692:19;;;29686:26;-1:-1:-1;;29775:1:32;29771:14;;;29787:3;29767:24;29763:37;29759:42;29744:58;29729:74;;29616:201;-1:-1:-1;;;;;29863:1:32;29847:14;;;29843:22;29830:36;;-1:-1:-1;28781:1352:32:o;30391:329::-;30593:2;30575:21;;;30632:1;30612:18;;;30605:29;-1:-1:-1;;;30665:2:32;30650:18;;30643:36;30711:2;30696:18;;30391:329::o;32341:127::-;32402:10;32397:3;32393:20;32390:1;32383:31;32433:4;32430:1;32423:15;32457:4;32454:1;32447:15;32807:329;33009:2;32991:21;;;33048:1;33028:18;;;33021:29;-1:-1:-1;;;33081:2:32;33066:18;;33059:36;33127:2;33112:18;;32807:329::o;33141:394::-;33381:1;33377;33372:3;33368:11;33364:19;33356:6;33352:32;33341:9;33334:51;33421:6;33416:2;33405:9;33401:18;33394:34;33464:2;33459;33448:9;33444:18;33437:30;33315:4;33484:45;33525:2;33514:9;33510:18;33502:6;33484:45;:::i;33540:245::-;33607:6;33660:2;33648:9;33639:7;33635:23;33631:32;33628:52;;;33676:1;33673;33666:12;33628:52;33708:9;33702:16;33727:28;33749:5;33727:28;:::i;33790:329::-;33992:2;33974:21;;;34031:1;34011:18;;;34004:29;-1:-1:-1;;;34064:2:32;34049:18;;34042:36;34110:2;34095:18;;33790:329::o;36462:345::-;-1:-1:-1;;;;;36682:32:32;;;;36664:51;;36746:2;36731:18;;36724:34;;;;36789:2;36774:18;;36767:34;36652:2;36637:18;;36462:345::o;37176:2269::-;37291:12;;-1:-1:-1;;;;;;37129:35:32;37117:48;;37229:3;37257:6;37355:4;37348:5;37344:16;37338:23;37370:48;37412:4;37407:3;37403:14;37389:12;37370:48;:::i;:::-;;37466:4;37459:5;37455:16;37449:23;37481:50;37525:4;37520:3;37516:14;37500;37481:50;:::i;:::-;;37579:4;37572:5;37568:16;37562:23;37617:2;37610:4;37605:3;37601:14;37594:26;37641:47;37684:2;37679:3;37675:12;37659:14;37641:47;:::i;:::-;37629:59;;;37736:4;37729:5;37725:16;37719:23;37751:50;37795:4;37790:3;37786:14;37770;37751:50;:::i;:::-;;37849:4;37842:5;37838:16;37832:23;37897:3;37891:4;37887:14;37880:4;37875:3;37871:14;37864:38;37925:39;37959:4;37943:14;37925:39;:::i;:::-;37911:53;;;38013:4;38006:5;38002:16;37996:23;37989:4;37984:3;37980:14;37973:47;38069:4;38062:5;38058:16;38052:23;38045:4;38040:3;38036:14;38029:47;38095:6;38149:2;38142:5;38138:14;38132:21;38162:48;38206:2;38201:3;38197:12;38181:14;38162:48;:::i;:::-;;;38229:6;38283:2;38276:5;38272:14;38266:21;38329:3;38321:6;38317:16;38312:2;38307:3;38303:12;38296:38;38357:41;38391:6;38375:14;38357:41;:::i;:::-;38343:55;;;;38417:6;38471:2;38464:5;38460:14;38454:21;38484:47;38527:2;38522:3;38518:12;38502:14;20024:10;20013:22;20001:35;;19948:94;38484:47;;;38550:6;38604:2;38597:5;38593:14;38587:21;38617:46;38659:2;38654:3;38650:12;38634:14;19927:1;19916:20;19904:33;;19852:91;38617:46;-1:-1:-1;;38682:6:32;38724:14;;;38718:21;38704:12;;;38697:43;38759:6;38802:14;;;38796:21;20024:10;20013:22;;;38860:12;;;20001:35;;;;38892:6;38936:14;;;38930:21;20013:22;;38995:12;;;20001:35;39027:6;39071:14;;;39065:21;20013:22;;;39130:12;;;20001:35;39163:6;39207:15;;;39201:22;17187:6;17176:18;39267:13;;;17164:31;39301:6;39345:15;;;39339:22;8717:13;;8710:21;39403:13;;;8698:34;39370:47;8647:91;39450:348;39673:2;39662:9;39655:21;39636:4;39693:56;39745:2;39734:9;39730:18;39722:6;39693:56;:::i;:::-;39685:64;;39785:6;39780:2;39769:9;39765:18;39758:34;39450:348;;;;;:::o;39803:435::-;-1:-1:-1;;;;;40054:32:32;;;;40036:51;;40118:2;40103:18;;40096:34;;;;40173:14;40166:22;40161:2;40146:18;;40139:50;40220:2;40205:18;;40198:34;40023:3;40008:19;;39803:435::o;40535:531::-;40799:10;40791:6;40787:23;40776:9;40769:42;40847:6;40842:2;40831:9;40827:18;40820:34;40890:3;40885:2;40874:9;40870:18;40863:31;40750:4;40911:46;40952:3;40941:9;40937:19;40929:6;40911:46;:::i;:::-;41000:14;;40993:22;40988:2;40973:18;;40966:50;-1:-1:-1;41047:3:32;41032:19;41025:35;40903:54;40535:531;-1:-1:-1;;;40535:531:32:o;43075:329::-;43277:2;43259:21;;;43316:1;43296:18;;;43289:29;-1:-1:-1;;;43349:2:32;43334:18;;43327:36;43395:2;43380:18;;43075:329::o;44764:::-;44966:2;44948:21;;;45005:1;44985:18;;;44978:29;-1:-1:-1;;;45038:2:32;45023:18;;45016:36;45084:2;45069:18;;44764:329::o;46379:656::-;46640:6;46635:3;46628:19;46610:3;46676:6;46670:13;46692:73;46758:6;46753:2;46748:3;46744:12;46739:2;46731:6;46727:15;46692:73;:::i;:::-;46793:6;46788:3;46784:16;46774:26;;46861:1;46857;46853:2;46849:10;46845:18;46841:23;46833:6;46829:36;46824:2;46820;46816:11;46809:57;46897:6;46891:13;46913:74;46978:8;46973:2;46969;46965:11;46960:2;46952:6;46948:15;46913:74;:::i;:::-;47007:17;47026:2;47003:26;;46379:656;-1:-1:-1;;;;;;46379:656:32:o;47040:441::-;47093:5;47146:3;47139:4;47131:6;47127:17;47123:27;47113:55;;47164:1;47161;47154:12;47113:55;47193:6;47187:13;47224:48;47240:31;47268:2;47240:31;:::i;47224:48::-;47297:2;47288:7;47281:19;47343:3;47336:4;47331:2;47323:6;47319:15;47315:26;47312:35;47309:55;;;47360:1;47357;47350:12;47309:55;47373:77;47447:2;47440:4;47431:7;47427:18;47420:4;47412:6;47408:17;47373:77;:::i;47486:335::-;47565:6;47618:2;47606:9;47597:7;47593:23;47589:32;47586:52;;;47634:1;47631;47624:12;47586:52;47661:16;;-1:-1:-1;;;;;47689:30:32;;47686:50;;;47732:1;47729;47722:12;47686:50;47755:60;47807:7;47798:6;47787:9;47783:22;47755:60;:::i;47826:608::-;-1:-1:-1;;;48188:3:32;48181:16;48226:6;48222:1;48217:3;48213:11;48206:27;-1:-1:-1;;;48258:2:32;48253:3;48249:12;48242:25;48163:3;48296:6;48290:13;48312:75;48380:6;48375:2;48370:3;48366:12;48359:4;48351:6;48347:17;48312:75;:::i;:::-;48407:16;;;;48425:2;48403:25;;47826:608;-1:-1:-1;;;47826:608:32:o;48439:468::-;48662:2;48651:9;48644:21;48625:4;48688:45;48729:2;48718:9;48714:18;48706:6;48688:45;:::i;:::-;48781:9;48773:6;48769:22;48764:2;48753:9;48749:18;48742:50;48809:33;48835:6;48827;48809:33;:::i;:::-;48801:41;;;48892:6;48885:14;48878:22;48873:2;48862:9;48858:18;48851:50;48439:468;;;;;;:::o;49580:172::-;49647:10;49677;;;49689;;;49673:27;;49712:11;;;49709:37;;;49726:18;;:::i;:::-;49709:37;49580:172;;;;:::o;50425:226::-;50580:2;50569:9;50562:21;50543:4;50600:45;50641:2;50630:9;50626:18;50618:6;50600:45;:::i;50656:2007::-;50780:6;50811:2;50854;50842:9;50833:7;50829:23;50825:32;50822:52;;;50870:1;50867;50860:12;50822:52;50897:16;;-1:-1:-1;;;;;50962:14:32;;;50959:34;;;50989:1;50986;50979:12;50959:34;51027:6;51016:9;51012:22;51002:32;;51072:7;51065:4;51061:2;51057:13;51053:27;51043:55;;51094:1;51091;51084:12;51043:55;51123:2;51117:9;51146:60;51162:43;51202:2;51162:43;:::i;51146:60::-;51240:15;;;51322:1;51318:10;;;;51310:19;;51306:28;;;51271:12;;;;51346:19;;;51343:39;;;51378:1;51375;51368:12;51343:39;51410:2;51406;51402:11;51422:1211;51438:6;51433:3;51430:15;51422:1211;;;51517:3;51511:10;51553:2;51540:11;51537:19;51534:109;;;51597:1;51626:2;51622;51615:14;51534:109;51666:20;;51709:4;51737:16;;;-1:-1:-1;;51733:30:32;51729:39;-1:-1:-1;51726:129:32;;;51809:1;51838:2;51834;51827:14;51726:129;51881:22;;:::i;:::-;51945:2;51941;51937:11;51931:18;51997:2;51988:7;51984:16;51975:7;51972:29;51962:127;;52043:1;52072:2;52068;52061:14;51962:127;52102:22;;52148:2;52185:12;;;52179:19;52214:16;;;52211:109;;;52272:1;52302:3;52297;52290:16;52211:109;52356:64;52412:7;52407:2;52396:8;52392:2;52388:17;52384:26;52356:64;:::i;:::-;52340:14;;;52333:88;-1:-1:-1;52445:2:32;52490:12;;;52484:19;52467:15;;;52460:44;;;;52547:11;;;;52541:18;52524:15;;;52517:43;52573:18;;52611:12;;;;51455;;51422:1211;;;-1:-1:-1;52652:5:32;50656:2007;-1:-1:-1;;;;;;;;50656:2007:32:o;52668:184::-;52738:6;52791:2;52779:9;52770:7;52766:23;52762:32;52759:52;;;52807:1;52804;52797:12;52759:52;-1:-1:-1;52830:16:32;;52668:184;-1:-1:-1;52668:184:32:o;53525:848::-;53751:4;53799:3;53788:9;53784:19;53830:6;53819:9;53812:25;53856:2;53894:6;53889:2;53878:9;53874:18;53867:34;53937:6;53932:2;53921:9;53917:18;53910:34;53980:3;53975:2;53964:9;53960:18;53953:31;54004:6;54039;54033:13;54070:6;54062;54055:22;54108:3;54097:9;54093:19;54086:26;;54147:2;54139:6;54135:15;54121:29;;54168:1;54178:169;54192:6;54189:1;54186:13;54178:169;;;54253:13;;54241:26;;54322:15;;;;54287:12;;;;54214:1;54207:9;54178:169;;;-1:-1:-1;54364:3:32;;53525:848;-1:-1:-1;;;;;;;;;53525:848:32:o;54900:257::-;-1:-1:-1;;;;;55021:10:32;;;55033;;;55017:27;55064:20;;;;54971:18;55103:24;;;55093:58;;55131:18;;:::i;:::-;55093:58;;54900:257;;;;:::o;55496:307::-;55673:2;55662:9;55655:21;55636:4;55693:45;55734:2;55723:9;55719:18;55711:6;55693:45;:::i;:::-;55685:53;;55788:6;55781:14;55774:22;55769:2;55758:9;55754:18;55747:50;55496:307;;;;;:::o;55808:840::-;55934:3;55963:1;55996:6;55990:13;56026:36;56052:9;56026:36;:::i;:::-;56081:1;56098:18;;;56125:133;;;;56272:1;56267:356;;;;56091:532;;56125:133;-1:-1:-1;;56158:24:32;;56146:37;;56231:14;;56224:22;56212:35;;56203:45;;;-1:-1:-1;56125:133:32;;56267:356;56298:6;56295:1;56288:17;56328:4;56373:2;56370:1;56360:16;56398:1;56412:165;56426:6;56423:1;56420:13;56412:165;;;56504:14;;56491:11;;;56484:35;56547:16;;;;56441:10;;56412:165;;;56416:3;;;56606:6;56601:3;56597:16;56590:23;;56091:532;-1:-1:-1;56639:3:32;;55808:840;-1:-1:-1;;;;;;55808:840:32:o;59398:180::-;-1:-1:-1;;;;;59503:10:32;;;59515;;;59499:27;;59538:11;;;59535:37;;;59552:18;;:::i;59917:277::-;60112:2;60101:9;60094:21;60075:4;60132:56;60184:2;60173:9;60169:18;60161:6;60132:56;:::i;65018:1063::-;65388:4;65417:3;65447:2;65436:9;65429:21;65473:45;65514:2;65503:9;65499:18;65491:6;65473:45;:::i;:::-;65459:59;;65554:6;65549:2;65538:9;65534:18;65527:34;65609:9;65601:6;65597:22;65592:2;65581:9;65577:18;65570:50;65643:33;65669:6;65661;65643:33;:::i;:::-;65629:47;;65712:6;65707:2;65696:9;65692:18;65685:34;65768:9;65760:6;65756:22;65750:3;65739:9;65735:19;65728:51;65802:33;65828:6;65820;65802:33;:::i;:::-;-1:-1:-1;;;;;65872:32:32;;65892:3;65851:19;;65844:61;65942:22;;;65936:3;65921:19;;65914:51;65788:47;-1:-1:-1;65982:33:32;65788:47;66000:6;65982:33;:::i;:::-;65974:41;;;66066:6;66059:14;66052:22;66046:3;66035:9;66031:19;66024:51;65018:1063;;;;;;;;;;;:::o", "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.18;\npragma experimental ABIEncoderV2;\n\nimport \"./Bridge.sol\";\nimport \"./Quotes.sol\";\nimport \"./SignatureValidator.sol\";\nimport \"@rsksmart/btc-transaction-solidity-helper/contracts/BtcUtils.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol\";\n\n/**\n @title Contract that assists with the Flyover protocol\n */\n\ncontract LiquidityBridgeContract is Initializable, OwnableUpgradeable, ReentrancyGuardUpgradeable {\n uint16 constant public MAX_CALL_GAS_COST = 35000;\n uint16 constant public MAX_REFUND_GAS_LIMIT = 2300;\n\n uint8 constant public UNPROCESSED_QUOTE_CODE = 0;\n uint8 constant public CALL_DONE_CODE = 1;\n uint8 constant public PROCESSED_QUOTE_CODE = 2;\n\n int16 constant public BRIDGE_REFUNDED_USER_ERROR_CODE = - 100;\n int16 constant public BRIDGE_REFUNDED_LP_ERROR_CODE = - 200;\n int16 constant public BRIDGE_UNPROCESSABLE_TX_NOT_CONTRACT_ERROR_CODE = - 300;\n int16 constant public BRIDGE_UNPROCESSABLE_TX_INVALID_SENDER_ERROR_CODE = - 301;\n int16 constant public BRIDGE_UNPROCESSABLE_TX_ALREADY_PROCESSED_ERROR_CODE = - 302;\n int16 constant public BRIDGE_UNPROCESSABLE_TX_VALIDATIONS_ERROR = - 303;\n int16 constant public BRIDGE_UNPROCESSABLE_TX_VALUE_ZERO_ERROR = - 304;\n int16 constant public BRIDGE_UNPROCESSABLE_TX_UTXO_AMOUNT_SENT_BELOW_MINIMUM_ERROR =\n - 305;\n int16 constant public BRIDGE_GENERIC_ERROR = - 900;\n uint constant public MAX_UINT = 2 ** 256 - 1;\n uint constant public PAY_TO_ADDRESS_OUTPUT = 0;\n uint constant public QUOTE_HASH_OUTPUT = 1;\n\n struct Registry {\n uint32 timestamp;\n bool success;\n }\n\n struct PegoutRecord {\n uint256 depositTimestamp;\n bool completed;\n }\n\n struct LiquidityProvider {\n uint id;\n address provider;\n string name;\n string apiBaseUrl;\n bool status;\n string providerType;\n }\n\n event Register(uint id, address indexed from, uint256 amount);\n event Deposit(address from, uint256 amount);\n event CollateralIncrease(address from, uint256 amount);\n event PegoutCollateralIncrease(address from, uint256 amount);\n event Withdrawal(address from, uint256 amount);\n event WithdrawCollateral(address from, uint256 amount);\n event PegoutWithdrawCollateral(address from, uint256 amount);\n event Resigned(address from);\n event CallForUser(\n address indexed from,\n address indexed dest,\n uint gasLimit,\n uint value,\n bytes data,\n bool success,\n bytes32 quoteHash\n );\n event PegInRegistered(bytes32 indexed quoteHash, int256 transferredAmount);\n event Penalized(address liquidityProvider, uint penalty, bytes32 quoteHash);\n event BridgeCapExceeded(bytes32 quoteHash, int256 errorCode);\n event BalanceIncrease(address dest, uint amount);\n event BalanceDecrease(address dest, uint amount);\n event Refund(address dest, uint amount, bool success, bytes32 quoteHash);\n event PegOut(\n address from,\n uint256 amount,\n bytes32 quotehash,\n uint processed\n );\n event PegOutRefunded(bytes32 indexed quoteHash);\n event PegOutDeposit(\n bytes32 indexed quoteHash,\n address indexed sender,\n uint256 amount,\n uint256 timestamp\n );\n event PegOutUserRefunded(\n bytes32 indexed quoteHash,\n uint256 value,\n address userAddress\n );\n\n Bridge public bridge;\n mapping(address => uint256) private balances;\n mapping(address => uint256) private collateral;\n mapping(address => uint256) private pegoutCollateral;\n mapping(uint => LiquidityProvider) private liquidityProviders;\n mapping(bytes32 => Registry) private callRegistry;\n mapping(address => uint256) private resignationBlockNum;\n\n uint256 private minCollateral;\n uint256 private minPegIn;\n\n uint32 private rewardP;\n uint32 private resignDelayInBlocks;\n uint private dust;\n uint public providerId;\n\n uint private btcBlockTime;\n bool private mainnet;\n\n mapping(bytes32 => uint8) private processedQuotes;\n mapping(bytes32 => Quotes.PegOutQuote) private registeredPegoutQuotes;\n mapping(bytes32 => PegoutRecord) private pegoutRegistry;\n\n modifier onlyRegistered() {\n require(isRegistered(msg.sender), \"LBC001\");\n _;\n }\n\n modifier onlyRegisteredForPegout() {\n require(isRegisteredForPegout(msg.sender), \"LBC001\");\n _;\n }\n\n modifier onlyEoa() {\n require(tx.origin == msg.sender, \"LBC003\");\n _;\n }\n\n /**\n @param _bridgeAddress The address of the bridge contract\n @param _minimumCollateral The minimum required collateral for liquidity providers\n @param _minimumPegIn The minimum peg-in amount\n @param _rewardPercentage The percentage of the penalty fee that an honest party\n // receives when calling registerPegIn in case of a liquidity provider misbehaving\n @param _resignDelayBlocks The number of block confirmations that a liquidity\n // provider needs to wait before it can withdraw its collateral\n @param _dustThreshold Amount that is considered dust\n */\n function initialize(\n address payable _bridgeAddress,\n uint256 _minimumCollateral,\n uint256 _minimumPegIn,\n uint32 _rewardPercentage,\n uint32 _resignDelayBlocks,\n uint _dustThreshold,\n uint _btcBlockTime,\n bool _mainnet\n ) public initializer {\n require(_rewardPercentage <= 100, \"LBC004\");\n require(_minimumCollateral >= 0.03 ether, \"LBC072\");\n require(_resignDelayBlocks >= 60, \"LBC073\");\n __Ownable_init_unchained();\n bridge = Bridge(_bridgeAddress);\n minCollateral = _minimumCollateral;\n minPegIn = _minimumPegIn;\n rewardP = _rewardPercentage;\n resignDelayInBlocks = _resignDelayBlocks;\n dust = _dustThreshold;\n btcBlockTime = _btcBlockTime;\n mainnet = _mainnet;\n }\n\n modifier onlyOwnerAndProvider(uint _providerId) {\n require(\n msg.sender == owner() ||\n msg.sender == liquidityProviders[_providerId].provider,\n \"LBC005\"\n );\n _;\n }\n\n function setProviderStatus(\n uint _providerId,\n bool status\n ) public onlyOwnerAndProvider(_providerId) {\n liquidityProviders[_providerId].status = status;\n }\n\n receive() external payable {\n require(msg.sender == address(bridge), \"LBC007\");\n }\n\n function getProviderIds() external view returns (uint) {\n return providerId;\n }\n\n function getBridgeAddress() external view returns (address) {\n return address(bridge);\n }\n\n function getMinCollateral() public view returns (uint) {\n return minCollateral;\n }\n\n function getMinPegIn() external view returns (uint) {\n return minPegIn;\n }\n\n function getRewardPercentage() external view returns (uint) {\n return rewardP;\n }\n\n function getResignDelayBlocks() external view returns (uint) {\n return resignDelayInBlocks;\n }\n\n function getDustThreshold() external view returns (uint) {\n return dust;\n }\n\n function getRegisteredPegOutQuote(\n bytes32 quoteHash\n ) external view returns (Quotes.PegOutQuote memory) {\n return registeredPegoutQuotes[quoteHash];\n }\n\n function isPegOutQuoteCompleted(bytes32 quoteHash) external view returns (bool) {\n return pegoutRegistry[quoteHash].completed;\n }\n\n /**\n @dev Checks whether a liquidity provider can deliver a pegin service\n @return Whether the liquidity provider is registered and has enough locked collateral\n */\n function isOperational(address addr) external view returns (bool) {\n return isRegistered(addr) && collateral[addr] >= minCollateral;\n }\n\n /**\n @dev Checks whether a liquidity provider can deliver a pegout service\n @return Whether the liquidity provider is registered and has enough locked collateral\n */\n function isOperationalForPegout(address addr) external view returns (bool) {\n return\n isRegisteredForPegout(addr) &&\n pegoutCollateral[addr] >= minCollateral;\n }\n\n /**\n @dev Registers msg.sender as a liquidity provider with msg.value as collateral\n */\n function register(\n string memory _name,\n string memory _apiBaseUrl,\n bool _status,\n string memory _providerType\n ) external payable onlyEoa returns (uint) {\n //require(collateral[msg.sender] == 0, \"Already registered\");\n validateRegisterParameters(\n _name,\n _apiBaseUrl,\n _providerType\n );\n\n require(collateral[msg.sender] == 0 && pegoutCollateral[msg.sender] == 0, \"LBC070\");\n require(\n resignationBlockNum[msg.sender] == 0,\n \"LBC009\"\n );\n\n if (keccak256(abi.encodePacked(_providerType)) == keccak256(abi.encodePacked(\"pegin\"))) {\n require(msg.value >= minCollateral, \"LBC008\");\n collateral[msg.sender] = msg.value;\n } else if (keccak256(abi.encodePacked(_providerType)) == keccak256(abi.encodePacked(\"pegout\"))) {\n require(msg.value >= minCollateral, \"LBC008\");\n pegoutCollateral[msg.sender] = msg.value;\n } else {\n require(msg.value >= minCollateral * 2, \"LBC008\");\n uint halfMsgValue = msg.value / 2;\n collateral[msg.sender] = msg.value % 2 == 0 ? halfMsgValue : halfMsgValue + 1;\n pegoutCollateral[msg.sender] = halfMsgValue;\n }\n\n providerId++;\n liquidityProviders[providerId] = LiquidityProvider({\n id: providerId,\n provider: msg.sender,\n name: _name,\n apiBaseUrl: _apiBaseUrl,\n status: _status,\n providerType: _providerType\n });\n emit Register(providerId, msg.sender, msg.value);\n return (providerId);\n }\n\n /**\n @dev Validates input parameters for the register function\n */\n function validateRegisterParameters(\n string memory _name,\n string memory _apiBaseUrl,\n string memory _providerType\n ) internal pure {\n require(bytes(_name).length > 0, \"LBC010\");\n require(\n bytes(_apiBaseUrl).length > 0,\n \"LBC017\"\n );\n\n // Check if _providerType is one of the valid strings\n require(\n keccak256(abi.encodePacked(_providerType)) ==\n keccak256(abi.encodePacked(\"pegin\")) ||\n keccak256(abi.encodePacked(_providerType)) ==\n keccak256(abi.encodePacked(\"pegout\")) ||\n keccak256(abi.encodePacked(_providerType)) ==\n keccak256(abi.encodePacked(\"both\")),\n \"LBC018\"\n );\n }\n\n function getProviders(\n uint[] memory providerIds\n ) external view returns (LiquidityProvider[] memory) {\n LiquidityProvider[] memory providersToReturn = new LiquidityProvider[](\n providerIds.length\n );\n uint count = 0;\n\n for (uint i = 0; i < providerIds.length; i++) {\n uint id = providerIds[i];\n if (\n (isRegistered(liquidityProviders[id].provider) ||\n isRegisteredForPegout(liquidityProviders[id].provider)) &&\n liquidityProviders[id].status\n ) {\n providersToReturn[count] = liquidityProviders[id];\n count++;\n }\n }\n return providersToReturn;\n }\n\n /**\n @dev Increases the amount of collateral of the sender\n */\n function addCollateral() external payable onlyRegistered {\n collateral[msg.sender] += msg.value;\n emit CollateralIncrease(msg.sender, msg.value);\n }\n\n function addPegoutCollateral() external payable onlyRegisteredForPegout {\n pegoutCollateral[msg.sender] += msg.value;\n emit PegoutCollateralIncrease(msg.sender, msg.value);\n }\n\n /**\n @dev Increases the balance of the sender\n */\n function deposit() external payable onlyRegistered {\n increaseBalance(msg.sender, msg.value);\n }\n\n /**\n @dev Used to withdraw funds\n @param amount The amount to withdraw\n */\n function withdraw(uint256 amount) external {\n require(balances[msg.sender] >= amount, \"LBC019\");\n balances[msg.sender] -= amount;\n (bool success,) = msg.sender.call{value: amount}(\"\");\n require(success, \"LBC020\");\n emit Withdrawal(msg.sender, amount);\n }\n\n /**\n @dev Used to withdraw the locked collateral\n */\n function withdrawCollateral() external {\n require(resignationBlockNum[msg.sender] > 0, \"LBC021\");\n require(\n block.number - resignationBlockNum[msg.sender] >=\n resignDelayInBlocks,\n \"LBC022\"\n );\n uint amount = collateral[msg.sender];\n collateral[msg.sender] = 0;\n resignationBlockNum[msg.sender] = 0;\n (bool success,) = msg.sender.call{value: amount}(\"\");\n require(success, \"LBC020\");\n emit WithdrawCollateral(msg.sender, amount);\n }\n\n function withdrawPegoutCollateral() external {\n require(resignationBlockNum[msg.sender] > 0, \"LBC021\");\n require(\n block.number - resignationBlockNum[msg.sender] >=\n resignDelayInBlocks,\n \"LBC022\"\n );\n uint amount = pegoutCollateral[msg.sender];\n pegoutCollateral[msg.sender] = 0;\n resignationBlockNum[msg.sender] = 0;\n (bool success,) = msg.sender.call{value: amount}(\"\");\n require(success, \"LBC020\");\n emit PegoutWithdrawCollateral(msg.sender, amount);\n }\n\n /**\n @dev Used to resign as a liquidity provider\n */\n function resign() external onlyRegistered {\n require(resignationBlockNum[msg.sender] == 0, \"LBC023\");\n resignationBlockNum[msg.sender] = block.number;\n emit Resigned(msg.sender);\n }\n\n /**\n @dev Returns the amount of collateral of a liquidity provider\n @param addr The address of the liquidity provider\n @return The amount of locked collateral\n */\n function getCollateral(address addr) external view returns (uint256) {\n return collateral[addr];\n }\n\n function getPegoutCollateral(address addr) external view returns (uint256) {\n return pegoutCollateral[addr];\n }\n\n /**\n @dev Returns the amount of funds of a liquidity provider\n @param addr The address of the liquidity provider\n @return The balance of the liquidity provider\n */\n function getBalance(address addr) external view returns (uint256) {\n return balances[addr];\n }\n\n /**\n @dev Performs a call on behalf of a user\n @param quote The quote that identifies the service\n @return Boolean indicating whether the call was successful\n */\n function callForUser(\n Quotes.PeginQuote memory quote\n ) external payable onlyRegistered nonReentrant returns (bool) {\n require(\n msg.sender == quote.liquidityProviderRskAddress,\n \"LBC024\"\n );\n require(\n balances[quote.liquidityProviderRskAddress] + msg.value >=\n quote.value,\n \"LBC019\"\n );\n\n bytes32 quoteHash = validateAndHashQuote(quote);\n require(\n processedQuotes[quoteHash] == UNPROCESSED_QUOTE_CODE,\n \"LBC025\"\n );\n\n increaseBalance(quote.liquidityProviderRskAddress, msg.value);\n\n // This check ensures that the call cannot be performed with less gas than the agreed amount\n require(\n gasleft() >= quote.gasLimit + MAX_CALL_GAS_COST,\n \"LBC026\"\n );\n (bool success,) = quote.contractAddress.call{\n gas: quote.gasLimit,\n value: quote.value\n }(quote.data);\n\n require(block.timestamp <= type(uint32).max, \"LBC027\");\n callRegistry[quoteHash].timestamp = uint32(block.timestamp);\n\n if (success) {\n callRegistry[quoteHash].success = true;\n decreaseBalance(quote.liquidityProviderRskAddress, quote.value);\n }\n emit CallForUser(\n msg.sender,\n quote.contractAddress,\n quote.gasLimit,\n quote.value,\n quote.data,\n success,\n quoteHash\n );\n processedQuotes[quoteHash] = CALL_DONE_CODE;\n return success;\n }\n\n /**\n @dev Registers a peg-in transaction with the bridge and pays to the involved parties\n @param quote The quote of the service\n @param signature The signature of the quote\n @param btcRawTransaction The peg-in transaction\n @param partialMerkleTree The merkle tree path that proves transaction inclusion\n @param height The block that contains the peg-in transaction\n @return The total peg-in amount received from the bridge contract or an error code\n */\n function registerPegIn(\n Quotes.PeginQuote memory quote,\n bytes memory signature,\n bytes memory btcRawTransaction,\n bytes memory partialMerkleTree,\n uint256 height\n ) public nonReentrant returns (int256) {\n bytes32 quoteHash = validateAndHashQuote(quote);\n\n // TODO: allow multiple registerPegIns for the same quote with different transactions\n require(\n processedQuotes[quoteHash] <= CALL_DONE_CODE,\n \"LBC028\"\n );\n require(\n SignatureValidator.verify(\n quote.liquidityProviderRskAddress,\n quoteHash,\n signature\n ),\n \"LBC029\"\n );\n require(height < uint256(int256(type(int32).max)), \"LBC030\");\n\n int256 transferredAmountOrErrorCode = registerBridge(\n quote,\n btcRawTransaction,\n partialMerkleTree,\n height,\n quoteHash\n );\n\n require(\n transferredAmountOrErrorCode !=\n BRIDGE_UNPROCESSABLE_TX_VALIDATIONS_ERROR,\n \"LBC031\"\n );\n require(\n transferredAmountOrErrorCode !=\n BRIDGE_UNPROCESSABLE_TX_ALREADY_PROCESSED_ERROR_CODE,\n \"LBC032\"\n );\n require(\n transferredAmountOrErrorCode !=\n BRIDGE_UNPROCESSABLE_TX_VALUE_ZERO_ERROR,\n \"LBC033\"\n );\n require(\n transferredAmountOrErrorCode !=\n BRIDGE_UNPROCESSABLE_TX_UTXO_AMOUNT_SENT_BELOW_MINIMUM_ERROR,\n \"LBC034\"\n );\n require(\n transferredAmountOrErrorCode != BRIDGE_GENERIC_ERROR,\n \"LBC035\"\n );\n require(\n transferredAmountOrErrorCode > 0 ||\n transferredAmountOrErrorCode == BRIDGE_REFUNDED_LP_ERROR_CODE ||\n transferredAmountOrErrorCode == BRIDGE_REFUNDED_USER_ERROR_CODE,\n \"LBC036\"\n );\n\n if (\n shouldPenalizeLP(\n quote,\n transferredAmountOrErrorCode,\n callRegistry[quoteHash].timestamp,\n height\n )\n ) {\n uint penalizationAmount = min(\n quote.penaltyFee,\n collateral[quote.liquidityProviderRskAddress]\n ); // prevent underflow when collateral is less than penalty fee.\n collateral[quote.liquidityProviderRskAddress] -= penalizationAmount;\n emit Penalized(\n quote.liquidityProviderRskAddress,\n penalizationAmount,\n quoteHash\n );\n\n // pay reward to sender\n uint256 punisherReward = (penalizationAmount * rewardP) / 100;\n increaseBalance(msg.sender, punisherReward);\n }\n\n if (\n transferredAmountOrErrorCode == BRIDGE_REFUNDED_LP_ERROR_CODE ||\n transferredAmountOrErrorCode == BRIDGE_REFUNDED_USER_ERROR_CODE\n ) {\n // Bridge cap exceeded\n processedQuotes[quoteHash] = PROCESSED_QUOTE_CODE;\n delete callRegistry[quoteHash];\n emit BridgeCapExceeded(quoteHash, transferredAmountOrErrorCode);\n return transferredAmountOrErrorCode;\n }\n\n // the amount is safely assumed positive because it's already been\n // validated in lines 287/298 there's no (negative) error code being returned by the bridge.\n uint transferredAmount = uint(transferredAmountOrErrorCode);\n\n Quotes.checkAgreedAmount(quote, transferredAmount);\n\n if (callRegistry[quoteHash].timestamp > 0) {\n uint refundAmount;\n\n if (callRegistry[quoteHash].success) {\n refundAmount = min(\n transferredAmount,\n quote.value + quote.callFee\n );\n } else {\n refundAmount = min(transferredAmount, quote.callFee);\n }\n increaseBalance(quote.liquidityProviderRskAddress, refundAmount);\n uint remainingAmount = transferredAmount - refundAmount;\n\n if (remainingAmount > dust) {\n // refund rskRefundAddress, if remaining amount greater than dust\n (bool success,) = quote.rskRefundAddress.call{\n gas: MAX_REFUND_GAS_LIMIT,\n value: remainingAmount\n }(\"\");\n emit Refund(\n quote.rskRefundAddress,\n remainingAmount,\n success,\n quoteHash\n );\n\n if (!success) {\n // transfer funds to LP instead, if for some reason transfer to rskRefundAddress was unsuccessful\n increaseBalance(\n quote.liquidityProviderRskAddress,\n remainingAmount\n );\n }\n }\n } else {\n uint refundAmount = transferredAmount;\n\n if (quote.callOnRegister && refundAmount >= quote.value) {\n (bool callSuccess,) = quote.contractAddress.call{\n gas: quote.gasLimit,\n value: quote.value\n }(quote.data);\n emit CallForUser(\n msg.sender,\n quote.contractAddress,\n quote.gasLimit,\n quote.value,\n quote.data,\n callSuccess,\n quoteHash\n );\n\n if (callSuccess) {\n refundAmount -= quote.value;\n }\n }\n if (refundAmount > dust) {\n // refund rskRefundAddress, if refund amount greater than dust\n (bool success,) = quote.rskRefundAddress.call{\n gas: MAX_REFUND_GAS_LIMIT,\n value: refundAmount\n }(\"\");\n emit Refund(\n quote.rskRefundAddress,\n refundAmount,\n success,\n quoteHash\n );\n }\n }\n processedQuotes[quoteHash] = PROCESSED_QUOTE_CODE;\n delete callRegistry[quoteHash];\n emit PegInRegistered(quoteHash, transferredAmountOrErrorCode);\n return transferredAmountOrErrorCode;\n }\n\n function depositPegout( // TODO convert to calldata when contract size issues are fixed\n Quotes.PegOutQuote memory quote,\n bytes memory signature\n ) external payable {\n require(isRegisteredForPegout(quote.lpRskAddress), \"LBC037\");\n require(quote.value + quote.callFee <= msg.value, \"LBC063\");\n require(block.timestamp <= quote.depositDateLimit, \"LBC065\");\n require(block.timestamp <= quote.expireDate, \"LBC046\");\n require(block.number <= quote.expireBlock, \"LBC047\");\n bytes32 quoteHash = hashPegoutQuote(quote);\n require(\n SignatureValidator.verify(quote.lpRskAddress, quoteHash, signature),\n \"LBC029\"\n );\n\n Quotes.PegOutQuote storage registeredQuote = registeredPegoutQuotes[quoteHash];\n\n require(pegoutRegistry[quoteHash].completed == false, \"LBC064\");\n require(registeredQuote.lbcAddress == address(0), \"LBC028\");\n registeredPegoutQuotes[quoteHash] = quote;\n pegoutRegistry[quoteHash].depositTimestamp = block.timestamp;\n emit PegOutDeposit(quoteHash, msg.sender, msg.value, block.timestamp);\n }\n\n function refundUserPegOut(\n bytes32 quoteHash\n ) public nonReentrant {\n Quotes.PegOutQuote storage quote = registeredPegoutQuotes[quoteHash];\n\n require(quote.lbcAddress != address(0), \"LBC042\");\n require(\n block.timestamp > quote.expireDate &&\n block.number > quote.expireBlock,\n \"LBC041\"\n );\n\n uint valueToTransfer = quote.value + quote.callFee;\n address addressToTransfer = quote.rskRefundAddress;\n\n uint penalty = min(quote.penaltyFee, pegoutCollateral[quote.lpRskAddress]);\n pegoutCollateral[quote.lpRskAddress] -= penalty;\n\n emit Penalized(quote.lpRskAddress, penalty, quoteHash);\n emit PegOutUserRefunded(\n quoteHash,\n valueToTransfer,\n quote.rskRefundAddress\n );\n\n delete registeredPegoutQuotes[quoteHash];\n pegoutRegistry[quoteHash].completed = true;\n\n (bool sent,) = addressToTransfer.call{value: valueToTransfer}(\"\");\n require(sent, \"LBC044\");\n }\n\n function refundPegOut(\n bytes32 quoteHash,\n bytes memory btcTx,\n bytes32 btcBlockHeaderHash,\n uint256 partialMerkleTree,\n bytes32[] memory merkleBranchHashes\n ) public nonReentrant onlyRegisteredForPegout {\n require(pegoutRegistry[quoteHash].completed == false, \"LBC064\");\n Quotes.PegOutQuote storage quote = registeredPegoutQuotes[quoteHash];\n require(quote.lbcAddress != address(0), \"LBC042\");\n BtcUtils.TxRawOutput[] memory outputs = BtcUtils.getOutputs(btcTx);\n bytes32 txQuoteHash = abi.decode(BtcUtils.parseNullDataScript(outputs[QUOTE_HASH_OUTPUT].pkScript), (bytes32));\n require(quoteHash == txQuoteHash, \"LBC069\");\n require(msg.sender == quote.lpRskAddress, \"LBC048\");\n require(\n bridge.getBtcTransactionConfirmations(\n BtcUtils.hashBtcTx(btcTx),\n btcBlockHeaderHash,\n partialMerkleTree,\n merkleBranchHashes\n ) >= int(uint256(quote.transferConfirmations)),\n \"LBC049\"\n );\n require(quote.value <= outputs[PAY_TO_ADDRESS_OUTPUT].value * (10**10), \"LBC067\"); // satoshi to wei\n bytes memory btcTxDestination = BtcUtils.parsePayToPubKeyHash(outputs[PAY_TO_ADDRESS_OUTPUT]\n .pkScript, mainnet);\n require(keccak256(quote.deposityAddress) == keccak256(btcTxDestination), \"LBC068\");\n\n if (\n shouldPenalizePegOutLP(\n quote,\n txQuoteHash,\n btcBlockHeaderHash\n )\n ) {\n uint penalty = min(\n quote.penaltyFee,\n pegoutCollateral[quote.lpRskAddress]\n );\n pegoutCollateral[quote.lpRskAddress] -= penalty;\n emit Penalized(quote.lpRskAddress, penalty, txQuoteHash);\n }\n\n (bool sent,) = quote.lpRskAddress.call{\n value: quote.value + quote.callFee\n }(\"\");\n require(sent, \"LBC050\");\n\n delete registeredPegoutQuotes[txQuoteHash];\n pegoutRegistry[txQuoteHash].completed = true;\n emit PegOutRefunded(txQuoteHash);\n }\n\n function validatePeginDepositAddress(\n Quotes.PeginQuote memory quote,\n bytes memory depositAddress\n ) external view returns (bool) {\n bytes32 derivationValue = keccak256(\n bytes.concat(\n hashQuote(quote),\n quote.btcRefundAddress,\n bytes20(quote.lbcAddress),\n quote.liquidityProviderBtcAddress\n )\n );\n bytes memory flyoverRedeemScript = bytes.concat(\n hex\"20\",\n derivationValue,\n hex\"75\",\n bridge.getActivePowpegRedeemScript()\n );\n return BtcUtils.validateP2SHAdress(depositAddress, flyoverRedeemScript, mainnet);\n }\n\n /**\n @dev Calculates hash of a quote. Note: besides calculation this function also validates the quote.\n @param quote The quote of the service\n @return The hash of a quote\n */\n function hashQuote(Quotes.PeginQuote memory quote) public view returns (bytes32) {\n return validateAndHashQuote(quote);\n }\n\n function hashPegoutQuote(\n Quotes.PegOutQuote memory quote\n ) public view returns (bytes32) {\n return validateAndHashPegOutQuote(quote);\n }\n\n function validateAndHashQuote(\n Quotes.PeginQuote memory quote\n ) private view returns (bytes32) {\n require(address(this) == quote.lbcAddress, \"LBC051\");\n require(\n address(bridge) != quote.contractAddress,\n \"LBC052\"\n );\n require(\n quote.btcRefundAddress.length == 21 ||\n quote.btcRefundAddress.length == 33,\n \"LBC053\"\n );\n require(\n quote.liquidityProviderBtcAddress.length == 21,\n \"LBC054\"\n );\n require(\n quote.value + quote.callFee >= minPegIn,\n \"LBC055\"\n );\n require(\n type(uint32).max >= uint64(quote.agreementTimestamp) + uint64(quote.timeForDeposit),\n \"LBC071\"\n );\n\n return keccak256(Quotes.encodeQuote(quote));\n }\n\n function validateAndHashPegOutQuote(\n Quotes.PegOutQuote memory quote\n ) private view returns (bytes32) {\n require(address(this) == quote.lbcAddress, \"LBC056\");\n\n return keccak256(Quotes.encodePegOutQuote(quote));\n }\n\n function min(uint a, uint b) private pure returns (uint) {\n return a < b ? a : b;\n }\n\n // IMPORTANT: These methods should remain private at all costs\n function increaseBalance(address dest, uint amount) private {\n balances[dest] += amount;\n emit BalanceIncrease(dest, amount);\n }\n\n function decreaseBalance(address dest, uint amount) private {\n balances[dest] -= amount;\n emit BalanceDecrease(dest, amount);\n }\n\n /**\n @dev Checks if a liquidity provider is registered\n @param addr The address of the liquidity provider\n @return Boolean indicating whether the liquidity provider is registered\n */\n function isRegistered(address addr) private view returns (bool) {\n return collateral[addr] > 0 && resignationBlockNum[addr] == 0;\n }\n\n function isRegisteredForPegout(address addr) private view returns (bool) {\n return pegoutCollateral[addr] > 0 && resignationBlockNum[addr] == 0;\n }\n\n /**\n @dev Registers a transaction with the bridge contract\n @param quote The quote of the service\n @param btcRawTransaction The peg-in transaction\n @param partialMerkleTree The merkle tree path that proves transaction inclusion\n @param height The block that contains the transaction\n @return The total peg-in amount received from the bridge contract or an error code\n */\n function registerBridge(\n Quotes.PeginQuote memory quote,\n bytes memory btcRawTransaction,\n bytes memory partialMerkleTree,\n uint256 height,\n bytes32 derivationHash\n ) private returns (int256) {\n return\n bridge.registerFastBridgeBtcTransaction(\n btcRawTransaction,\n height,\n partialMerkleTree,\n derivationHash,\n quote.btcRefundAddress,\n payable(this),\n quote.liquidityProviderBtcAddress,\n callRegistry[derivationHash].timestamp > 0 && callRegistry[derivationHash].success\n );\n }\n\n /**\n @dev Checks if a liquidity provider should be penalized\n @param quote The quote of the service\n @param amount The transferred amount or an error code\n @param callTimestamp The time that the liquidity provider called callForUser\n @param height The block height where the peg-in transaction is included\n @return Boolean indicating whether the penalty applies\n */\n function shouldPenalizeLP(\n Quotes.PeginQuote memory quote,\n int256 amount,\n uint256 callTimestamp,\n uint256 height\n ) private view returns (bool) {\n // do not penalize if deposit amount is insufficient\n if (amount > 0 && uint256(amount) < quote.value + quote.callFee) {\n return false;\n }\n\n bytes memory firstConfirmationHeader = bridge\n .getBtcBlockchainBlockHeaderByHeight(height);\n require(firstConfirmationHeader.length > 0, \"Invalid block height\");\n\n uint256 firstConfirmationTimestamp = getBtcBlockTimestamp(\n firstConfirmationHeader\n );\n\n // do not penalize if deposit was not made on time\n // prevent overflow when collateral is less than penalty fee.\n uint timeLimit = quote.agreementTimestamp + quote.timeForDeposit;\n if (firstConfirmationTimestamp > timeLimit) {\n return false;\n }\n\n // penalize if call was not made\n if (callTimestamp == 0) {\n return true;\n }\n\n bytes memory nConfirmationsHeader = bridge\n .getBtcBlockchainBlockHeaderByHeight(\n height + quote.depositConfirmations - 1\n );\n require(nConfirmationsHeader.length > 0, \"LBC058\");\n\n uint256 nConfirmationsTimestamp = getBtcBlockTimestamp(\n nConfirmationsHeader\n );\n\n // penalize if the call was not made on time\n if (callTimestamp > nConfirmationsTimestamp + quote.callTime) {\n return true;\n }\n return false;\n }\n\n function shouldPenalizePegOutLP(\n Quotes.PegOutQuote memory quote,\n bytes32 quoteHash,\n bytes32 blockHash\n ) private view returns (bool) {\n bytes memory firstConfirmationHeader = bridge.getBtcBlockchainBlockHeaderByHash(blockHash);\n require(firstConfirmationHeader.length > 0, \"LBC059\");\n\n uint256 firstConfirmationTimestamp = getBtcBlockTimestamp(firstConfirmationHeader);\n\n // penalize if the transfer was not made on time\n if (firstConfirmationTimestamp > pegoutRegistry[quoteHash].depositTimestamp +\n quote.transferTime + btcBlockTime) {\n return true;\n }\n\n // penalize if LP is refunding after expiration\n if (block.timestamp > quote.expireDate || block.number > quote.expireBlock) {\n return true;\n }\n\n return false;\n }\n\n /**\n @dev Gets the timestamp of a Bitcoin block header\n @param header The block header\n @return The timestamp of the block header\n */\n function getBtcBlockTimestamp(\n bytes memory header\n ) public pure returns (uint256) {\n // bitcoin header is 80 bytes and timestamp is 4 bytes from byte 68 to byte 71 (both inclusive)\n require(header.length == 80, \"LBC061\");\n\n return sliceUint32FromLSB(header, 68);\n }\n\n // bytes must have at least 28 bytes before the uint32\n function sliceUint32FromLSB(\n bytes memory bs,\n uint offset\n ) internal pure returns (uint32) {\n require(bs.length >= offset + 4, \"LBC062\");\n\n return\n uint32(uint8(bs[offset])) |\n (uint32(uint8(bs[offset + 1])) << 8) |\n (uint32(uint8(bs[offset + 2])) << 16) |\n (uint32(uint8(bs[offset + 3])) << 24);\n }\n}\n", - "sourcePath": "/Users/luischavez/iov/liquidity-bridge-contract/contracts/LiquidityBridgeContract.sol", + "sourcePath": "/Users/guilhermesoares/Desktop/RskCodebase/liquidity-bridge-contract/contracts/LiquidityBridgeContract.sol", "ast": { "absolutePath": "project:/contracts/LiquidityBridgeContract.sol", "exportedSymbols": { @@ -87810,7 +87810,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:09.274Z", + "updatedAt": "2024-05-22T08:30:02.463Z", "networkType": "ethereum", "devdoc": { "events": { diff --git a/build/contracts/LiquidityBridgeContractAdmin.json b/build/contracts/LiquidityBridgeContractAdmin.json index 27f1605..f730d1c 100644 --- a/build/contracts/LiquidityBridgeContractAdmin.json +++ b/build/contracts/LiquidityBridgeContractAdmin.json @@ -3744,7 +3744,7 @@ "sourceMap": "126:54:22:-:0;;;;;;;;;;;;-1:-1:-1;936:32:5;734:10:15;936:18:5;:32::i;:::-;126:54:22;;2426:187:5;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:5;;;-1:-1:-1;;;;;;2534:17:5;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;126:54:22:-;;;;;;;", "deployedSourceMap": "126:54:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;650:438:12;;;;;;;;;;-1:-1:-1;650:438:12;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1824:101:5;;;;;;;;;;;;;:::i;:::-;;1842:149:12;;;;;;;;;;-1:-1:-1;1842:149:12;;;;;:::i;:::-;;:::i;1201:85:5:-;;;;;;;;;;;;;:::i;2612:245:12:-;;;;;;:::i;:::-;;:::i;2196:150::-;;;;;;;;;;-1:-1:-1;2196:150:12;;;;;:::i;:::-;;:::i;2074:198:5:-;;;;;;;;;;-1:-1:-1;2074:198:5;;;;;:::i;:::-;;:::i;1248:420:12:-;;;;;;;;;;-1:-1:-1;1248:420:12;;;;;:::i;:::-;;:::i;650:438::-;747:7;924:12;938:23;973:5;-1:-1:-1;;;;;965:25:12;:40;;;;-1:-1:-1;;;3111:33:32;;3169:1;3160:11;;2910:267;965:40:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;923:82;;;;1023:7;1015:16;;;;;;1059:10;1048:33;;;;;;;;;;;;:::i;:::-;1041:40;650:438;-1:-1:-1;;;;650:438:12:o;1824:101:5:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;1842:149:12:-;1094:13:5;:11;:13::i;:::-;1957:27:12::1;::::0;-1:-1:-1;;;1957:27:12;;-1:-1:-1;;;;;1957:17:12;::::1;::::0;::::1;::::0;:27:::1;::::0;1975:8;;1957:27:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1842:149:::0;;:::o;1201:85:5:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:5;;1201:85::o;2612:245:12:-;1094:13:5;:11;:13::i;:::-;2788:62:12::1;::::0;-1:-1:-1;;;2788:62:12;;-1:-1:-1;;;;;2788:22:12;::::1;::::0;::::1;::::0;2818:9:::1;::::0;2788:62:::1;::::0;2829:14;;2845:4;;2788:62:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;2612:245:::0;;;:::o;2196:150::-;1094:13:5;:11;:13::i;:::-;2308:31:12::1;::::0;-1:-1:-1;;;2308:31:12;;-1:-1:-1;;;;;2308:15:12;::::1;::::0;::::1;::::0;:31:::1;::::0;2324:14;;2308:31:::1;;;:::i;2074:198:5:-:0;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2162:22:5;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:5;;4326:2:32;2154:73:5::1;::::0;::::1;4308:21:32::0;4365:2;4345:18;;;4338:30;4404:34;4384:18;;;4377:62;-1:-1:-1;;;4455:18:32;;;4448:36;4501:19;;2154:73:5::1;;;;;;;;;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;1248:420:12:-;1336:7;1504:12;1518:23;1553:5;-1:-1:-1;;;;;1545:25:12;:40;;;;-1:-1:-1;;;4732:33:32;;4790:1;4781:11;;4531:267;1359:130:5;734:10:15;1422:7:5;:5;:7::i;:::-;-1:-1:-1;;;;;1422:23:5;;1414:68;;;;-1:-1:-1;;;1414:68:5;;5005:2:32;1414:68:5;;;4987:21:32;;;5024:18;;;5017:30;5083:34;5063:18;;;5056:62;5135:18;;1414:68:5;4803:356:32;2426:187:5;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:5;;;-1:-1:-1;;;;;;2534:17:5;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;14:161:32:-;-1:-1:-1;;;;;119:31:32;;109:42;;99:70;;165:1;162;155:12;180:314;276:6;329:2;317:9;308:7;304:23;300:32;297:52;;;345:1;342;335:12;297:52;384:9;371:23;403:61;458:5;403:61;:::i;:::-;483:5;180:314;-1:-1:-1;;;180:314:32:o;499:203::-;-1:-1:-1;;;;;663:32:32;;;;645:51;;633:2;618:18;;499:203::o;707:485::-;812:6;820;873:2;861:9;852:7;848:23;844:32;841:52;;;889:1;886;879:12;841:52;928:9;915:23;947:61;1002:5;947:61;:::i;:::-;1027:5;-1:-1:-1;1084:2:32;1069:18;;1056:32;1097:63;1056:32;1097:63;:::i;:::-;1179:7;1169:17;;;707:485;;;;;:::o;1197:127::-;1258:10;1253:3;1249:20;1246:1;1239:31;1289:4;1286:1;1279:15;1313:4;1310:1;1303:15;1329:1294;1452:6;1460;1468;1521:2;1509:9;1500:7;1496:23;1492:32;1489:52;;;1537:1;1534;1527:12;1489:52;1576:9;1563:23;1595:61;1650:5;1595:61;:::i;:::-;1675:5;-1:-1:-1;1732:2:32;1717:18;;1704:32;1745:63;1704:32;1745:63;:::i;:::-;1827:7;-1:-1:-1;1885:2:32;1870:18;;1857:32;-1:-1:-1;;;;;1938:14:32;;;1935:34;;;1965:1;1962;1955:12;1935:34;2003:6;1992:9;1988:22;1978:32;;2048:7;2041:4;2037:2;2033:13;2029:27;2019:55;;2070:1;2067;2060:12;2019:55;2106:2;2093:16;2128:2;2124;2121:10;2118:36;;;2134:18;;:::i;:::-;2209:2;2203:9;2177:2;2263:13;;-1:-1:-1;;2259:22:32;;;2283:2;2255:31;2251:40;2239:53;;;2307:18;;;2327:22;;;2304:46;2301:72;;;2353:18;;:::i;:::-;2393:10;2389:2;2382:22;2428:2;2420:6;2413:18;2468:7;2463:2;2458;2454;2450:11;2446:20;2443:33;2440:53;;;2489:1;2486;2479:12;2440:53;2545:2;2540;2536;2532:11;2527:2;2519:6;2515:15;2502:46;2590:1;2585:2;2580;2572:6;2568:15;2564:24;2557:35;2611:6;2601:16;;;;;;;1329:1294;;;;;:::o;3182:289::-;3260:6;3313:2;3301:9;3292:7;3288:23;3284:32;3281:52;;;3329:1;3326;3319:12;3281:52;3361:9;3355:16;3380:61;3435:5;3380:61;:::i;3476:643::-;3680:1;3676;3671:3;3667:11;3663:19;3655:6;3651:32;3640:9;3633:51;3614:4;3703:2;3741;3736;3725:9;3721:18;3714:30;3773:6;3767:13;3816:6;3811:2;3800:9;3796:18;3789:34;3841:1;3851:140;3865:6;3862:1;3859:13;3851:140;;;3960:14;;;3956:23;;3950:30;3926:17;;;3945:2;3922:26;3915:66;3880:10;;3851:140;;;3855:3;4040:1;4035:2;4026:6;4015:9;4011:22;4007:31;4000:42;4110:2;4103;4099:7;4094:2;4086:6;4082:15;4078:29;4067:9;4063:45;4059:54;4051:62;;;;3476:643;;;;;:::o", "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.18;\n\nimport \"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol\";\n\ncontract LiquidityBridgeContractAdmin is ProxyAdmin {}", - "sourcePath": "/Users/luischavez/iov/liquidity-bridge-contract/contracts/LiquidityBridgeContractAdmin.sol", + "sourcePath": "/Users/guilhermesoares/Desktop/RskCodebase/liquidity-bridge-contract/contracts/LiquidityBridgeContractAdmin.sol", "ast": { "absolutePath": "project:/contracts/LiquidityBridgeContractAdmin.sol", "exportedSymbols": { @@ -3865,7 +3865,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.148Z", + "updatedAt": "2024-05-22T08:24:03.660Z", "devdoc": { "kind": "dev", "methods": { diff --git a/build/contracts/LiquidityBridgeContractProxy.json b/build/contracts/LiquidityBridgeContractProxy.json index 338f26d..d5f0a69 100644 --- a/build/contracts/LiquidityBridgeContractProxy.json +++ b/build/contracts/LiquidityBridgeContractProxy.json @@ -6603,7 +6603,7 @@ "sourceMap": "143:203:23:-:0;;;216:128;;;;;;;;;;;;;;;;;;:::i;:::-;312:6;319;327:5;312:6;327:5;1024:39:8;312:6:23;327:5;1057::8;1024:17;:39::i;:::-;-1:-1:-1;3773:20:13::1;::::0;-1:-1:-1;3786:6:13;3773:12:::1;:20::i;:::-;3663:137:::0;;;216:128:23;;;143:203;;2057:265:9;2165:29;2176:17;2165:10;:29::i;:::-;2222:1;2208:4;:11;:15;:28;;;;2227:9;2208:28;2204:112;;;2252:53;2281:17;2300:4;2252:28;;;;;:53;;:::i;:::-;;2204:112;2057:265;;;:::o;4300:135::-;4364:35;4377:11;:9;:11::i;:::-;4364:35;;;-1:-1:-1;;;;;1884:15:32;;;1866:34;;1936:15;;;1931:2;1916:18;;1909:43;1801:18;4364:35:9;;;;;;;4409:19;4419:8;4409:9;:19::i;:::-;4300:135;:::o;1771:152::-;1837:37;1856:17;1837:18;:37::i;:::-;1889:27;;-1:-1:-1;;;;;1889:27:9;;;;;;;;1771:152;:::o;6674:198:14:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:14:o;3784:122:9:-;3828:7;3854:39;-1:-1:-1;;;;;;;;;;;3881:11:9;;3854:26;;;;;:39;;:::i;:::-;:45;-1:-1:-1;;;;;3854:45:9;;3784:122;-1:-1:-1;3784:122:9:o;3988:201::-;-1:-1:-1;;;;;4051:22:9;;4043:73;;;;-1:-1:-1;;;4043:73:9;;2165:2:32;4043:73:9;;;2147:21:32;2204:2;2184:18;;;2177:30;2243:34;2223:18;;;2216:62;-1:-1:-1;;;2294:18:32;;;2287:36;2340:19;;4043:73:9;;;;;;;;;4174:8;4126:39;-1:-1:-1;;;;;;;;;;;4153:11:9;;4126:26;;;;;:39;;:::i;:::-;:56;;-1:-1:-1;;;;;;4126:56:9;-1:-1:-1;;;;;4126:56:9;;;;;;;;;;-1:-1:-1;3988:201:9:o;1406:259::-;1487:37;1506:17;1487:18;;;;;:37;;:::i;:::-;1479:95;;;;-1:-1:-1;;;1479:95:9;;2572:2:32;1479:95:9;;;2554:21:32;2611:2;2591:18;;;2584:30;2650:34;2630:18;;;2623:62;-1:-1:-1;;;2701:18:32;;;2694:43;2754:19;;1479:95:9;2370:409:32;1479:95:9;1641:17;1584:48;1030:66;1611:20;;1584:26;;;;;:48;;:::i;7058:325:14:-;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:14;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7223:67:14;;-1:-1:-1;7223:67:14;-1:-1:-1;7307:69:14;7334:6;7223:67;;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:14:o;1859:190:16:-;2029:4;1859:190::o;1412:320:14:-;-1:-1:-1;;;;;1702:19:14;;:23;;;1412:320::o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;8121:18;8132:6;8121:10;:18::i;:::-;8113:60;;;;-1:-1:-1;;;8113:60:14;;3278:2:32;8113:60:14;;;3260:21:32;3317:2;3297:18;;;3290:30;3356:31;3336:18;;;3329:59;3405:18;;8113:60:14;3076:353:32;8113:60:14;-1:-1:-1;8208:10:14;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:14;;;;;;;;:::i;14:177:32:-;93:13;;-1:-1:-1;;;;;135:31:32;;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:250;413:1;423:113;437:6;434:1;431:13;423:113;;;513:11;;;507:18;494:11;;;487:39;459:2;452:10;423:113;;;-1:-1:-1;;570:1:32;552:16;;545:27;328:250::o;583:1066::-;680:6;688;696;749:2;737:9;728:7;724:23;720:32;717:52;;;765:1;762;755:12;717:52;788:40;818:9;788:40;:::i;:::-;778:50;;847:49;892:2;881:9;877:18;847:49;:::i;:::-;940:2;925:18;;919:25;837:59;;-1:-1:-1;;;;;;993:14:32;;;990:34;;;1020:1;1017;1010:12;990:34;1058:6;1047:9;1043:22;1033:32;;1103:7;1096:4;1092:2;1088:13;1084:27;1074:55;;1125:1;1122;1115:12;1074:55;1154:2;1148:9;1176:2;1172;1169:10;1166:36;;;1182:18;;:::i;:::-;1257:2;1251:9;1225:2;1311:13;;-1:-1:-1;;1307:22:32;;;1331:2;1303:31;1299:40;1287:53;;;1355:18;;;1375:22;;;1352:46;1349:72;;;1401:18;;:::i;:::-;1441:10;1437:2;1430:22;1476:2;1468:6;1461:18;1516:7;1511:2;1506;1502;1498:11;1494:20;1491:33;1488:53;;;1537:1;1534;1527:12;1488:53;1550:68;1615:2;1610;1602:6;1598:15;1593:2;1589;1585:11;1550:68;:::i;:::-;1637:6;1627:16;;;;;;;583:1066;;;;;:::o;2784:287::-;2913:3;2951:6;2945:13;2967:66;3026:6;3021:3;3014:4;3006:6;3002:17;2967:66;:::i;:::-;3049:16;;;;;2784:287;-1:-1:-1;;2784:287:32:o;3434:396::-;3583:2;3572:9;3565:21;3546:4;3615:6;3609:13;3658:6;3653:2;3642:9;3638:18;3631:34;3674:79;3746:6;3741:2;3730:9;3726:18;3721:2;3713:6;3709:15;3674:79;:::i;:::-;3814:2;3793:15;-1:-1:-1;;3789:29:32;3774:45;;;;3821:2;3770:54;;3434:396;-1:-1:-1;;3434:396:32:o;:::-;143:203:23;;;;;;", "deployedSourceMap": "143:203:23:-:0;;;;;;2898:11:10;:9;:11::i;:::-;143:203:23;;2675:11:10;4407:1102:13;4482:11;:9;:11::i;:::-;-1:-1:-1;;;;;4468:25:13;:10;:25;4464:1039;;4509:16;-1:-1:-1;;;;;;4539:15:13;4557:7;;-1:-1:-1;;;4582:59:13;;4578:779;;4667:20;:18;:20::i;:::-;4661:26;;4578:779;;;-1:-1:-1;;;;;;;;;4712:66:13;;;4708:649;;4804:27;:25;:27::i;4708:649::-;-1:-1:-1;;;;;;;;;4856:61:13;;;4852:505;;4943:22;:20;:22::i;4852:505::-;-1:-1:-1;;;;;;;;;4990:55:13;;;4986:371;;5071:16;:14;:16::i;4986:371::-;-1:-1:-1;;;;;;;;;5112:64:13;;;5108:249;;5202:25;:23;:25::i;5108:249::-;5266:76;;-1:-1:-1;;;5266:76:13;;216:2:32;5266:76:13;;;198:21:32;255:2;235:18;;;228:30;294:34;274:18;;;267:62;365:34;345:18;;;338:62;-1:-1:-1;;;416:19:32;;;409:33;459:19;;5266:76:13;;;;;;;;5108:249;5426:3;5420:10;5413:4;5408:3;5404:14;5397:34;4464:1039;5475:17;:15;:17::i;:::-;4407:1102::o;6674:198:14:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:14:o;1859:190:16:-;2029:4;1859:190::o;1412:320:14:-;-1:-1:-1;;;;;1702:19:14;;:23;;;1412:320::o;3784:122:9:-;3828:7;-1:-1:-1;;;;;;;;;;;3854:39:9;:45;-1:-1:-1;;;;;3854:45:9;;3784:122;-1:-1:-1;3784:122:9:o;6985:255:13:-;7032:12;7056:19;:17;:19::i;:::-;7086:25;7125:12;:8;7134:1;7125:8;7086:25;7125:12;:::i;:::-;7114:35;;;;;;;:::i;:::-;7086:63;;7159:54;7177:17;7196:9;;;;;;;;;;;;7207:5;7159:17;:54::i;:::-;-1:-1:-1;;7224:9:13;;;;;;;;;-1:-1:-1;7224:9:13;;;6985:255::o;7524:254::-;7578:12;7603:25;;7662:12;:8;7671:1;7662:8;7603:25;7662:12;:::i;:::-;7651:42;;;;;;;:::i;:::-;7602:91;;;;7703:48;7721:17;7740:4;7746;7703:17;:48::i;:::-;7762:9;;;;;;;;;;;;;;;;7524:254;:::o;6694:216::-;6743:12;6767:19;:17;:19::i;:::-;6797:16;6827:12;:8;6836:1;6827:8;6797:16;6827:12;:::i;:::-;6816:35;;;;;;;:::i;:::-;6797:54;;6861:22;6874:8;6861:12;:22::i;5860:165::-;5903:12;5927:19;:17;:19::i;:::-;5957:13;5973:11;:9;:11::i;:::-;6001:17;;;-1:-1:-1;;;;;2530:32:32;;6001:17:13;;;2512:51:32;5957:27:13;;-1:-1:-1;2485:18:32;6001:17:13;;;;;;;;;;;;5994:24;;;5860:165;:::o;6385:198::-;6437:12;6461:19;:17;:19::i;:::-;6491:22;6516:17;:15;:17::i;2322:110:10:-;2397:28;2407:17;:15;:17::i;:::-;2397:9;:28::i;7058:325:14:-;7199:12;7224;7238:23;7265:6;-1:-1:-1;;;;;7265:19:14;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:14:o;8261:77:13:-;8316:9;:14;8308:23;;;;;2057:265:9;2165:29;2176:17;2165:10;:29::i;:::-;2222:1;2208:4;:11;:15;:28;;;;2227:9;2208:28;2204:112;;;2252:53;2281:17;2300:4;2252:28;:53::i;:::-;;2204:112;2057:265;;;:::o;4300:135::-;4364:35;4377:11;:9;:11::i;:::-;4364:35;;;-1:-1:-1;;;;;3351:15:32;;;3333:34;;3403:15;;;3398:2;3383:18;;3376:43;3268:18;4364:35:9;;;;;;;4409:19;4419:8;4409:9;:19::i;:::-;4300:135;:::o;1148:140:8:-;1215:12;1246:35;:33;:35::i;:::-;1239:42;;1148:140;:::o;948:895:10:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:66;;;;1796:16;1793:1;1786:27;1681:66;1716:16;1713:1;1706:27;7671:628:14;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;8121:18;8132:6;8121:10;:18::i;:::-;8113:60;;;;-1:-1:-1;;;8113:60:14;;3632:2:32;8113:60:14;;;3614:21:32;3671:2;3651:18;;;3644:30;3710:31;3690:18;;;3683:59;3759:18;;8113:60:14;3430:353:32;8113:60:14;-1:-1:-1;8208:10:14;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;1771:152:9:-;1837:37;1856:17;1837:18;:37::i;:::-;1889:27;;-1:-1:-1;;;;;1889:27:9;;;;;;;;1771:152;:::o;3988:201::-;-1:-1:-1;;;;;4051:22:9;;4043:73;;;;-1:-1:-1;;;4043:73:9;;3990:2:32;4043:73:9;;;3972:21:32;4029:2;4009:18;;;4002:30;4068:34;4048:18;;;4041:62;-1:-1:-1;;;4119:18:32;;;4112:36;4165:19;;4043:73:9;3788:402:32;4043:73:9;4174:8;-1:-1:-1;;;;;;;;;;;4126:39:9;:56;;-1:-1:-1;;;;;;4126:56:9;-1:-1:-1;;;;;4126:56:9;;;;;;;;;;-1:-1:-1;3988:201:9:o;1175:140::-;1228:7;-1:-1:-1;;;;;;;;;;;1254:48:9;1859:190:16;8821:540:14;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:14;;;;;;;;:::i;1406:259:9:-;1487:37;1506:17;1487:18;:37::i;:::-;1479:95;;;;-1:-1:-1;;;1479:95:9;;4798:2:32;1479:95:9;;;4780:21:32;4837:2;4817:18;;;4810:30;4876:34;4856:18;;;4849:62;-1:-1:-1;;;4927:18:32;;;4920:43;4980:19;;1479:95:9;4596:409:32;1479:95:9;1641:17;-1:-1:-1;;;;;;;;;;;1584:48:9;1859:190:16;489:331:32;594:9;605;647:8;635:10;632:24;629:44;;;669:1;666;659:12;629:44;698:6;688:8;685:20;682:40;;;718:1;715;708:12;682:40;-1:-1:-1;;744:23:32;;;789:25;;;;;-1:-1:-1;489:331:32:o;825:181::-;901:20;;-1:-1:-1;;;;;950:31:32;;940:42;;930:70;;996:1;993;986:12;930:70;825:181;;;:::o;1011:202::-;1078:6;1131:2;1119:9;1110:7;1106:23;1102:32;1099:52;;;1147:1;1144;1137:12;1099:52;1170:37;1197:9;1170:37;:::i;1218:127::-;1279:10;1274:3;1270:20;1267:1;1260:31;1310:4;1307:1;1300:15;1334:4;1331:1;1324:15;1350:1011;1435:6;1443;1496:2;1484:9;1475:7;1471:23;1467:32;1464:52;;;1512:1;1509;1502:12;1464:52;1535:37;1562:9;1535:37;:::i;:::-;1525:47;-1:-1:-1;1623:2:32;1608:18;;1595:32;-1:-1:-1;;;;;1676:14:32;;;1673:34;;;1703:1;1700;1693:12;1673:34;1741:6;1730:9;1726:22;1716:32;;1786:7;1779:4;1775:2;1771:13;1767:27;1757:55;;1808:1;1805;1798:12;1757:55;1844:2;1831:16;1866:2;1862;1859:10;1856:36;;;1872:18;;:::i;:::-;1947:2;1941:9;1915:2;2001:13;;-1:-1:-1;;1997:22:32;;;2021:2;1993:31;1989:40;1977:53;;;2045:18;;;2065:22;;;2042:46;2039:72;;;2091:18;;:::i;:::-;2131:10;2127:2;2120:22;2166:2;2158:6;2151:18;2206:7;2201:2;2196;2192;2188:11;2184:20;2181:33;2178:53;;;2227:1;2224;2217:12;2178:53;2283:2;2278;2274;2270:11;2265:2;2257:6;2253:15;2240:46;2328:1;2323:2;2318;2310:6;2306:15;2302:24;2295:35;2349:6;2339:16;;;;;;;1350:1011;;;;;:::o;2574:250::-;2659:1;2669:113;2683:6;2680:1;2677:13;2669:113;;;2759:11;;;2753:18;2740:11;;;2733:39;2705:2;2698:10;2669:113;;;-1:-1:-1;;2816:1:32;2798:16;;2791:27;2574:250::o;2829:287::-;2958:3;2996:6;2990:13;3012:66;3071:6;3066:3;3059:4;3051:6;3047:17;3012:66;:::i;:::-;3094:16;;;;;2829:287;-1:-1:-1;;2829:287:32:o;4195:396::-;4344:2;4333:9;4326:21;4307:4;4376:6;4370:13;4419:6;4414:2;4403:9;4399:18;4392:34;4435:79;4507:6;4502:2;4491:9;4487:18;4482:2;4474:6;4470:15;4435:79;:::i;:::-;4575:2;4554:15;-1:-1:-1;;4550:29:32;4535:45;;;;4582:2;4531:54;;4195:396;-1:-1:-1;;4195:396:32:o", "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.18;\n\nimport \"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\";\n\ncontract LiquidityBridgeContractProxy is TransparentUpgradeableProxy {\n constructor(address _logic, address _admin, bytes memory _data)\n TransparentUpgradeableProxy(_logic,_admin, _data) payable {}\n}", - "sourcePath": "/Users/luischavez/iov/liquidity-bridge-contract/contracts/LiquidityBridgeContractProxy.sol", + "sourcePath": "/Users/guilhermesoares/Desktop/RskCodebase/liquidity-bridge-contract/contracts/LiquidityBridgeContractProxy.sol", "ast": { "absolutePath": "project:/contracts/LiquidityBridgeContractProxy.sol", "exportedSymbols": { @@ -6889,7 +6889,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.149Z", + "updatedAt": "2024-05-22T08:24:03.664Z", "devdoc": { "events": { "AdminChanged(address,address)": { diff --git a/build/contracts/LiquidityBridgeContractV2.json b/build/contracts/LiquidityBridgeContractV2.json index daef104..cc843d4 100644 --- a/build/contracts/LiquidityBridgeContractV2.json +++ b/build/contracts/LiquidityBridgeContractV2.json @@ -452,7 +452,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -465,7 +466,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -478,7 +480,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -491,7 +494,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -504,7 +508,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -517,7 +522,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -530,7 +536,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -543,7 +550,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -556,7 +564,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -569,7 +578,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -582,7 +592,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -595,7 +606,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -608,7 +620,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -621,7 +634,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -634,7 +648,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -647,7 +662,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -660,7 +676,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -673,7 +690,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -686,7 +704,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -699,7 +718,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -712,7 +732,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -736,7 +757,8 @@ }, { "stateMutability": "payable", - "type": "receive" + "type": "receive", + "payable": true }, { "inputs": [ @@ -767,7 +789,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -780,7 +803,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -793,7 +817,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -806,7 +831,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -819,7 +845,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -832,7 +859,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], @@ -845,7 +873,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -864,7 +893,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -883,7 +913,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -902,7 +933,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -936,7 +968,8 @@ } ], "stateMutability": "payable", - "type": "function" + "type": "function", + "payable": true }, { "inputs": [ @@ -987,28 +1020,32 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [], "name": "addCollateral", "outputs": [], "stateMutability": "payable", - "type": "function" + "type": "function", + "payable": true }, { "inputs": [], "name": "addPegoutCollateral", "outputs": [], "stateMutability": "payable", - "type": "function" + "type": "function", + "payable": true }, { "inputs": [], "name": "deposit", "outputs": [], "stateMutability": "payable", - "type": "function" + "type": "function", + "payable": true }, { "inputs": [ @@ -1054,7 +1091,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -1073,7 +1111,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -1092,7 +1131,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -1213,7 +1253,8 @@ } ], "stateMutability": "payable", - "type": "function" + "type": "function", + "payable": true }, { "inputs": [ @@ -1469,7 +1510,8 @@ "name": "depositPegout", "outputs": [], "stateMutability": "payable", - "type": "function" + "type": "function", + "payable": true }, { "inputs": [ @@ -1641,7 +1683,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -1762,7 +1805,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -1878,7 +1922,8 @@ } ], "stateMutability": "view", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -47791,7 +47836,7 @@ "sourceMap": "481:33717:24:-:0;;;;;;;;;;;;;;;;;;;", "deployedSourceMap": "481:33717:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5027:6;;-1:-1:-1;;;;;5027:6:24;5005:10;:29;4997:48;;;;-1:-1:-1;;;4997:48:24;;216:2:32;4997:48:24;;;198:21:32;255:1;235:18;;;228:29;-1:-1:-1;;;273:18:32;;;266:36;319:18;;4997:48:24;;;;;;;;;481:33717;;;;;33647:549;;;;;;;;;;-1:-1:-1;33647:549:24;;;;;:::i;:::-;;:::i;752:40::-;;;;;;;;;;;;791:1;752:40;;;;;2919:4:32;2907:17;;;2889:36;;2877:2;2862:18;752:40:24;;;;;;;;798:46;;;;;;;;;;;;843:1;798:46;;5058:89;;;;;;;;;;-1:-1:-1;5130:10:24;;5058:89;;;3082:25:32;;;3070:2;3055:18;5058:89:24;2936:177:32;27056:161:24;;;;;;;;;;-1:-1:-1;27056:161:24;;;;;:::i;:::-;;:::i;14662:6502::-;;;;;;;;;;-1:-1:-1;14662:6502:24;;;;;:::i;:::-;;:::i;10357:292::-;;;;;;;;;;-1:-1:-1;10357:292:24;;;;;:::i;:::-;;:::i;5653:85::-;;;;;;;;;;-1:-1:-1;5727:4:24;;5653:85;;6717:2171;;;;;;:::i;:::-;;:::i;1392:94::-;;;;;;;;;;;;-1:-1:-1;;1392:94:24;;;;;11620:1:32;11609:21;;;;11591:40;;11579:2;11564:18;1392:94:24;11449:188:32;9885:192:24;;;:::i;6076:145::-;;;;;;;;;;-1:-1:-1;6076:145:24;;;;;:::i;:::-;;:::i;:::-;;;12155:14:32;;12148:22;12130:41;;12118:2;12103:18;6076:145:24;11990:187:32;6415:193:24;;;;;;;;;;-1:-1:-1;6415:193:24;;;;;:::i;:::-;;:::i;5744:139::-;;;;;;;;;;-1:-1:-1;5744:139:24;;;;;:::i;:::-;5818:4;5841:25;;;:14;:25;;;;;:35;;;;;;5744:139;10723:618;;;;;;;;;;;;;:::i;4232:35::-;;;;;;;;;;;;;;;;8894:736;;;;;;;;;;-1:-1:-1;8894:736:24;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11415:205::-;;;;;;;;;;;;;:::i;4273:37::-;;;;;;;;;;-1:-1:-1;4273:37:24;;;;-1:-1:-1;;;;;4273:37:24;;;;;;;;;;:::i;2085:101:0:-;;;;;;;;;;;;;:::i;4767:187:24:-;;;;;;;;;;-1:-1:-1;4767:187:24;;;;;:::i;:::-;;:::i;26006:699::-;;;;;;;;;;-1:-1:-1;26006:699:24;;;;;:::i;:::-;;:::i;12554:1591::-;;;;;;:::i;:::-;;:::i;3951:22::-;;;;;;;;;;;;;;;;21170:1183;;;;;;:::i;:::-;;:::i;1066:79::-;;;;;;;;;;;;-1:-1:-1;;1066:79:24;;1462:85:0;;;;;;;;;;;;;:::i;22359:1084:24:-;;;;;;;;;;-1:-1:-1;22359:1084:24;;;;;:::i;:::-;;:::i;11818:109::-;;;;;;;;;;-1:-1:-1;11818:109:24;;;;;:::i;:::-;-1:-1:-1;;;;;11904:16:24;11878:7;11904:16;;;:10;:16;;;;;;;11818:109;698:48;;;;;;;;;;;;745:1;698:48;;587;;;;;;;;;;;;630:5;587:48;;;;;18065:6:32;18053:19;;;18035:38;;18023:2;18008:18;587:48:24;17891:188:32;9714:165:24;;;:::i;1600:42::-;;;;;;;;;;;;1641:1;1600:42;;1151:82;;;;;;;;;;;;-1:-1:-1;;1151:82:24;;983:77;;;;;;;;;;;;-1:-1:-1;;983:77:24;;1492:50;;;;;;;;;;;;-1:-1:-1;;1492:50:24;;26916:134;;;;;;;;;;-1:-1:-1;26916:134:24;;;;;:::i;:::-;;:::i;11933:121::-;;;;;;;;;;-1:-1:-1;11933:121:24;;;;;:::i;:::-;-1:-1:-1;;;;;12025:22:24;11999:7;12025:22;;;:16;:22;;;;;;;11933:121;5543:104;;;;;;;;;;-1:-1:-1;5621:19:24;;-1:-1:-1;;;5621:19:24;;;;5543:104;;1548:46;;;;;;;;;;;;1593:1;1548:46;;1239:71;;;;;;;;;;;;-1:-1:-1;;1239:71:24;;5446:91;;;;;;;;;;-1:-1:-1;5523:7:24;;;;5446:91;;1316:70;;;;;;;;;;;;-1:-1:-1;;1316:70:24;;10148:106;;;:::i;23449:2551::-;;;;;;;;;;-1:-1:-1;23449:2551:24;;;;;:::i;:::-;;:::i;641:50::-;;;;;;;;;;;;687:4;641:50;;918:59;;;;;;;;;;;;-1:-1:-1;;918:59:24;;3424:20;;;;;;;;;;-1:-1:-1;3424:20:24;;;;-1:-1:-1;;;;;3424:20:24;;;5258:92;;;;;;;;;;-1:-1:-1;5330:13:24;;5258:92;;851:61;;;;;;;;;;;;-1:-1:-1;;851:61:24;;2335:198:0;;;;;;;;;;-1:-1:-1;2335:198:0;;;;;:::i;:::-;;:::i;12253:104:24:-;;;;;;;;;;-1:-1:-1;12253:104:24;;;;;:::i;:::-;-1:-1:-1;;;;;12336:14:24;12310:7;12336:14;;;:8;:14;;;;;;;12253:104;5356:84;;;;;;;;;;-1:-1:-1;5425:8:24;;5356:84;;5153:99;;;;;;;;;;-1:-1:-1;5238:6:24;;-1:-1:-1;;;;;5238:6:24;5153:99;;33647:549;33761:1;33745:5;33739:19;:23;:49;;;;;33787:1;33772:4;33766:18;:22;33739:49;33731:68;;;;-1:-1:-1;;;33731:68:24;;19839:2:32;33731:68:24;;;19821:21:32;19878:1;19858:18;;;19851:29;-1:-1:-1;;;19896:18:32;;;19889:36;19942:18;;33731:68:24;19637:329:32;33731:68:24;33809:28;33861:1;33847:317;33869:10;;33864:1;:15;33847:317;;33905:21;;;;:18;:21;;;;;33958:11;;;;33905:21;;-1:-1:-1;;;;;;33958:11:24;33944:10;:25;33940:214;;33989:7;;;:15;33999:5;33989:7;:15;:::i;:::-;-1:-1:-1;34022:13:24;;;:20;34038:4;34022:13;:20;:::i;:::-;;34080:10;-1:-1:-1;;;;;34065:50:24;;34092:2;:7;;34101:2;:13;;34065:50;;;;;;;:::i;:::-;;;;;;;;34133:7;;33647:549;;:::o;33940:214::-;33881:3;;;;:::i;:::-;;;;33847:317;;;;34173:16;;-1:-1:-1;;;34173:16:24;;;;;;;:::i;27056:161::-;27151:7;27177:33;27204:5;27177:26;:33::i;:::-;27170:40;27056:161;-1:-1:-1;;27056:161:24:o;14662:6502::-;14900:6;2526:21:2;:19;:21::i;:::-;14918:17:24::1;14938:27;14959:5;14938:20;:27::i;:::-;15091:26;::::0;;;:15:::1;:26;::::0;;;;;;;-1:-1:-1;791:1:24::1;15091:44;:26:::0;;::::1;:44;;15070:97;;;;-1:-1:-1::0;;;15070:97:24::1;;;;;;;:::i;:::-;15241:33;::::0;;::::1;::::0;15198:144;;-1:-1:-1;;;15198:144:24;;:18:::1;::::0;:25:::1;::::0;:144:::1;::::0;15241:33;15292:9;;15319;;15198:144:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15177:197;;;;-1:-1:-1::0;;;15177:197:24::1;;;;;;;:::i;:::-;15416:15;15392:41:::0;::::1;15384:60;;;::::0;-1:-1:-1;;;15384:60:24;;25860:2:32;15384:60:24::1;::::0;::::1;25842:21:32::0;25899:1;25879:18;;;25872:29;-1:-1:-1;;;25917:18:32;;;25910:36;25963:18;;15384:60:24::1;25658:329:32::0;15384:60:24::1;15455:35;15493:148;15521:5;15540:17;15571;15602:6;15622:9;15493:14;:148::i;:::-;15455:186:::0;-1:-1:-1;15673:85:24;;;15652:138:::1;;;::::0;-1:-1:-1;;;15652:138:24;;26194:2:32;15652:138:24::1;::::0;::::1;26176:21:32::0;26233:1;26213:18;;;26206:29;-1:-1:-1;;;26251:18:32;;;26244:36;26297:18;;15652:138:24::1;25992:329:32::0;15652:138:24::1;15821:96:::0;;;15800:149:::1;;;::::0;-1:-1:-1;;;15800:149:24;;26528:2:32;15800:149:24::1;::::0;::::1;26510:21:32::0;26567:1;26547:18;;;26540:29;-1:-1:-1;;;26585:18:32;;;26578:36;26631:18;;15800:149:24::1;26326:329:32::0;15800:149:24::1;15980:84:::0;;;15959:137:::1;;;::::0;-1:-1:-1;;;15959:137:24;;26862:2:32;15959:137:24::1;::::0;::::1;26844:21:32::0;26901:1;26881:18;;;26874:29;-1:-1:-1;;;26919:18:32;;;26912:36;26965:18;;15959:137:24::1;26660:329:32::0;15959:137:24::1;16127:104:::0;;;16106:157:::1;;;::::0;-1:-1:-1;;;16106:157:24;;27196:2:32;16106:157:24::1;::::0;::::1;27178:21:32::0;27235:1;27215:18;;;27208:29;-1:-1:-1;;;27253:18:32;;;27246:36;27299:18;;16106:157:24::1;26994:329:32::0;16106:157:24::1;16294:52:::0;;;16273:105:::1;;;::::0;-1:-1:-1;;;16273:105:24;;27530:2:32;16273:105:24::1;::::0;::::1;27512:21:32::0;27569:1;27549:18;;;27542:29;-1:-1:-1;;;27587:18:32;;;27580:36;27633:18;;16273:105:24::1;27328:329:32::0;16273:105:24::1;16440:1;16409:28;:32;:109;;;-1:-1:-1::0;;;16457:61:24;::::1;16409:109;:188;;;-1:-1:-1::0;;;16534:63:24;::::1;16409:188;16388:241;;;::::0;-1:-1:-1;;;16388:241:24;;27864:2:32;16388:241:24::1;::::0;::::1;27846:21:32::0;27903:1;27883:18;;;27876:29;-1:-1:-1;;;27921:18:32;;;27914:36;27967:18;;16388:241:24::1;27662:329:32::0;16388:241:24::1;16748:23;::::0;;;:12:::1;:23;::::0;;;;:33;16657:154:::1;::::0;16687:5;;16706:28;;16748:33:::1;;16795:6:::0;16657:16:::1;:154::i;:::-;16640:816;;;16883:16;::::0;::::1;::::0;16928:33:::1;::::0;;::::1;::::0;-1:-1:-1;;;;;16917:45:24::1;16836:23;16917:45:::0;;;:10:::1;:45;::::0;;;;;16836:23;;16862:114:::1;::::0;:3:::1;:114::i;:::-;16836:140;;17102:18;17053:10;:45;17064:5;:33;;;-1:-1:-1::0;;;;;17053:45:24::1;-1:-1:-1::0;;;;;17053:45:24::1;;;;;;;;;;;;;:67;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17166:33:24::1;::::0;;::::1;::::0;17139:137;;-1:-1:-1;;;;;;;;;;;17139:137:24;::::1;::::0;17217:18;;17253:9;;17139:137:::1;:::i;:::-;;;;;;;;17374:7;::::0;17327:22:::1;::::0;17385:3:::1;::::0;17353:28:::1;::::0;17374:7:::1;;17353:18:::0;:28:::1;:::i;:::-;17352:36;;;;:::i;:::-;17327:61;;17402:43;17418:10;17430:14;17402:15;:43::i;:::-;16822:634;;16640:816;-1:-1:-1::0;;17483:61:24;::::1;::::0;:140:::1;;-1:-1:-1::0;;;17560:63:24;::::1;17483:140;17466:447;;;17683:26;::::0;;;:15:::1;:26;::::0;;;;;;;:49;;-1:-1:-1;;17683:49:24::1;843:1;17683:49;::::0;;17753:12:::1;:23:::0;;;;;;17746:30;;-1:-1:-1;;17746:30:24;;;17795:58;;29081:25:32;;;29122:18;;;29115:34;;;17795:58:24::1;::::0;29054:18:32;17795:58:24::1;;;;;;;17874:28:::0;-1:-1:-1;17867:35:24::1;::::0;-1:-1:-1;17867:35:24::1;17466:447;18169:52;::::0;-1:-1:-1;;;18169:52:24;;18129:28;;18169:8:::1;::::0;:26:::1;::::0;:52:::1;::::0;18196:5;;18129:28;;18169:52:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;18272:1:24::1;18236:23:::0;;;:12:::1;:23;::::0;;;;:33;::::1;;:37:::0;;-1:-1:-1;18232:2711:24::1;;18289:17;18325:23:::0;;;:12:::1;:23;::::0;;;;:31;-1:-1:-1;;;18325:31:24;::::1;;;18321:315;;;18391:124;18416:17;18485:5;:12;;;18469:5;:13;;;18455:5;:11;;;:27;;;;:::i;:::-;:42;;;;:::i;:::-;18391:3;:124::i;:::-;18376:139;;18321:315;;;18569:52;18573:17;18608:5;:12;;;18592:5;:13;;;:28;;;;:::i;18569:52::-;18554:67;;18321:315;18649:64;18665:5;:33;;;18700:12;18649:15;:64::i;:::-;18728:20;18751:32;18771:12:::0;18751:17;:32:::1;:::i;:::-;18728:55;;18797:52;18815:5;:22;;;18839:9;18797:17;:52::i;:::-;18886:4;;18868:15;:22;18864:829;;;19010:22;::::0;::::1;::::0;:152:::1;::::0;18993:12:::1;::::0;-1:-1:-1;;;;;19010:27:24::1;::::0;687:4:::1;::::0;19121:15;;18993:12;19010:152;18993:12;19010:152;19121:15;19010:27;687:4;19010:152:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18992:170;;;-1:-1:-1::0;;;;;;;;;;;19213:5:24::1;:22;;;19257:15;19294:7;19323:9;19185:165;;;;;;;;;:::i;:::-;;;;;;;;19374:7;19369:310;;19523:137;19564:5;:33;;;19623:15;19523;:137::i;:::-;18892:801;18864:829;18275:1428;;18232:2711;;;19779:20;::::0;::::1;::::0;19743:17;;19779:51;::::1;;;;19819:5;:11;;;19803:12;:27;;19779:51;19775:656;;;19851:16;19872:5;:21;;;-1:-1:-1::0;;;;;19872:26:24::1;19929:5;:14;;;19872:149;;19976:5;:11;;;20010:5;:10;;;19872:149;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19850:171;;;20109:5;:21;;;-1:-1:-1::0;;;;;20044:269:24::1;20077:10;-1:-1:-1::0;;;;;20044:269:24::1;-1:-1:-1::0;;;;;;;;;;;20152:5:24::1;:14;;;20188:5;:11;;;20221:5;:10;;;20253:11;20286:9;20044:269;;;;;;;;;;:::i;:::-;;;;;;;;20336:11;20332:85;;;20387:11;::::0;::::1;::::0;20371:27:::1;::::0;;::::1;:::i;:::-;;;20332:85;19832:599;19775:656;20463:4;;20448:12;:19;20444:489;;;20584:22;::::0;::::1;::::0;:149:::1;::::0;20567:12:::1;::::0;-1:-1:-1;;;;;20584:27:24::1;::::0;687:4:::1;::::0;20695:12;;20567;20584:149;20567:12;20584:149;20695:12;20584:27;687:4;20584:149:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20566:167;;;-1:-1:-1::0;;;;;;;;;;;20784:5:24::1;:22;;;20828:12;20862:7;20891:9;20756:162;;;;;;;;;:::i;:::-;;;;;;;;20469:464;20444:489;19709:1234;18232:2711;20952:26;::::0;;;:15:::1;:26;::::0;;;;;;;:49;;-1:-1:-1;;20952:49:24::1;843:1;20952:49;::::0;;21018:12:::1;:23:::0;;;;;;21011:30;;-1:-1:-1;;21011:30:24;;;21056:56;;3082:25:32;;;20952:26:24;;21056:56:::1;::::0;3055:18:32;21056:56:24::1;;;;;;;-1:-1:-1::0;21129:28:24;-1:-1:-1;;2557:1:2::1;2568:20:::0;1808:1;3074:7;:22;2894:209;2568:20;14662:6502:24;;;;;;;:::o;10357:292::-;10427:10;10418:20;;;;:8;:20;;;;;;:30;-1:-1:-1;10418:30:24;10410:49;;;;-1:-1:-1;;;10410:49:24;;;;;;;:::i;:::-;10478:10;10469:20;;;;:8;:20;;;;;:30;;10493:6;;10469:20;:30;;10493:6;;10469:30;:::i;:::-;;;;-1:-1:-1;;10527:34:24;;10510:12;;10527:10;;10550:6;;10510:12;10527:34;10510:12;10527:34;10550:6;10527:10;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10509:52;;;10579:7;10571:26;;;;-1:-1:-1;;;10571:26:24;;;;;;;:::i;:::-;10612:30;10623:10;10635:6;10612:30;;;;;;;:::i;:::-;;;;;;;;10400:249;10357:292;:::o;6717:2171::-;6890:4;6914:9;6927:10;6914:23;6906:42;;;;-1:-1:-1;;;6906:42:24;;35012:2:32;6906:42:24;;;34994:21:32;35051:1;35031:18;;;35024:29;-1:-1:-1;;;35069:18:32;;;35062:36;35115:18;;6906:42:24;34810:329:32;6906:42:24;7058:1;7042:5;7036:19;:23;7028:42;;;;-1:-1:-1;;;7028:42:24;;35346:2:32;7028:42:24;;;35328:21:32;35385:1;35365:18;;;35358:29;-1:-1:-1;;;35403:18:32;;;35396:36;35449:18;;7028:42:24;35144:329:32;7028:42:24;7129:1;7107:11;7101:25;:29;7080:82;;;;-1:-1:-1;;;7080:82:24;;35680:2:32;7080:82:24;;;35662:21:32;35719:1;35699:18;;;35692:29;-1:-1:-1;;;35737:18:32;;;35730:36;35783:18;;7080:82:24;35478:329:32;7080:82:24;7324:25;;;;;;;:::i;:::-;;;;;;;;;;;;;7314:36;;;;;;7283:13;7266:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;7256:42;;;;;;:94;:205;;;;7434:26;;;;;;;:::i;:::-;;;;;;;;;;;;;7424:37;;;;;;7393:13;7376:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;7366:42;;;;;;:95;7256:205;:314;;;-1:-1:-1;7545:24:24;;-1:-1:-1;;;7545:24:24;;;36829:19:32;36864:11;;7545:24:24;;;;;;;;;;;;7535:35;;;;;;7504:13;7487:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;7477:42;;;;;;:93;7256:314;7235:367;;;;-1:-1:-1;;;7235:367:24;;37088:2:32;7235:367:24;;;37070:21:32;37127:1;37107:18;;;37100:29;-1:-1:-1;;;37145:18:32;;;37138:36;37191:18;;7235:367:24;36886:329:32;7235:367:24;7632:10;7621:22;;;;:10;:22;;;;;;:27;:64;;;;-1:-1:-1;7669:10:24;7652:28;;;;:16;:28;;;;;;:33;7621:64;7613:83;;;;-1:-1:-1;;;7613:83:24;;37422:2:32;7613:83:24;;;37404:21:32;37461:1;37441:18;;;37434:29;-1:-1:-1;;;37479:18:32;;;37472:36;37525:18;;7613:83:24;37220:329:32;7613:83:24;7747:10;7727:31;;;;:19;:31;;;;;;:36;7706:89;;;;-1:-1:-1;;;7706:89:24;;37756:2:32;7706:89:24;;;37738:21:32;37795:1;37775:18;;;37768:29;-1:-1:-1;;;37813:18:32;;;37806:36;37859:18;;7706:89:24;37554:329:32;7706:89:24;7866:25;;;;;;;:::i;:::-;;;;;;;;;;;;;7856:36;;;;;;7837:13;7820:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;7810:42;;;;;;:82;7806:700;;7929:13;;7916:9;:26;;7908:45;;;;-1:-1:-1;;;7908:45:24;;;;;;;:::i;:::-;7978:10;7967:22;;;;:10;:22;;;;;7992:9;7967:34;;7806:700;;;8078:26;;;;;;;:::i;:::-;;;;;;;;;;;;;8068:37;;;;;;8049:13;8032:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;8022:42;;;;;;:83;8018:488;;8142:13;;8129:9;:26;;8121:45;;;;-1:-1:-1;;;8121:45:24;;;;;;;:::i;:::-;8197:10;8180:28;;;;:16;:28;;;;;8211:9;8180:40;;8018:488;;;8272:13;;:17;;8288:1;8272:17;:::i;:::-;8259:9;:30;;8251:49;;;;-1:-1:-1;;;8251:49:24;;;;;;;:::i;:::-;8314:17;8334:13;8346:1;8334:9;:13;:::i;:::-;8314:33;-1:-1:-1;8386:13:24;8398:1;8386:9;:13;:::i;:::-;:18;:52;;8422:16;:12;8437:1;8422:16;:::i;:::-;8386:52;;;8407:12;8386:52;8372:10;8361:22;;;;:10;:22;;;;;;;;:77;;;;8452:16;:28;;;:43;8018:488;8516:10;:12;;;:10;:12;;;:::i;:::-;;;;-1:-1:-1;;8571:223:24;;;;;;;;8607:10;;8571:223;;;8641:10;8571:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8538:30:24;;;:18;:30;;;;;;;:256;;;;;;;;;;;-1:-1:-1;;;;;;8538:256:24;-1:-1:-1;;;;;8538:256:24;;;;;;;;;;;8571:223;;8538:30;:256;;;;;;;;:::i;:::-;-1:-1:-1;8538:256:24;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8538:256:24;;;;;;;;;-1:-1:-1;;8538:256:24;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;8818:10:24;;8809:43;;;29081:25:32;;;8842:9:24;29137:2:32;29122:18;;29115:34;8830:10:24;;-1:-1:-1;8809:43:24;;29054:18:32;8809:43:24;;;;;;;-1:-1:-1;8870:10:24;;6717:2171;;;;;;;:::o;9885:192::-;4473:33;4495:10;4473:21;:33::i;:::-;4465:52;;;;-1:-1:-1;;;4465:52:24;;;;;;;:::i;:::-;9984:10:::1;9967:28;::::0;;;:16:::1;:28;::::0;;;;:41;;9999:9:::1;::::0;9967:28;:41:::1;::::0;9999:9;;9967:41:::1;:::i;:::-;::::0;;;-1:-1:-1;;10023:47:24::1;::::0;::::1;::::0;::::1;::::0;10048:10:::1;::::0;10060:9:::1;::::0;10023:47:::1;:::i;:::-;;;;;;;;9885:192::o:0;6076:145::-;6136:4;6159:18;6172:4;6159:12;:18::i;:::-;:55;;;;-1:-1:-1;6201:13:24;;-1:-1:-1;;;;;6181:16:24;;;;;;:10;:16;;;;;;:33;;6152:62;6076:145;-1:-1:-1;;6076:145:24:o;6415:193::-;6484:4;6519:27;6541:4;6519:21;:27::i;:::-;:82;;;;-1:-1:-1;6588:13:24;;-1:-1:-1;;;;;6562:22:24;;;;;;:16;:22;;;;;;:39;;6500:101;6415:193;-1:-1:-1;;6415:193:24:o;10723:618::-;2526:21:2;:19;:21::i;:::-;10813:10:24::1;10827:1;10793:31:::0;;;:19:::1;:31;::::0;;;;;10785:54:::1;;;::::0;-1:-1:-1;;;10785:54:24;;38794:2:32;10785:54:24::1;::::0;::::1;38776:21:32::0;38833:1;38813:18;;;38806:29;-1:-1:-1;;;38851:18:32;;;38844:36;38897:18;;10785:54:24::1;38592:329:32::0;10785:54:24::1;10932:19;::::0;10905:10:::1;10885:31;::::0;;;:19:::1;:31;::::0;;;;;-1:-1:-1;;;10932:19:24;;::::1;;;::::0;10870:46:::1;::::0;:12:::1;:46;:::i;:::-;:81;;10849:134;;;::::0;-1:-1:-1;;;10849:134:24;;39128:2:32;10849:134:24::1;::::0;::::1;39110:21:32::0;39167:1;39147:18;;;39140:29;-1:-1:-1;;;39185:18:32;;;39178:36;39231:18;;10849:134:24::1;38926:329:32::0;10849:134:24::1;11049:10;10993:11;11032:28:::0;;;:16:::1;:28;::::0;;;;;;;;11007:10:::1;:22:::0;;;;;;:53:::1;::::0;11032:28;11007:53:::1;:::i;:::-;11087:10;11101:1;11070:28:::0;;;:16:::1;:28;::::0;;;;;;;:32;;;11112:10:::1;:22:::0;;;;;:26;;;11148:19:::1;:31:::0;;;;;;:35;;;11211:34;10993:67;;-1:-1:-1;11101:1:24;10993:67;;11101:1;11211:34;11101:1;11211:34;10993:67;11087:10;11211:34:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11193:52;;;11263:7;11255:26;;;;-1:-1:-1::0;;;11255:26:24::1;;;;;;;:::i;:::-;11296:38;11315:10;11327:6;11296:38;;;;;;;:::i;:::-;;;;;;;;10775:566;;2568:20:2::0;1808:1;3074:7;:22;2894:209;2568:20;10723:618:24:o;8894:736::-;8980:26;9018:44;9102:11;:18;-1:-1:-1;;;;;9065:65:24;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9065:65:24;;;;;;;;;;;;;;;;;9018:112;;9140:10;9170:6;9165:425;9186:11;:18;9182:1;:22;9165:425;;;9225:7;9235:11;9247:1;9235:14;;;;;;;;:::i;:::-;;;;;;;;;;;;9298:22;;;;:18;:22;;;;;;;:31;;;9235:14;;-1:-1:-1;9285:45:24;;-1:-1:-1;;;;;9298:31:24;9285:12;:45::i;:::-;:123;;;-1:-1:-1;9376:22:24;;;;:18;:22;;;;;:31;;;9354:54;;-1:-1:-1;;;;;9376:31:24;9354:21;:54::i;:::-;9284:174;;;;-1:-1:-1;9429:22:24;;;;:18;:22;;;;;:29;;;;;9284:174;9263:317;;;9518:22;;;;:18;:22;;;;;;;;;9491:49;;;;;;;;;;;;;;;-1:-1:-1;;;;;9491:49:24;;;;;;;;;;;;;;;9518:22;;9491:49;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9491:49:24;;;-1:-1:-1;;9491:49:24;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;9509:5;9491:24;;;;;;;;:::i;:::-;;;;;;:49;;;;9558:7;;;;;:::i;:::-;;;;9263:317;-1:-1:-1;9206:3:24;;;;:::i;:::-;;;;9165:425;;;-1:-1:-1;9606:17:24;;8894:736;-1:-1:-1;;;8894:736:24:o;11415:205::-;4361:24;4374:10;4361:12;:24::i;:::-;4353:43;;;;-1:-1:-1;;;4353:43:24;;;;;;;:::i;:::-;11495:10:::1;11475:31;::::0;;;:19:::1;:31;::::0;;;;;:36;11467:55:::1;;;::::0;-1:-1:-1;;;11467:55:24;;39594:2:32;11467:55:24::1;::::0;::::1;39576:21:32::0;39633:1;39613:18;;;39606:29;-1:-1:-1;;;39651:18:32;;;39644:36;39697:18;;11467:55:24::1;39392:329:32::0;11467:55:24::1;11552:10;11532:31;::::0;;;:19:::1;:31;::::0;;;;;;11566:12:::1;11532:46:::0;;11593:20;::::1;::::0;::::1;::::0;::::1;:::i;2085:101:0:-:0;1355:13;:11;:13::i;:::-;2149:30:::1;2176:1;2149:18;:30::i;4767:187:24:-:0;4877:11;4634:7;:5;:7::i;:::-;-1:-1:-1;;;;;4620:21:24;:10;-1:-1:-1;;;;;4620:21:24;;:91;;;-1:-1:-1;4671:31:24;;;;:18;:31;;;;;:40;;;-1:-1:-1;;;;;4671:40:24;4657:10;:54;4620:91;4599:144;;;;-1:-1:-1;;;4599:144:24;;39928:2:32;4599:144:24;;;39910:21:32;39967:1;39947:18;;;39940:29;-1:-1:-1;;;39985:18:32;;;39978:36;40031:18;;4599:144:24;39726:329:32;4599:144:24;-1:-1:-1;4900:31:24::1;::::0;;;:18:::1;:31;::::0;;;;;:38:::1;;:47:::0;;-1:-1:-1;;4900:47:24::1;::::0;::::1;;::::0;;;::::1;::::0;;4767:187::o;26006:699::-;26151:4;26167:23;26246:16;26256:5;26246:9;:16::i;:::-;26280:5;:22;;;26328:5;:16;;;26320:25;;26363:5;:33;;;26216:194;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;26193:227;;;;;;26167:253;;26430:32;26512:15;26562:6;;;;;;;;;-1:-1:-1;;;;;26562:6:24;-1:-1:-1;;;;;26562:34:24;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26562:36:24;;;;;;;;;;;;:::i;:::-;26465:143;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;26465:143:24;;;;;;;;;;26690:7;;-1:-1:-1;;;26625:73:24;;26465:143;;-1:-1:-1;26625:8:24;;:27;;:73;;26653:14;;26465:143;;26690:7;;;;;26625:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12554:1591::-;12677:4;4361:24;4374:10;4361:12;:24::i;:::-;4353:43;;;;-1:-1:-1;;;4353:43:24;;;;;;;:::i;:::-;2526:21:2::1;:19;:21::i;:::-;12728:5:24::2;:33;;;-1:-1:-1::0;;;;;12714:47:24::2;:10;-1:-1:-1::0;;;;;12714:47:24::2;;12693:100;;;::::0;-1:-1:-1;;;12693:100:24;;42796:2:32;12693:100:24::2;::::0;::::2;42778:21:32::0;42835:1;42815:18;;;42808:29;-1:-1:-1;;;42853:18:32;;;42846:36;42899:18;;12693:100:24::2;42594:329:32::0;12693:100:24::2;12895:11;::::0;::::2;::::0;12833:33:::2;::::0;;::::2;::::0;-1:-1:-1;;;;;12824:43:24::2;;::::0;;;:8:::2;:43;::::0;;;:55:::2;::::0;12870:9:::2;::::0;12824:55:::2;:::i;:::-;:82;;12803:135;;;;-1:-1:-1::0;;;12803:135:24::2;;;;;;;:::i;:::-;12949:17;12969:27;12990:5;12969:20;:27::i;:::-;745:1;13027:26:::0;;;:15:::2;:26;::::0;;;;;12949:47;;-1:-1:-1;13027:52:24::2;:26;:52:::0;13006:105:::2;;;::::0;-1:-1:-1;;;13006:105:24;;43130:2:32;13006:105:24::2;::::0;::::2;43112:21:32::0;43169:1;43149:18;;;43142:29;-1:-1:-1;;;43187:18:32;;;43180:36;43233:18;;13006:105:24::2;42928:329:32::0;13006:105:24::2;13122:61;13138:5;:33;;;13173:9;13122:15;:61::i;:::-;13329:14;::::0;::::2;::::0;:34:::2;::::0;630:5:::2;::::0;13329:34:::2;:::i;:::-;13316:47;;:9;:47;;13295:100;;;::::0;-1:-1:-1;;;13295:100:24;;43641:2:32;13295:100:24::2;::::0;::::2;43623:21:32::0;43680:1;43660:18;;;43653:29;-1:-1:-1;;;43698:18:32;;;43691:36;43744:18;;13295:100:24::2;43439:329:32::0;13295:100:24::2;13406:12;13423:5;:21;;;-1:-1:-1::0;;;;;13423:26:24::2;13472:5;:14;;;13423:125;;13511:5;:11;;;13537:5;:10;;;13423:125;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;13405:143:24;;-1:-1:-1;;13586:16:24::2;13567:15;:35;;13559:54;;;::::0;-1:-1:-1;;;13559:54:24;;43975:2:32;13559:54:24::2;::::0;::::2;43957:21:32::0;44014:1;43994:18;;;43987:29;-1:-1:-1;;;44032:18:32;;;44025:36;44078:18;;13559:54:24::2;43773:329:32::0;13559:54:24::2;13623:23;::::0;;;:12:::2;:23;::::0;;;;:59;;-1:-1:-1;;13623:59:24::2;13666:15;13623:59;;;::::0;;13693:153;::::2;;;13720:23;::::0;;;:12:::2;:23;::::0;;;;;;:38;;-1:-1:-1;;;;13720:38:24::2;-1:-1:-1::0;;;13720:38:24::2;::::0;;13788:33;::::2;::::0;13823:11:::2;::::0;::::2;::::0;13772:63:::2;::::0;13788:33;13772:15:::2;:63::i;:::-;13909:5;:21;;;-1:-1:-1::0;;;;;13860:201:24::2;13885:10;-1:-1:-1::0;;;;;13860:201:24::2;-1:-1:-1::0;;;;;;;;;;;13944:5:24::2;:14;;;13972:5;:11;;;13997:5;:10;;;14021:7;14042:9;13860:201;;;;;;;;;;:::i;:::-;;;;;;;;14071:26;::::0;;;:15:::2;:26;::::0;;;;;:43;;-1:-1:-1;;14071:43:24::2;791:1;14071:43;::::0;;14131:7;-1:-1:-1;2568:20:2::1;1808:1:::0;3074:7;:22;2894:209;2568:20:::1;12554:1591:24::0;;;:::o;21170:1183::-;21373:41;21395:5;:18;;;21373:21;:41::i;:::-;21365:60;;;;-1:-1:-1;;;21365:60:24;;44309:2:32;21365:60:24;;;44291:21:32;44348:1;44328:18;;;44321:29;-1:-1:-1;;;44366:18:32;;;44359:36;44412:18;;21365:60:24;44107:329:32;21365:60:24;21514:9;21498:5;:12;;;21473:5;:22;;;21457:5;:13;;;21443:5;:11;;;:27;;;;:::i;:::-;:52;;;;:::i;:::-;:67;;;;:::i;:::-;:80;;21435:99;;;;-1:-1:-1;;;21435:99:24;;44643:2:32;21435:99:24;;;44625:21:32;44682:1;44662:18;;;44655:29;-1:-1:-1;;;44700:18:32;;;44693:36;44746:18;;21435:99:24;44441:329:32;21435:99:24;21571:5;:22;;;21552:41;;:15;:41;;21544:60;;;;-1:-1:-1;;;21544:60:24;;44977:2:32;21544:60:24;;;44959:21:32;45016:1;44996:18;;;44989:29;-1:-1:-1;;;45034:18:32;;;45027:36;45080:18;;21544:60:24;44775:329:32;21544:60:24;21641:5;:16;;;21622:35;;:15;:35;;21614:54;;;;-1:-1:-1;;;21614:54:24;;45311:2:32;21614:54:24;;;45293:21:32;45350:1;45330:18;;;45323:29;-1:-1:-1;;;45368:18:32;;;45361:36;45414:18;;21614:54:24;45109:329:32;21614:54:24;21702:5;:17;;;21686:33;;:12;:33;;21678:52;;;;-1:-1:-1;;;21678:52:24;;45645:2:32;21678:52:24;;;45627:21:32;45684:1;45664:18;;;45657:29;-1:-1:-1;;;45702:18:32;;;45695:36;45748:18;;21678:52:24;45443:329:32;21678:52:24;21740:17;21760:22;21776:5;21760:15;:22::i;:::-;21839:18;;;;21813:67;;-1:-1:-1;;;21813:67:24;;21740:42;;-1:-1:-1;21813:18:24;;:25;;:67;;21740:42;;21870:9;;21813:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21792:120;;;;-1:-1:-1;;;21792:120:24;;;;;;;:::i;:::-;21923:44;21970:33;;;:22;:33;;;;;;;;22022:14;:25;;;;;;:35;;;;;:44;22014:63;;;;-1:-1:-1;;;22014:63:24;;;;;;;:::i;:::-;22095:26;;-1:-1:-1;;;;;22095:26:24;:40;22087:59;;;;-1:-1:-1;;;22087:59:24;;;;;;;:::i;:::-;22156:33;;;;:22;:33;;;;;;;;;:41;;;;-1:-1:-1;;;;;;22156:41:24;;;-1:-1:-1;;;;;22156:41:24;;;;;;;;;;-1:-1:-1;22156:41:24;;;;;;;;;;;;;;;;;;;:33;:41;;;;;;;;:::i;:::-;-1:-1:-1;22156:41:24;;;;;;;;;-1:-1:-1;;;;;;22156:41:24;-1:-1:-1;;;;;22156:41:24;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;22156:41:24;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22156:41:24;-1:-1:-1;;;;;22156:41:24;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;22156:41:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22156:41:24;;;;;;;-1:-1:-1;;;22156:41:24;;;;;;;;;;;-1:-1:-1;;;;22156:41:24;-1:-1:-1;;;22156:41:24;;;;;-1:-1:-1;;;;22156:41:24;;-1:-1:-1;;;22156:41:24;;;;;;;;;-1:-1:-1;;;;;;;;22156:41:24;-1:-1:-1;;;22156:41:24;;;;;;;-1:-1:-1;;;;22156:41:24;;-1:-1:-1;;;22156:41:24;;;;;;;;-1:-1:-1;;;;22156:41:24;-1:-1:-1;;;22156:41:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22207:25:24;;;:14;:25;;;;;;;;;22252:15;22207:60;;;;22282:64;;22319:9;29081:25:32;;29122:18;;;29115:34;22307:10:24;;22207:25;;22282:64;;29054:18:32;22282:64:24;;;;;;;21355:998;;21170:1183;;:::o;1462:85:0:-;1534:6;;-1:-1:-1;;;;;1534:6:0;;1462:85::o;22359:1084:24:-;2526:21:2;:19;:21::i;:::-;22450:34:24::1;22487:33:::0;;;:22:::1;:33;::::0;;;;22539:16;;-1:-1:-1;;;;;22539:16:24::1;22531:49;;;;-1:-1:-1::0;;;22531:49:24::1;;;;;;;:::i;:::-;22629:16;::::0;::::1;::::0;-1:-1:-1;;;22629:16:24;::::1;;;22611:15;:34;:82:::0;::::1;;;-1:-1:-1::0;22676:17:24::1;::::0;::::1;::::0;-1:-1:-1;;;22676:17:24;::::1;;;22661:12;:32;22611:82;22590:135;;;::::0;-1:-1:-1;;;22590:135:24;;48002:2:32;22590:135:24::1;::::0;::::1;47984:21:32::0;48041:1;48021:18;;;48014:29;-1:-1:-1;;;48059:18:32;;;48052:36;48105:18;;22590:135:24::1;47800:329:32::0;22590:135:24::1;22736:20;22814:5;:12;;;22789:5;:22;;;22773:5;:13;;;22759:5;:11;;;:27;;;;:::i;:::-;:52;;;;:::i;:::-;:67;;;;:::i;:::-;22864:22;::::0;::::1;::::0;22916:16:::1;::::0;::::1;::::0;22864:22;22951:18;::::1;::::0;-1:-1:-1;;;;;22951:18:24;;::::1;22836:25;22934:36:::0;;;:16:::1;:36;::::0;;;;;22736:90;;-1:-1:-1;22864:22:24;::::1;::::0;22912:59:::1;::::0;22916:16;22912:3:::1;:59::i;:::-;22998:18;::::0;::::1;::::0;-1:-1:-1;;;;;22998:18:24::1;22981:36;::::0;;;:16:::1;:36;::::0;;;;:47;;22897:74;;-1:-1:-1;22897:74:24;;22981:36;;;:47:::1;::::0;22897:74;;22981:47:::1;:::i;:::-;::::0;;;-1:-1:-1;;23054:18:24::1;::::0;::::1;::::0;23044:49:::1;::::0;-1:-1:-1;;;;;;;;;;;23044:49:24;::::1;::::0;-1:-1:-1;;;;;23054:18:24;;::::1;::::0;23074:7;;23083:9;;23044:49:::1;:::i;:::-;;;;;;;;23192:22;::::0;::::1;::::0;23108:116:::1;::::0;;48308:25:32;;;-1:-1:-1;;;;;23192:22:24;;::::1;48364:2:32::0;48349:18;;48342:60;23140:9:24;;23108:116:::1;::::0;48281:18:32;23108:116:24::1;;;;;;;23242:33;::::0;;;:22:::1;:33;::::0;;;;23235:40;;-1:-1:-1;;;;;;23235:40:24;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;23242:33;23235:40:::1;;::::0;::::1;23242:33:::0;23235:40:::1;:::i;:::-;;::::0;::::1;::::0;;-1:-1:-1;;;;;;23235:40:24::1;::::0;;::::1;;::::0;::::1;;;:::i;:::-;;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;23235:40:24::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;23235:40:24::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;23235:40:24;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;23285:25;;;:14:::1;:25;::::0;;;;;-1:-1:-1;23285:35:24;;::::1;:42:::0;;-1:-1:-1;;23285:42:24::1;::::0;;::::1;::::0;;23353:50;-1:-1:-1;;;;;23353:22:24;::::1;::::0;23383:15;;23235:40;23353:50;23235:40;23353:50;23383:15;23353:22;:50:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23338:65;;;23421:4;23413:23;;;::::0;-1:-1:-1;;;23413:23:24;;48615:2:32;23413:23:24::1;::::0;::::1;48597:21:32::0;48654:1;48634:18;;;48627:29;-1:-1:-1;;;48672:18:32;;;48665:36;48718:18;;23413:23:24::1;48413:329:32::0;23413:23:24::1;22440:1003;;;;;2568:20:2::0;1808:1;3074:7;:22;2894:209;2568:20;22359:1084:24;:::o;9714:165::-;4361:24;4374:10;4361:12;:24::i;:::-;4353:43;;;;-1:-1:-1;;;4353:43:24;;;;;;;:::i;:::-;9792:10:::1;9781:22;::::0;;;:10:::1;:22;::::0;;;;:35;;9807:9:::1;::::0;9781:22;:35:::1;::::0;9807:9;;9781:35:::1;:::i;:::-;::::0;;;-1:-1:-1;;9831:41:24::1;::::0;::::1;::::0;::::1;::::0;9850:10:::1;::::0;9862:9:::1;::::0;9831:41:::1;:::i;26916:134::-:0;26990:7;27016:27;27037:5;27016:20;:27::i;10148:106::-;4361:24;4374:10;4361:12;:24::i;:::-;4353:43;;;;-1:-1:-1;;;4353:43:24;;;;;;;:::i;:::-;10209:38:::1;10225:10;10237:9;10209:15;:38::i;23449:2551::-:0;2526:21:2;:19;:21::i;:::-;4473:33:24::1;4495:10;4473:21;:33::i;:::-;4465:52;;;;-1:-1:-1::0;;;4465:52:24::1;;;;;;;:::i;:::-;23712:25:::2;::::0;;;:14:::2;:25;::::0;;;;:35:::2;;::::0;::::2;;:44;23704:63;;;;-1:-1:-1::0;;;23704:63:24::2;;;;;;;:::i;:::-;23777:34;23814:33:::0;;;:22:::2;:33;::::0;;;;23865:16;;-1:-1:-1;;;;;23865:16:24::2;23857:49;;;;-1:-1:-1::0;;;23857:49:24::2;;;;;;;:::i;:::-;23956:26;::::0;-1:-1:-1;;;23956:26:24;;23916:37:::2;::::0;23956:8:::2;::::0;:19:::2;::::0;:26:::2;::::0;23976:5;;23956:26:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;23956:26:24::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;23916:66;;23992:26;24021:8;:28;24050:7;1641:1;24050:26;;;;;;;;:::i;:::-;;;;;;;:35;;;24021:65;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;24021:65:24::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;23992:94;;24104:13;:20;24128:2;24104:26;:54;;;;;24134:13;24148:1;24134:16;;;;;;;;:::i;:::-;;::::0;;;;-1:-1:-1;;;;;;24134:16:24;-1:-1:-1;;;24134:24:24::2;24104:54;24096:73;;;::::0;-1:-1:-1;;;24096:73:24;;51192:2:32;24096:73:24::2;::::0;::::2;51174:21:32::0;51231:1;51211:18;;;51204:29;-1:-1:-1;;;51249:18:32;;;51242:36;51295:18;;24096:73:24::2;50990:329:32::0;24096:73:24::2;24247:7;24242:118;24288:1;24265:13;:20;:24;;;;:::i;:::-;24261:1;:28;;;24242:118;;;24329:13:::0;24343:5:::2;:1:::0;24347::::2;24343:5;:::i;:::-;24329:20;;;;;;;;;;:::i;:::-;;;;;;;;;24310:13;24324:1;24310:16;;;;;;;;;;:::i;:::-;;;;:39;-1:-1:-1::0;;;;;24310:39:24::2;;;;;;;;-1:-1:-1::0;24291:3:24;::::2;::::0;::::2;:::i;:::-;;;;24242:118;;;;24369:19;24402:13;24391:36;;;;;;;;;;;;:::i;:::-;24369:58;;24458:11;24445:9;:24;24437:43;;;::::0;-1:-1:-1;;;24437:43:24;;52048:2:32;24437:43:24::2;::::0;::::2;52030:21:32::0;52087:1;52067:18;;;52060:29;-1:-1:-1;;;52105:18:32;;;52098:36;52151:18;;24437:43:24::2;51846:329:32::0;24437:43:24::2;24512:18;::::0;::::2;::::0;-1:-1:-1;;;;;24512:18:24::2;24498:10;:32;24490:51;;;::::0;-1:-1:-1;;;24490:51:24;;52382:2:32;24490:51:24::2;::::0;::::2;52364:21:32::0;52421:1;52401:18;;;52394:29;-1:-1:-1;;;52439:18:32;;;52432:36;52485:18;;24490:51:24::2;52180:329:32::0;24490:51:24::2;24789:27;::::0;::::2;::::0;24572:6:::2;::::0;24627:25:::2;::::0;-1:-1:-1;;;24627:25:24;;-1:-1:-1;;;24789:27:24;;::::2;;;::::0;-1:-1:-1;;;;;24572:6:24;;::::2;::::0;:37:::2;::::0;24627:8:::2;::::0;:18:::2;::::0;:25:::2;::::0;24646:5;;24627:25:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24670:18;24706:17;24741:18;24572:201;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:246;;24551:299;;;::::0;-1:-1:-1;;;24551:299:24;;53757:2:32;24551:299:24::2;::::0;::::2;53739:21:32::0;53796:1;53776:18;;;53769:29;-1:-1:-1;;;53814:18:32;;;53807:36;53860:18;;24551:299:24::2;53555:329:32::0;24551:299:24::2;24883:7;1593:1;24883:30;;;;;;;;:::i;:::-;;;;;;;:36;;;24923:6;24883:47;;;;:::i;:::-;-1:-1:-1::0;;;;;24868:62:24::2;:5;:11;;;:62;;24860:81;;;::::0;-1:-1:-1;;;24860:81:24;;54353:2:32;24860:81:24::2;::::0;::::2;54335:21:32::0;54392:1;54372:18;;;54365:29;-1:-1:-1;;;54410:18:32;;;54403:36;54456:18;;24860:81:24::2;54151:329:32::0;24860:81:24::2;24969:29;25001:8;:30;25045:7;1593:1;25045:30;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;;;:39:::2;::::0;25098:7:::2;::::0;25001:114:::2;::::0;-1:-1:-1;;;;;;25001:114:24::2;::::0;;;;;;::::2;::::0;25045:39;25098:7:::2;;::::0;25001:114:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;25001:114:24::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;24969:146;;25179:16;25169:27;;;;;;25143:5;:21;;25133:32;;;;;;:::i;:::-;;;;;;;;:63;25125:82;;;::::0;-1:-1:-1;;;25125:82:24;;55844:2:32;25125:82:24::2;::::0;::::2;55826:21:32::0;55883:1;55863:18;;;55856:29;-1:-1:-1;;;55901:18:32;;;55894:36;55947:18;;25125:82:24::2;55642:329:32::0;25125:82:24::2;25235:108;::::0;;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;;;25235:108:24;;::::2;::::0;;;;::::2;::::0;::::2;;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;25271:5;;25235:108;;;;::::2;::::0;::::2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;25235:108:24;;;-1:-1:-1;;25235:108:24::2;::::0;::::2;::::0;-1:-1:-1;;;;;25235:108:24::2;;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;;;;;;::::2;::::0;::::2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;25235:108:24;;;-1:-1:-1;;25235:108:24::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;;;;::::2;::::0;;::::2;::::0;;::::2;::::0;;;;::::2;::::0;::::2;::::0;;;;;;;::::2;::::0;::::2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;25235:108:24;;;-1:-1:-1;;25235:108:24::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;;;;-1:-1:-1;;;25235:108:24;::::2;::::0;::::2;::::0;;;;::::2;-1:-1:-1::0;;;25235:108:24;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;25235:108:24;::::2;;::::0;;;;-1:-1:-1;;;25235:108:24;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;25235:108:24;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;25235:108:24;;::::2;;;::::0;;;::::2;::::0;::::2;::::0;;;;;::::2;::::0;;::::2;::::0;;;;;;25290:11;25315:18;25235:22:::2;:108::i;:::-;25218:412;;;25404:16;::::0;::::2;::::0;25455:18:::2;::::0;::::2;::::0;-1:-1:-1;;;;;25455:18:24::2;25368:12;25438:36:::0;;;:16:::2;:36;::::0;;;;;25368:12;;25383:105:::2;::::0;:3:::2;:105::i;:::-;25519:18;::::0;::::2;::::0;-1:-1:-1;;;;;25519:18:24::2;25502:36;::::0;;;:16:::2;:36;::::0;;;;:47;;25368:120;;-1:-1:-1;25368:120:24;;25502:36;;;:47:::2;::::0;25368:120;;25502:47:::2;:::i;:::-;::::0;;;-1:-1:-1;;25578:18:24::2;::::0;::::2;::::0;25568:51:::2;::::0;-1:-1:-1;;;;;;;;;;;25568:51:24;::::2;::::0;-1:-1:-1;;;;;25578:18:24;;::::2;::::0;25598:7;;25607:11;;25568:51:::2;:::i;:::-;;;;;;;;25354:276;25218:412;25655:18;::::0;::::2;::::0;25717:13:::2;::::0;::::2;::::0;25703:11:::2;::::0;::::2;::::0;25641:9:::2;::::0;-1:-1:-1;;;;;25655:18:24::2;::::0;25703:27:::2;::::0;::::2;:::i;:::-;25655:93;::::0;::::2;::::0;;;;;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25640:108;;;25766:4;25758:23;;;::::0;-1:-1:-1;;;25758:23:24;;56178:2:32;25758:23:24::2;::::0;::::2;56160:21:32::0;56217:1;56197:18;;;56190:29;-1:-1:-1;;;56235:18:32;;;56228:36;56281:18;;25758:23:24::2;55976:329:32::0;25758:23:24::2;25792:52;25810:5;:22;;;25834:9;25792:17;:52::i;:::-;25862:35;::::0;;;:22:::2;:35;::::0;;;;25855:42;;-1:-1:-1;;;;;;25855:42:24;;::::2;::::0;;;;::::2;::::0;;;;::::2;::::0;;25862:35;25855:42:::2;;::::0;::::2;25862:35:::0;25855:42:::2;:::i;:::-;;::::0;::::2;::::0;;-1:-1:-1;;;;;;25855:42:24::2;::::0;;::::2;;::::0;::::2;;;:::i;:::-;;;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;;-1:-1:-1;;;;;;25855:42:24::2;::::0;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;-1:-1:-1::0;25855:42:24::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;;-1:-1:-1;;;;;;25855:42:24;;;::::2;::::0;::::2;::::0;;;::::2;::::0;;::::2;::::0;;;25907:27;;;:14:::2;:27;::::0;;;;;25855:42;25907:37;;::::2;:44:::0;;-1:-1:-1;;25907:44:24::2;::::0;;::::2;::::0;;25966:27;25922:11;;25966:27:::2;::::0;::::2;23694:2306;;;;;;2568:20:2::0;1808:1;3074:7;:22;2894:209;2568:20;23449:2551:24;;;;;:::o;2335:198:0:-;1355:13;:11;:13::i;:::-;-1:-1:-1;;;;;2423:22:0;::::1;2415:73;;;::::0;-1:-1:-1;;;2415:73:0;;56512:2:32;2415:73:0::1;::::0;::::1;56494:21:32::0;56551:2;56531:18;;;56524:30;56590:34;56570:18;;;56563:62;-1:-1:-1;;;56641:18:32;;;56634:36;56687:19;;2415:73:0::1;56310:402:32::0;2415:73:0::1;2498:28;2517:8;2498:18;:28::i;28112:247:24:-:0;28263:16;;28219:7;;-1:-1:-1;;;;;28246:33:24;28254:4;28246:33;28238:52;;;;-1:-1:-1;;;28238:52:24;;56919:2:32;28238:52:24;;;56901:21:32;56958:1;56938:18;;;56931:29;-1:-1:-1;;;56976:18:32;;;56969:36;57022:18;;28238:52:24;56717:329:32;28238:52:24;28318:33;;-1:-1:-1;;;28318:33:24;;:8;;:26;;:33;;28345:5;;28318:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28318:33:24;;;;;;;;;;;;:::i;:::-;28308:44;;;;;;28301:51;;28112:247;;;:::o;2601:287:2:-;1851:1;2733:7;;:19;2725:63;;;;-1:-1:-1;;;2725:63:2;;59896:2:32;2725:63:2;;;59878:21:32;59935:2;59915:18;;;59908:30;59974:33;59954:18;;;59947:61;60025:18;;2725:63:2;59694:355:32;2725:63:2;1851:1;2863:7;:18;2601:287::o;27223:883:24:-;27323:7;27367:5;:16;;;-1:-1:-1;;;;;27350:33:24;27358:4;-1:-1:-1;;;;;27350:33:24;;27342:52;;;;-1:-1:-1;;;27342:52:24;;60256:2:32;27342:52:24;;;60238:21:32;60295:1;60275:18;;;60268:29;-1:-1:-1;;;60313:18:32;;;60306:36;60359:18;;27342:52:24;60054:329:32;27342:52:24;27444:21;;;;27433:6;;-1:-1:-1;;;;;27425:40:24;;;27433:6;;27425:40;27404:93;;;;-1:-1:-1;;;27404:93:24;;60590:2:32;27404:93:24;;;60572:21:32;60629:1;60609:18;;;60602:29;-1:-1:-1;;;60647:18:32;;;60640:36;60693:18;;27404:93:24;60388:329:32;27404:93:24;27528:5;:22;;;:29;27561:2;27528:35;:86;;;;27579:5;:22;;;:29;27612:2;27579:35;27528:86;27507:139;;;;-1:-1:-1;;;27507:139:24;;60924:2:32;27507:139:24;;;60906:21:32;60963:1;60943:18;;;60936:29;-1:-1:-1;;;60981:18:32;;;60974:36;61027:18;;27507:139:24;60722:329:32;27507:139:24;27677:5;:33;;;:40;27721:2;27677:46;27656:99;;;;-1:-1:-1;;;27656:99:24;;61258:2:32;27656:99:24;;;61240:21:32;61297:1;61277:18;;;61270:29;-1:-1:-1;;;61315:18:32;;;61308:36;61361:18;;27656:99:24;61056:329:32;27656:99:24;27857:8;;27841:5;:12;;;27816:5;:22;;;27800:5;:13;;;27786:5;:11;;;:27;;;;:::i;:::-;:52;;;;:::i;:::-;:67;;;;:::i;:::-;:79;;27765:132;;;;-1:-1:-1;;;27765:132:24;;61592:2:32;27765:132:24;;;61574:21:32;61631:1;61611:18;;;61604:29;-1:-1:-1;;;61649:18:32;;;61642:36;61695:18;;27765:132:24;61390:329:32;27765:132:24;27990:5;:20;;;27983:28;;27955:5;:24;;;27948:32;;:63;;;;:::i;:::-;-1:-1:-1;;;;;27928:83:24;:16;:83;;27907:136;;;;-1:-1:-1;;;27907:136:24;;62111:2:32;27907:136:24;;;62093:21:32;62150:1;62130:18;;;62123:29;-1:-1:-1;;;62168:18:32;;;62161:36;62214:18;;27907:136:24;61909:329:32;27907:136:24;28071:27;;-1:-1:-1;;;28071:27:24;;:8;;:20;;:27;;28092:5;;28071:27;;;:::i;29778:634::-;30040:6;;30203:22;;;;30266:33;;;;30003:6;30313:28;;;:12;:28;;;;;:38;30003:6;;-1:-1:-1;;;;;30040:6:24;;:39;;30093:17;;30124:6;;30144:17;;30175:14;;30247:4;;30266:33;30313:38;;:42;;;;:82;;-1:-1:-1;30359:28:24;;;;:12;:28;;;;;:36;-1:-1:-1;;;30359:36:24;;;;30313:82;30040:365;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30021:384;29778:634;-1:-1:-1;;;;;;29778:634:24:o;30834:1644::-;31008:4;31098:1;31089:6;:10;:99;;;;;31176:5;:12;;;31151:5;:22;;;31135:5;:13;;;31121:5;:11;;;:27;;;;:::i;:::-;:52;;;;:::i;:::-;:67;;;;:::i;:::-;31111:6;31103:85;31089:99;31085:142;;;-1:-1:-1;31211:5:24;31204:12;;31085:142;31276:6;;:63;;-1:-1:-1;;;31276:63:24;;;;;3082:25:32;;;31237:36:24;;-1:-1:-1;;;;;31276:6:24;;:55;;3055:18:32;;31276:63:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31276:63:24;;;;;;;;;;;;:::i;:::-;31237:102;;31390:1;31357:23;:30;:34;31349:67;;;;-1:-1:-1;;;31349:67:24;;63795:2:32;31349:67:24;;;63777:21:32;63834:2;63814:18;;;63807:30;-1:-1:-1;;;63853:18:32;;;63846:50;63913:18;;31349:67:24;63593:344:32;31349:67:24;31464:76;;-1:-1:-1;;;31464:76:24;;31427:34;;31464:8;;:29;;:76;;31507:23;;31464:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31427:113;;31680:14;31724:5;:20;;;31697:5;:24;;;:47;;;;:::i;:::-;31680:64;;;;31787:9;31758:26;:38;31754:81;;;31819:5;31812:12;;;;;;;31754:81;31890:13;31907:1;31890:18;31886:60;;31931:4;31924:11;;;;;;;31886:60;31992:6;;32070:26;;;;31956:33;;-1:-1:-1;;;;;31992:6:24;;:55;;:6;;32061:35;;;;:6;:35;:::i;:::-;:39;;;;:::i;:::-;31992:118;;;;;;;;;;;;;3082:25:32;;3070:2;3055:18;;2936:177;31992:118:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31992:118:24;;;;;;;;;;;;:::i;:::-;31956:154;;32158:1;32128:20;:27;:31;32120:50;;;;-1:-1:-1;;;32120:50:24;;64333:2:32;32120:50:24;;;64315:21:32;64372:1;64352:18;;;64345:29;-1:-1:-1;;;64390:18:32;;;64383:36;64436:18;;32120:50:24;64131:329:32;32120:50:24;32215:73;;-1:-1:-1;;;32215:73:24;;32181:31;;32215:8;;:29;;:73;;32258:20;;32215:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32181:107;;32398:5;:14;;;32372:40;;:23;:40;;;;:::i;:::-;32356:13;:56;32352:98;;;32435:4;32428:11;;;;;;;;;32352:98;-1:-1:-1;32466:5:24;;30834:1644;-1:-1:-1;;;;;;;;;30834:1644:24:o;28365:94::-;28416:4;28443:1;28439;:5;:13;;28451:1;28439:13;;;28447:1;28439:13;28432:20;28365:94;-1:-1:-1;;;28365:94:24:o;28532:145::-;-1:-1:-1;;;;;28602:14:24;;;;;;:8;:14;;;;;:24;;28620:6;;28602:14;:24;;28620:6;;28602:24;:::i;:::-;;;;-1:-1:-1;;28641:29:24;;;;;;28657:4;;28663:6;;28641:29;:::i;33350:291::-;33431:10;;33427:208;;33486:22;;33478:55;;33458:15;;-1:-1:-1;;;;;33486:22:24;;33522:6;;33458:15;33478:55;33458:15;33478:55;33522:6;33486:22;33478:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33457:76;;;33555:10;33547:29;;;;-1:-1:-1;;;33547:29:24;;64667:2:32;33547:29:24;;;64649:21:32;64706:1;64686:18;;;64679:29;-1:-1:-1;;;64724:18:32;;;64717:36;64770:18;;33547:29:24;64465:329:32;33547:29:24;33606:9;33595:29;33617:6;33595:29;;;;3082:25:32;;3070:2;3055:18;;2936:177;33595:29:24;;;;;;;;33443:192;33427:208;33350:291;;:::o;29194:157::-;-1:-1:-1;;;;;29284:22:24;;29261:4;29284:22;;;:16;:22;;;;;;:26;;;;:60;;-1:-1:-1;;;;;;;29314:25:24;;;;;:19;:25;;;;;;:30;;29194:157::o;29046:142::-;-1:-1:-1;;;;;29127:16:24;;29104:4;29127:16;;;:10;:16;;;;;;:20;;;;:54;;-1:-1:-1;;;;;;;29151:25:24;;;;;:19;:25;;;;;;:30;;29046:142::o;1620:130:0:-;965:10:4;1683:7:0;:5;:7::i;:::-;-1:-1:-1;;;;;1683:23:0;;1675:68;;;;-1:-1:-1;;;1675:68:0;;65001:2:32;1675:68:0;;;64983:21:32;;;65020:18;;;65013:30;65079:34;65059:18;;;65052:62;65131:18;;1675:68:0;64799:356:32;2687:187:0;2779:6;;;-1:-1:-1;;;;;2795:17:0;;;-1:-1:-1;;;;;;2795:17:0;;;;;;;2827:40;;2779:6;;;2795:17;2779:6;;2827:40;;2760:16;;2827:40;2750:124;2687:187;:::o;28683:145:24:-;-1:-1:-1;;;;;28753:14:24;;;;;;:8;:14;;;;;:24;;28771:6;;28753:14;:24;;28771:6;;28753:24;:::i;:::-;;;;-1:-1:-1;;28792:29:24;;;;;;28808:4;;28814:6;;28792:29;:::i;32484:860::-;32696:6;;:51;;-1:-1:-1;;;32696:51:24;;;;;3082:25:32;;;32641:4:24;;;;-1:-1:-1;;;;;32696:6:24;;;;:40;;3055:18:32;;32696:51:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32696:51:24;;;;;;;;;;;;:::i;:::-;32657:90;;32798:1;32765:23;:30;:34;32757:53;;;;-1:-1:-1;;;32757:53:24;;65362:2:32;32757:53:24;;;65344:21:32;65401:1;65381:18;;;65374:29;-1:-1:-1;;;65419:18:32;;;65412:36;65465:18;;32757:53:24;65160:329:32;32757:53:24;32858:54;;-1:-1:-1;;;32858:54:24;;32821:34;;32858:8;;:29;;:54;;32888:23;;32858:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33087:12;;33066:18;;;;33013:25;;;;:14;:25;;;;;:42;32821:91;;-1:-1:-1;33087:12:24;;33013:71;;;;;;:::i;:::-;:86;;;;:::i;:::-;32984:26;:115;32980:157;;;33122:4;33115:11;;;;;;32980:157;33225:5;:16;;;33207:34;;:15;:34;:70;;;;33260:5;:17;;;33245:32;;:12;:32;33207:70;33203:112;;;33300:4;33293:11;;;;;;33203:112;-1:-1:-1;33332:5:24;;32484:860;-1:-1:-1;;;;;32484:860:24:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;348:127:32:-;409:10;404:3;400:20;397:1;390:31;440:4;437:1;430:15;464:4;461:1;454:15;480:255;552:2;546:9;594:6;582:19;;-1:-1:-1;;;;;616:34:32;;652:22;;;613:62;610:88;;;678:18;;:::i;:::-;714:2;707:22;480:255;:::o;740:::-;812:2;806:9;854:6;842:19;;-1:-1:-1;;;;;876:34:32;;912:22;;;873:62;870:88;;;938:18;;:::i;1000:253::-;1072:2;1066:9;1114:4;1102:17;;-1:-1:-1;;;;;1134:34:32;;1170:22;;;1131:62;1128:88;;;1196:18;;:::i;1258:275::-;1329:2;1323:9;1394:2;1375:13;;-1:-1:-1;;1371:27:32;1359:40;;-1:-1:-1;;;;;1414:34:32;;1450:22;;;1411:62;1408:88;;;1476:18;;:::i;:::-;1512:2;1505:22;1258:275;;-1:-1:-1;1258:275:32:o;1538:187::-;1587:4;-1:-1:-1;;;;;1609:30:32;;1606:56;;;1642:18;;:::i;:::-;-1:-1:-1;1708:2:32;1687:15;-1:-1:-1;;1683:29:32;1714:4;1679:40;;1538:187::o;1730:464::-;1773:5;1826:3;1819:4;1811:6;1807:17;1803:27;1793:55;;1844:1;1841;1834:12;1793:55;1880:6;1867:20;1911:49;1927:32;1956:2;1927:32;:::i;:::-;1911:49;:::i;:::-;1985:2;1976:7;1969:19;2031:3;2024:4;2019:2;2011:6;2007:15;2003:26;2000:35;1997:55;;;2048:1;2045;2038:12;1997:55;2113:2;2106:4;2098:6;2094:17;2087:4;2078:7;2074:18;2061:55;2161:1;2136:16;;;2154:4;2132:27;2125:38;;;;2140:7;1730:464;-1:-1:-1;;;1730:464:32:o;2199:543::-;2287:6;2295;2348:2;2336:9;2327:7;2323:23;2319:32;2316:52;;;2364:1;2361;2354:12;2316:52;2391:23;;-1:-1:-1;;;;;2463:14:32;;;2460:34;;;2490:1;2487;2480:12;2460:34;2513:50;2555:7;2546:6;2535:9;2531:22;2513:50;:::i;:::-;2503:60;;2616:2;2605:9;2601:18;2588:32;2572:48;;2645:2;2635:8;2632:16;2629:36;;;2661:1;2658;2651:12;2629:36;;2684:52;2728:7;2717:8;2706:9;2702:24;2684:52;:::i;:::-;2674:62;;;2199:543;;;;;:::o;3118:131::-;-1:-1:-1;;;;;3193:31:32;;3183:42;;3173:70;;3239:1;3236;3229:12;3254:134;3322:20;;3351:31;3322:20;3351:31;:::i;3393:160::-;3459:20;;3519:1;3508:20;;;3498:31;;3488:59;;3543:1;3540;3533:12;3558:163;3625:20;;3685:10;3674:22;;3664:33;;3654:61;;3711:1;3708;3701:12;3726:159;3793:20;;3853:6;3842:18;;3832:29;;3822:57;;3875:1;3872;3865:12;3890:2094;3948:5;3996:6;3984:9;3979:3;3975:19;3971:32;3968:52;;;4016:1;4013;4006:12;3968:52;4038:22;;:::i;:::-;4029:31;;4083:29;4102:9;4083:29;:::i;:::-;4076:5;4069:44;4145:38;4179:2;4168:9;4164:18;4145:38;:::i;:::-;4140:2;4129:14;;4122:62;4235:2;4220:18;;4207:32;-1:-1:-1;;;;;4288:14:32;;;4285:34;;;4315:1;4312;4305:12;4285:34;4351:46;4393:3;4384:6;4373:9;4369:22;4351:46;:::i;:::-;4346:2;4339:5;4335:14;4328:70;4430:38;4464:2;4453:9;4449:18;4430:38;:::i;:::-;4425:2;4418:5;4414:14;4407:62;4522:3;4511:9;4507:19;4494:33;4478:49;;4552:2;4542:8;4539:16;4536:36;;;4568:1;4565;4558:12;4536:36;4605:48;4649:3;4638:8;4627:9;4623:24;4605:48;:::i;:::-;4599:3;4592:5;4588:15;4581:73;4715:3;4704:9;4700:19;4687:33;4681:3;4674:5;4670:15;4663:58;4782:3;4771:9;4767:19;4754:33;4748:3;4741:5;4737:15;4730:58;4821:37;4853:3;4842:9;4838:19;4821:37;:::i;:::-;4815:3;4808:5;4804:15;4797:62;4878:3;4868:13;;4934:2;4923:9;4919:18;4906:32;4963:2;4953:8;4950:16;4947:36;;;4979:1;4976;4969:12;4947:36;5015:48;5059:3;5048:8;5037:9;5033:24;5015:48;:::i;:::-;5010:2;5003:5;4999:14;4992:72;;;;5083:3;5146:2;5135:9;5131:18;5118:32;5113:2;5106:5;5102:14;5095:56;;5170:3;5205:37;5238:2;5227:9;5223:18;5205:37;:::i;:::-;5189:14;;;5182:61;5262:3;5297:37;5315:18;;;5297:37;:::i;:::-;5281:14;;;5274:61;5354:3;5389:37;5407:18;;;5389:37;:::i;:::-;5373:14;;;5366:61;5446:3;5481:37;5499:18;;;5481:37;:::i;:::-;5465:14;;;5458:61;5538:3;5573:37;5591:18;;;5573:37;:::i;:::-;5557:14;;;5550:61;5630:3;5665:37;5683:18;;;5665:37;:::i;:::-;5649:14;;;5642:61;5723:3;5759:38;5777:19;;;5759:38;:::i;:::-;5742:15;;;5735:63;5818:3;5867:19;;;5854:33;5837:15;;;5830:58;5908:3;5957:19;;;5944:33;5927:15;;;5920:58;;;;5746:5;3890:2094;-1:-1:-1;3890:2094:32:o;5989:354::-;6078:6;6131:2;6119:9;6110:7;6106:23;6102:32;6099:52;;;6147:1;6144;6137:12;6099:52;6174:23;;-1:-1:-1;;;;;6209:30:32;;6206:50;;;6252:1;6249;6242:12;6206:50;6275:62;6329:7;6320:6;6309:9;6305:22;6275:62;:::i;6530:177::-;6598:20;;-1:-1:-1;;;;;;6647:35:32;;6637:46;;6627:74;;6697:1;6694;6687:12;6712:118;6798:5;6791:13;6784:21;6777:5;6774:32;6764:60;;6820:1;6817;6810:12;6835:128;6900:20;;6929:28;6900:20;6929:28;:::i;6968:2188::-;7025:5;7073:6;7061:9;7056:3;7052:19;7048:32;7045:52;;;7093:1;7090;7083:12;7045:52;7115:22;;:::i;:::-;7106:31;;7160:29;7179:9;7160:29;:::i;:::-;7153:5;7146:44;7222:38;7256:2;7245:9;7241:18;7222:38;:::i;:::-;7217:2;7210:5;7206:14;7199:62;7293:38;7327:2;7316:9;7312:18;7293:38;:::i;:::-;7288:2;7277:14;;7270:62;7383:2;7368:18;;7355:32;-1:-1:-1;;;;;7436:14:32;;;7433:34;;;7463:1;7460;7453:12;7433:34;7499:46;7541:3;7532:6;7521:9;7517:22;7499:46;:::i;:::-;7494:2;7487:5;7483:14;7476:70;7579:39;7613:3;7602:9;7598:19;7579:39;:::i;:::-;7573:3;7566:5;7562:15;7555:64;7672:3;7661:9;7657:19;7644:33;7628:49;;7702:2;7692:8;7689:16;7686:36;;;7718:1;7715;7708:12;7686:36;7755:48;7799:3;7788:8;7777:9;7773:24;7755:48;:::i;:::-;7749:3;7742:5;7738:15;7731:73;7865:3;7854:9;7850:19;7837:33;7831:3;7824:5;7820:15;7813:58;7932:3;7921:9;7917:19;7904:33;7898:3;7891:5;7887:15;7880:58;7957:3;7947:13;;7992:38;8026:2;8015:9;8011:18;7992:38;:::i;:::-;7987:2;7980:5;7976:14;7969:62;8050:3;8040:13;;8106:2;8095:9;8091:18;8078:32;8135:2;8125:8;8122:16;8119:36;;;8151:1;8148;8141:12;8119:36;8187:48;8231:3;8220:8;8209:9;8205:24;8187:48;:::i;:::-;8182:2;8175:5;8171:14;8164:72;;;;8255:3;8290:37;8323:2;8312:9;8308:18;8290:37;:::i;:::-;8274:14;;;8267:61;8347:3;8382:36;8399:18;;;8382:36;:::i;:::-;8366:14;;;8359:60;8438:3;8486:18;;;8473:32;8457:14;;;8450:56;8525:3;8560:37;8578:18;;;8560:37;:::i;:::-;8544:14;;;8537:61;8617:3;8652:37;8670:18;;;8652:37;:::i;:::-;8636:14;;;8629:61;8709:3;8744:37;8762:18;;;8744:37;:::i;:::-;8728:14;;;8721:61;8802:3;8838:38;8856:19;;;8838:38;:::i;:::-;8821:15;;;8814:63;8897:3;8933:36;8949:19;;;8933:36;:::i;:::-;8916:15;;;8909:61;8990:3;9039:19;;;9026:33;9009:15;;;9002:58;9080:3;9129:19;;;9116:33;9099:15;;;9092:58;;;;8920:5;6968:2188;-1:-1:-1;6968:2188:32:o;9161:1040::-;9312:6;9320;9328;9336;9344;9397:3;9385:9;9376:7;9372:23;9368:33;9365:53;;;9414:1;9411;9404:12;9365:53;9441:23;;-1:-1:-1;;;;;9513:14:32;;;9510:34;;;9540:1;9537;9530:12;9510:34;9563:61;9616:7;9607:6;9596:9;9592:22;9563:61;:::i;:::-;9553:71;;9677:2;9666:9;9662:18;9649:32;9633:48;;9706:2;9696:8;9693:16;9690:36;;;9722:1;9719;9712:12;9690:36;9745:52;9789:7;9778:8;9767:9;9763:24;9745:52;:::i;:::-;9735:62;;9850:2;9839:9;9835:18;9822:32;9806:48;;9879:2;9869:8;9866:16;9863:36;;;9895:1;9892;9885:12;9863:36;9918:52;9962:7;9951:8;9940:9;9936:24;9918:52;:::i;:::-;9908:62;;10023:2;10012:9;10008:18;9995:32;9979:48;;10052:2;10042:8;10039:16;10036:36;;;10068:1;10065;10058:12;10036:36;;10091:52;10135:7;10124:8;10113:9;10109:24;10091:52;:::i;:::-;9161:1040;;;;-1:-1:-1;9161:1040:32;;10190:3;10175:19;10162:33;;9161:1040;-1:-1:-1;;;9161:1040:32:o;10386:180::-;10445:6;10498:2;10486:9;10477:7;10473:23;10469:32;10466:52;;;10514:1;10511;10504:12;10466:52;-1:-1:-1;10537:23:32;;10386:180;-1:-1:-1;10386:180:32:o;10571:873::-;10684:6;10692;10700;10708;10761:3;10749:9;10740:7;10736:23;10732:33;10729:53;;;10778:1;10775;10768:12;10729:53;10805:23;;-1:-1:-1;;;;;10877:14:32;;;10874:34;;;10904:1;10901;10894:12;10874:34;10927:50;10969:7;10960:6;10949:9;10945:22;10927:50;:::i;:::-;10917:60;;11030:2;11019:9;11015:18;11002:32;10986:48;;11059:2;11049:8;11046:16;11043:36;;;11075:1;11072;11065:12;11043:36;11098:52;11142:7;11131:8;11120:9;11116:24;11098:52;:::i;:::-;11088:62;;11200:2;11189:9;11185:18;11172:32;11159:45;;11213:28;11235:5;11213:28;:::i;:::-;11260:5;;-1:-1:-1;11318:2:32;11303:18;;11290:32;;11334:16;;;11331:36;;;11363:1;11360;11353:12;11331:36;;11386:52;11430:7;11419:8;11408:9;11404:24;11386:52;:::i;:::-;11376:62;;;10571:873;;;;;;;:::o;11642:247::-;11701:6;11754:2;11742:9;11733:7;11729:23;11725:32;11722:52;;;11770:1;11767;11760:12;11722:52;11809:9;11796:23;11828:31;11853:5;11828:31;:::i;12367:183::-;12427:4;-1:-1:-1;;;;;12449:30:32;;12446:56;;;12482:18;;:::i;:::-;-1:-1:-1;12527:1:32;12523:14;12539:4;12519:25;;12367:183::o;12555:891::-;12639:6;12670:2;12713;12701:9;12692:7;12688:23;12684:32;12681:52;;;12729:1;12726;12719:12;12681:52;12756:23;;-1:-1:-1;;;;;12791:30:32;;12788:50;;;12834:1;12831;12824:12;12788:50;12857:22;;12910:4;12902:13;;12898:27;-1:-1:-1;12888:55:32;;12939:1;12936;12929:12;12888:55;12975:2;12962:16;12998:60;13014:43;13054:2;13014:43;:::i;12998:60::-;13092:15;;;13174:1;13170:10;;;;13162:19;;13158:28;;;13123:12;;;;13198:19;;;13195:39;;;13230:1;13227;13220:12;13195:39;13254:11;;;;13274:142;13290:6;13285:3;13282:15;13274:142;;;13356:17;;13344:30;;13307:12;;;;13394;;;;13274:142;;;13435:5;12555:891;-1:-1:-1;;;;;;;12555:891:32:o;13451:104::-;-1:-1:-1;;;;;13517:31:32;13505:44;;13451:104::o;13560:250::-;13645:1;13655:113;13669:6;13666:1;13663:13;13655:113;;;13745:11;;;13739:18;13726:11;;;13719:39;13691:2;13684:10;13655:113;;;-1:-1:-1;;13802:1:32;13784:16;;13777:27;13560:250::o;13815:271::-;13857:3;13895:5;13889:12;13922:6;13917:3;13910:19;13938:76;14007:6;14000:4;13995:3;13991:14;13984:4;13977:5;13973:16;13938:76;:::i;:::-;14068:2;14047:15;-1:-1:-1;;14043:29:32;14034:39;;;;14075:4;14030:50;;13815:271;-1:-1:-1;;13815:271:32:o;14091:1665::-;14303:4;14332:2;14372;14361:9;14357:18;14402:2;14391:9;14384:21;14425:6;14460;14454:13;14491:6;14483;14476:22;14517:2;14507:12;;14550:2;14539:9;14535:18;14528:25;;14612:2;14602:6;14599:1;14595:14;14584:9;14580:30;14576:39;14650:2;14642:6;14638:15;14671:1;14681:1046;14695:6;14692:1;14689:13;14681:1046;;;14760:22;;;-1:-1:-1;;14756:36:32;14744:49;;14816:13;;14884:9;;14869:25;;14941:11;;;14935:18;-1:-1:-1;;;;;14931:44:32;14914:15;;;14907:69;15015:11;;;15009:18;14852:4;15047:15;;;15040:27;;;14852:4;15094:48;15126:15;;;15009:18;15094:48;:::i;:::-;15080:62;;;15165:4;15218:2;15214;15210:11;15204:18;15271:6;15263;15259:19;15254:2;15246:6;15242:15;15235:44;15306:41;15340:6;15324:14;15306:41;:::i;:::-;15292:55;;;;15370:4;15439:2;15435;15431:11;15425:18;15418:26;15411:34;15406:2;15398:6;15394:15;15387:59;;15469:4;15522:2;15518;15514:11;15508:18;15486:40;;15575:6;15567;15563:19;15558:2;15550:6;15546:15;15539:44;;15606:41;15640:6;15624:14;15606:41;:::i;:::-;15705:12;;;;15596:51;-1:-1:-1;;;15670:15:32;;;;14717:1;14710:9;14681:1046;;;-1:-1:-1;15744:6:32;;14091:1665;-1:-1:-1;;;;;;;;14091:1665:32:o;15761:203::-;-1:-1:-1;;;;;15925:32:32;;;;15907:51;;15895:2;15880:18;;15761:203::o;15969:309::-;16034:6;16042;16095:2;16083:9;16074:7;16070:23;16066:32;16063:52;;;16111:1;16108;16101:12;16063:52;16147:9;16134:23;16124:33;;16207:2;16196:9;16192:18;16179:32;16220:28;16242:5;16220:28;:::i;:::-;16267:5;16257:15;;;15969:309;;;;;:::o;16283:572::-;16389:6;16397;16450:2;16438:9;16429:7;16425:23;16421:32;16418:52;;;16466:1;16463;16456:12;16418:52;16493:23;;-1:-1:-1;;;;;16565:14:32;;;16562:34;;;16592:1;16589;16582:12;16562:34;16615:61;16668:7;16659:6;16648:9;16644:22;16615:61;:::i;16860:352::-;16948:6;17001:2;16989:9;16980:7;16976:23;16972:32;16969:52;;;17017:1;17014;17007:12;16969:52;17044:23;;-1:-1:-1;;;;;17079:30:32;;17076:50;;;17122:1;17119;17112:12;17076:50;17145:61;17198:7;17189:6;17178:9;17174:22;17145:61;:::i;17217:574::-;17324:6;17332;17385:2;17373:9;17364:7;17360:23;17356:32;17353:52;;;17401:1;17398;17391:12;17353:52;17428:23;;-1:-1:-1;;;;;17500:14:32;;;17497:34;;;17527:1;17524;17517:12;17497:34;17550:62;17604:7;17595:6;17584:9;17580:22;17550:62;:::i;18084:1317::-;18213:6;18221;18229;18237;18245;18298:3;18286:9;18277:7;18273:23;18269:33;18266:53;;;18315:1;18312;18305:12;18266:53;18338:23;;;-1:-1:-1;18380:2:32;18418:18;;;18405:32;-1:-1:-1;;;;;18486:14:32;;;18483:34;;;18513:1;18510;18503:12;18483:34;18536:50;18578:7;18569:6;18558:9;18554:22;18536:50;:::i;:::-;18526:60;;18633:2;18622:9;18618:18;18605:32;18595:42;;18684:2;18673:9;18669:18;18656:32;18646:42;;18741:3;18730:9;18726:19;18713:33;18697:49;;18771:2;18761:8;18758:16;18755:36;;;18787:1;18784;18777:12;18755:36;-1:-1:-1;18810:24:32;;18865:4;18857:13;;18853:27;-1:-1:-1;18843:55:32;;18894:1;18891;18884:12;18843:55;18930:2;18917:16;18953:60;18969:43;19009:2;18969:43;:::i;18953:60::-;19047:15;;;19129:1;19125:10;;;;19117:19;;19113:28;;;19078:12;;;;19153:19;;;19150:39;;;19185:1;19182;19175:12;19150:39;19209:11;;;;19229:142;19245:6;19240:3;19237:15;19229:142;;;19311:17;;19299:30;;19262:12;;;;19349;;;;19229:142;;;19390:5;19380:15;;;;;;;18084:1317;;;;;;;;:::o;19971:380::-;20050:1;20046:12;;;;20093;;;20114:61;;20168:4;20160:6;20156:17;20146:27;;20114:61;20221:2;20213:6;20210:14;20190:18;20187:38;20184:161;;20267:10;20262:3;20258:20;20255:1;20248:31;20302:4;20299:1;20292:15;20330:4;20327:1;20320:15;20184:161;;19971:380;;;:::o;20482:545::-;20584:2;20579:3;20576:11;20573:448;;;20620:1;20645:5;20641:2;20634:17;20690:4;20686:2;20676:19;20760:2;20748:10;20744:19;20741:1;20737:27;20731:4;20727:38;20796:4;20784:10;20781:20;20778:47;;;-1:-1:-1;20819:4:32;20778:47;20874:2;20869:3;20865:12;20862:1;20858:20;20852:4;20848:31;20838:41;;20929:82;20947:2;20940:5;20937:13;20929:82;;;20992:17;;;20973:1;20962:13;20929:82;;;20933:3;;;20573:448;20482:545;;;:::o;21203:1352::-;21323:10;;-1:-1:-1;;;;;21345:30:32;;21342:56;;;21378:18;;:::i;:::-;21407:97;21497:6;21457:38;21489:4;21483:11;21457:38;:::i;:::-;21451:4;21407:97;:::i;:::-;21559:4;;21623:2;21612:14;;21640:1;21635:663;;;;22342:1;22359:6;22356:89;;;-1:-1:-1;22411:19:32;;;22405:26;22356:89;-1:-1:-1;;21160:1:32;21156:11;;;21152:24;21148:29;21138:40;21184:1;21180:11;;;21135:57;22458:81;;21605:944;;21635:663;20429:1;20422:14;;;20466:4;20453:18;;-1:-1:-1;;21671:20:32;;;21789:236;21803:7;21800:1;21797:14;21789:236;;;21892:19;;;21886:26;21871:42;;21984:27;;;;21952:1;21940:14;;;;21819:19;;21789:236;;;21793:3;22053:6;22044:7;22041:19;22038:201;;;22114:19;;;22108:26;-1:-1:-1;;22197:1:32;22193:14;;;22209:3;22189:24;22185:37;22181:42;22166:58;22151:74;;22038:201;-1:-1:-1;;;;;22285:1:32;22269:14;;;22265:22;22252:36;;-1:-1:-1;21203:1352:32:o;22560:772::-;22610:3;22651:5;22645:12;22680:36;22706:9;22680:36;:::i;:::-;22725:19;;;22763:4;22786:1;22803:18;;;22830:146;;;;22990:1;22985:341;;;;22796:530;;22830:146;-1:-1:-1;;22872:24:32;;22858:12;;;22851:46;22944:14;;22937:22;22934:1;22930:30;22921:40;;22917:49;;;-1:-1:-1;22830:146:32;;22985:341;23016:5;23013:1;23006:16;23063:2;23060:1;23050:16;23088:1;23102:174;23116:6;23113:1;23110:13;23102:174;;;23203:14;;23185:11;;;23181:20;;23174:44;23246:16;;;;23131:10;;23102:174;;;23300:11;;23296:20;;;-1:-1:-1;;22796:530:32;;;;;;22560:772;;;;:::o;23337:393::-;23528:2;23517:9;23510:21;23491:4;23554:53;23603:2;23592:9;23588:18;23580:6;23554:53;:::i;:::-;23655:9;23647:6;23643:22;23638:2;23627:9;23623:18;23616:50;23683:41;23717:6;23709;23683:41;:::i;23735:127::-;23796:10;23791:3;23787:20;23784:1;23777:31;23827:4;23824:1;23817:15;23851:4;23848:1;23841:15;23867:135;23906:3;23927:17;;;23924:43;;23947:18;;:::i;:::-;-1:-1:-1;23994:1:32;23983:13;;23867:135::o;24007:329::-;24209:2;24191:21;;;24248:1;24228:18;;;24221:29;-1:-1:-1;;;24281:2:32;24266:18;;24259:36;24327:2;24312:18;;24007:329::o;24341:::-;24543:2;24525:21;;;24582:1;24562:18;;;24555:29;-1:-1:-1;;;24615:2:32;24600:18;;24593:36;24661:2;24646:18;;24341:329::o;24675:394::-;24915:1;24911;24906:3;24902:11;24898:19;24890:6;24886:32;24875:9;24868:51;24955:6;24950:2;24939:9;24935:18;24928:34;24998:2;24993;24982:9;24978:18;24971:30;24849:4;25018:45;25059:2;25048:9;25044:18;25036:6;25018:45;:::i;25074:245::-;25141:6;25194:2;25182:9;25173:7;25169:23;25165:32;25162:52;;;25210:1;25207;25200:12;25162:52;25242:9;25236:16;25261:28;25283:5;25261:28;:::i;25324:329::-;25526:2;25508:21;;;25565:1;25545:18;;;25538:29;-1:-1:-1;;;25598:2:32;25583:18;;25576:36;25644:2;25629:18;;25324:329::o;27996:128::-;28063:9;;;28084:11;;;28081:37;;;28098:18;;:::i;28129:345::-;-1:-1:-1;;;;;28349:32:32;;;;28331:51;;28413:2;28398:18;;28391:34;;;;28456:2;28441:18;;28434:34;28319:2;28304:18;;28129:345::o;28479:168::-;28552:9;;;28583;;28600:15;;;28594:22;;28580:37;28570:71;;28621:18;;:::i;28652:127::-;28713:10;28708:3;28704:20;28701:1;28694:31;28744:4;28741:1;28734:15;28768:4;28765:1;28758:15;28784:120;28824:1;28850;28840:35;;28855:18;;:::i;:::-;-1:-1:-1;28889:9:32;;28784:120::o;29468:2429::-;29583:12;;-1:-1:-1;;;;;;29226:35:32;29214:48;;29521:3;29549:6;29647:4;29640:5;29636:16;29630:23;29662:48;29704:4;29699:3;29695:14;29681:12;29662:48;:::i;:::-;;29758:4;29751:5;29747:16;29741:23;29773:50;29817:4;29812:3;29808:14;29792;29773:50;:::i;:::-;;29871:4;29864:5;29860:16;29854:23;29909:2;29902:4;29897:3;29893:14;29886:26;29933:47;29976:2;29971:3;29967:12;29951:14;29933:47;:::i;:::-;29921:59;;;30028:4;30021:5;30017:16;30011:23;30043:50;30087:4;30082:3;30078:14;30062;30043:50;:::i;:::-;;30141:4;30134:5;30130:16;30124:23;30189:3;30183:4;30179:14;30172:4;30167:3;30163:14;30156:38;30217:39;30251:4;30235:14;30217:39;:::i;:::-;30203:53;;;30305:4;30298:5;30294:16;30288:23;30281:4;30276:3;30272:14;30265:47;30361:4;30354:5;30350:16;30344:23;30337:4;30332:3;30328:14;30321:47;30387:6;30441:2;30434:5;30430:14;30424:21;30454:48;30498:2;30493:3;30489:12;30473:14;30454:48;:::i;:::-;;;30521:6;30575:2;30568:5;30564:14;30558:21;30621:3;30613:6;30609:16;30604:2;30599:3;30595:12;30588:38;30649:41;30683:6;30667:14;30649:41;:::i;:::-;30635:55;;;;30709:6;30763:2;30756:5;30752:14;30746:21;30776:47;30819:2;30814:3;30810:12;30794:14;29349:10;29338:22;29326:35;;29273:94;30776:47;;;30842:6;30896:2;30889:5;30885:14;30879:21;30909:46;30951:2;30946:3;30942:12;30926:14;29447:1;29436:20;29424:33;;29372:91;30909:46;-1:-1:-1;;30974:6:32;31016:14;;;31010:21;30996:12;;;30989:43;31051:6;31094:14;;;31088:21;29349:10;29338:22;;;31152:12;;;29326:35;;;;31184:6;31228:14;;;31222:21;29338:22;;31287:12;;;29326:35;31319:6;31363:14;;;31357:21;29338:22;;;31422:12;;;29326:35;31455:6;31499:15;;;31493:22;17872:6;17861:18;31559:13;;;17849:31;31593:6;31637:15;;;31631:22;11964:13;11957:21;31695:13;;;11945:34;31729:6;31772:15;;;31766:22;31751:13;;;31744:45;31809:6;31852:15;;;31846:22;31831:13;;;;31824:45;;;;-1:-1:-1;31831:13:32;29468:2429::o;31902:348::-;32125:2;32114:9;32107:21;32088:4;32145:56;32197:2;32186:9;32182:18;32174:6;32145:56;:::i;:::-;32137:64;;32237:6;32232:2;32221:9;32217:18;32210:34;31902:348;;;;;:::o;32255:125::-;32320:9;;;32341:10;;;32338:36;;;32354:18;;:::i;32595:435::-;-1:-1:-1;;;;;32846:32:32;;;;32828:51;;32910:2;32895:18;;32888:34;;;;32965:14;32958:22;32953:2;32938:18;;32931:50;33012:2;32997:18;;32990:34;32815:3;32800:19;;32595:435::o;33035:287::-;33164:3;33202:6;33196:13;33218:66;33277:6;33272:3;33265:4;33257:6;33253:17;33218:66;:::i;:::-;33300:16;;;;;33035:287;-1:-1:-1;;33035:287:32:o;33327:531::-;33591:10;33583:6;33579:23;33568:9;33561:42;33639:6;33634:2;33623:9;33619:18;33612:34;33682:3;33677:2;33666:9;33662:18;33655:31;33542:4;33703:46;33744:3;33733:9;33729:19;33721:6;33703:46;:::i;:::-;33792:14;;33785:22;33780:2;33765:18;;33758:50;-1:-1:-1;33839:3:32;33824:19;33817:35;33695:54;33327:531;-1:-1:-1;;;33327:531:32:o;33863:329::-;34065:2;34047:21;;;34104:1;34084:18;;;34077:29;-1:-1:-1;;;34137:2:32;34122:18;;34115:36;34183:2;34168:18;;33863:329::o;34197:::-;34399:2;34381:21;;;34438:1;34418:18;;;34411:29;-1:-1:-1;;;34471:2:32;34456:18;;34449:36;34517:2;34502:18;;34197:329::o;34531:274::-;-1:-1:-1;;;;;34723:32:32;;;;34705:51;;34787:2;34772:18;;34765:34;34693:2;34678:18;;34531:274::o;35812:255::-;-1:-1:-1;;;36014:20:32;;36059:1;36050:11;;35812:255::o;36366:256::-;-1:-1:-1;;;36568:21:32;;36614:1;36605:11;;36366:256::o;37888:329::-;38090:2;38072:21;;;38129:1;38109:18;;;38102:29;-1:-1:-1;;;38162:2:32;38147:18;;38140:36;38208:2;38193:18;;37888:329::o;38222:112::-;38254:1;38280;38270:35;;38285:18;;:::i;:::-;-1:-1:-1;38319:9:32;;38222:112::o;39260:127::-;39321:10;39316:3;39312:20;39309:1;39302:31;39352:4;39349:1;39342:15;39376:4;39373:1;39366:15;40060:656;40321:6;40316:3;40309:19;40291:3;40357:6;40351:13;40373:73;40439:6;40434:2;40429:3;40425:12;40420:2;40412:6;40408:15;40373:73;:::i;:::-;40474:6;40469:3;40465:16;40455:26;;40542:1;40538;40534:2;40530:10;40526:18;40522:23;40514:6;40510:36;40505:2;40501;40497:11;40490:57;40578:6;40572:13;40594:74;40659:8;40654:2;40650;40646:11;40641:2;40633:6;40629:15;40594:74;:::i;:::-;40688:17;40707:2;40684:26;;40060:656;-1:-1:-1;;;;;;40060:656:32:o;40721:442::-;40774:5;40827:3;40820:4;40812:6;40808:17;40804:27;40794:55;;40845:1;40842;40835:12;40794:55;40874:6;40868:13;40905:49;40921:32;40950:2;40921:32;:::i;40905:49::-;40979:2;40970:7;40963:19;41025:3;41018:4;41013:2;41005:6;41001:15;40997:26;40994:35;40991:55;;;41042:1;41039;41032:12;40991:55;41055:77;41129:2;41122:4;41113:7;41109:18;41102:4;41094:6;41090:17;41055:77;:::i;41168:335::-;41247:6;41300:2;41288:9;41279:7;41275:23;41271:32;41268:52;;;41316:1;41313;41306:12;41268:52;41343:16;;-1:-1:-1;;;;;41371:30:32;;41368:50;;;41414:1;41411;41404:12;41368:50;41437:60;41489:7;41480:6;41469:9;41465:22;41437:60;:::i;41508:608::-;-1:-1:-1;;;41870:3:32;41863:16;41908:6;41904:1;41899:3;41895:11;41888:27;-1:-1:-1;;;41940:2:32;41935:3;41931:12;41924:25;41845:3;41978:6;41972:13;41994:75;42062:6;42057:2;42052:3;42048:12;42041:4;42033:6;42029:17;41994:75;:::i;:::-;42089:16;;;;42107:2;42085:25;;41508:608;-1:-1:-1;;;41508:608:32:o;42121:468::-;42344:2;42333:9;42326:21;42307:4;42370:45;42411:2;42400:9;42396:18;42388:6;42370:45;:::i;:::-;42463:9;42455:6;42451:22;42446:2;42435:9;42431:18;42424:50;42491:33;42517:6;42509;42491:33;:::i;:::-;42483:41;;;42574:6;42567:14;42560:22;42555:2;42544:9;42540:18;42533:50;42121:468;;;;;;:::o;43262:172::-;43329:10;43359;;;43371;;;43355:27;;43394:11;;;43391:37;;;43408:18;;:::i;:::-;43391:37;43262:172;;;;:::o;45777:329::-;45979:2;45961:21;;;46018:1;45998:18;;;45991:29;-1:-1:-1;;;46051:2:32;46036:18;;46029:36;46097:2;46082:18;;45777:329::o;47466:::-;47668:2;47650:21;;;47707:1;47687:18;;;47680:29;-1:-1:-1;;;47740:2:32;47725:18;;47718:36;47786:2;47771:18;;47466:329::o;48747:226::-;48902:2;48891:9;48884:21;48865:4;48922:45;48963:2;48952:9;48948:18;48940:6;48922:45;:::i;48978:2007::-;49102:6;49133:2;49176;49164:9;49155:7;49151:23;49147:32;49144:52;;;49192:1;49189;49182:12;49144:52;49219:16;;-1:-1:-1;;;;;49284:14:32;;;49281:34;;;49311:1;49308;49301:12;49281:34;49349:6;49338:9;49334:22;49324:32;;49394:7;49387:4;49383:2;49379:13;49375:27;49365:55;;49416:1;49413;49406:12;49365:55;49445:2;49439:9;49468:60;49484:43;49524:2;49484:43;:::i;49468:60::-;49562:15;;;49644:1;49640:10;;;;49632:19;;49628:28;;;49593:12;;;;49668:19;;;49665:39;;;49700:1;49697;49690:12;49665:39;49732:2;49728;49724:11;49744:1211;49760:6;49755:3;49752:15;49744:1211;;;49839:3;49833:10;49875:2;49862:11;49859:19;49856:109;;;49919:1;49948:2;49944;49937:14;49856:109;49988:20;;50031:4;50059:16;;;-1:-1:-1;;50055:30:32;50051:39;-1:-1:-1;50048:129:32;;;50131:1;50160:2;50156;50149:14;50048:129;50203:22;;:::i;:::-;50267:2;50263;50259:11;50253:18;50319:2;50310:7;50306:16;50297:7;50294:29;50284:127;;50365:1;50394:2;50390;50383:14;50284:127;50424:22;;50470:2;50507:12;;;50501:19;50536:16;;;50533:109;;;50594:1;50624:3;50619;50612:16;50533:109;50678:64;50734:7;50729:2;50718:8;50714:2;50710:17;50706:26;50678:64;:::i;:::-;50662:14;;;50655:88;-1:-1:-1;50767:2:32;50812:12;;;50806:19;50789:15;;;50782:44;;;;50869:11;;;;50863:18;50846:15;;;50839:43;50895:18;;50933:12;;;;49777;;49744:1211;;;-1:-1:-1;50974:5:32;48978:2007;-1:-1:-1;;;;;;;;48978:2007:32:o;51324:148::-;51412:4;51391:12;;;51405;;;51387:31;;51430:13;;51427:39;;;51446:18;;:::i;51477:175::-;51514:3;51558:4;51551:5;51547:16;51587:4;51578:7;51575:17;51572:43;;51595:18;;:::i;:::-;51644:1;51631:15;;51477:175;-1:-1:-1;;51477:175:32:o;51657:184::-;51727:6;51780:2;51768:9;51759:7;51755:23;51751:32;51748:52;;;51796:1;51793;51786:12;51748:52;-1:-1:-1;51819:16:32;;51657:184;-1:-1:-1;51657:184:32:o;52514:848::-;52740:4;52788:3;52777:9;52773:19;52819:6;52808:9;52801:25;52845:2;52883:6;52878:2;52867:9;52863:18;52856:34;52926:6;52921:2;52910:9;52906:18;52899:34;52969:3;52964:2;52953:9;52949:18;52942:31;52993:6;53028;53022:13;53059:6;53051;53044:22;53097:3;53086:9;53082:19;53075:26;;53136:2;53128:6;53124:15;53110:29;;53157:1;53167:169;53181:6;53178:1;53175:13;53167:169;;;53242:13;;53230:26;;53311:15;;;;53276:12;;;;53203:1;53196:9;53167:169;;;-1:-1:-1;53353:3:32;;52514:848;-1:-1:-1;;;;;;;;;52514:848:32:o;53889:257::-;-1:-1:-1;;;;;54010:10:32;;;54022;;;54006:27;54053:20;;;;53960:18;54092:24;;;54082:58;;54120:18;;:::i;:::-;54082:58;;53889:257;;;;:::o;54485:307::-;54662:2;54651:9;54644:21;54625:4;54682:45;54723:2;54712:9;54708:18;54700:6;54682:45;:::i;:::-;54674:53;;54777:6;54770:14;54763:22;54758:2;54747:9;54743:18;54736:50;54485:307;;;;;:::o;54797:840::-;54923:3;54952:1;54985:6;54979:13;55015:36;55041:9;55015:36;:::i;:::-;55070:1;55087:18;;;55114:133;;;;55261:1;55256:356;;;;55080:532;;55114:133;-1:-1:-1;;55147:24:32;;55135:37;;55220:14;;55213:22;55201:35;;55192:45;;;-1:-1:-1;55114:133:32;;55256:356;55287:6;55284:1;55277:17;55317:4;55362:2;55359:1;55349:16;55387:1;55401:165;55415:6;55412:1;55409:13;55401:165;;;55493:14;;55480:11;;;55473:35;55536:16;;;;55430:10;;55401:165;;;55405:3;;;55595:6;55590:3;55586:16;55579:23;;55080:532;-1:-1:-1;55628:3:32;;54797:840;-1:-1:-1;;;;;;54797:840:32:o;57051:2638::-;57248:2;57237:9;57230:21;57260:53;57309:2;57298:9;57294:18;57285:6;57279:13;57260:53;:::i;:::-;57211:4;57360:2;57352:6;57348:15;57342:22;57373:52;57421:2;57410:9;57406:18;57392:12;57373:52;:::i;:::-;;57474:2;57466:6;57462:15;57456:22;57497:6;57539:2;57534;57523:9;57519:18;57512:30;57565:54;57614:3;57603:9;57599:19;57583:14;57565:54;:::i;:::-;57551:68;;57668:2;57660:6;57656:15;57650:22;57681:55;57731:3;57720:9;57716:19;57700:14;57681:55;:::i;:::-;;57785:3;57777:6;57773:16;57767:23;57813:2;57809:7;57881:2;57869:9;57861:6;57857:22;57853:31;57847:3;57836:9;57832:19;57825:60;57908:41;57942:6;57926:14;57908:41;:::i;:::-;57894:55;;58004:3;57996:6;57992:16;57986:23;57980:3;57969:9;57965:19;57958:52;58065:3;58057:6;58053:16;58047:23;58041:3;58030:9;58026:19;58019:52;58120:3;58112:6;58108:16;58102:23;58080:45;;58144:3;58156:52;58204:2;58193:9;58189:18;58173:14;29447:1;29436:20;29424:33;;29372:91;58156:52;58257:2;58249:6;58245:15;58239:22;58217:44;;;58280:3;58347:2;58335:9;58327:6;58323:22;58319:31;58314:2;58303:9;58299:18;58292:59;58374:41;58408:6;58392:14;58374:41;:::i;:::-;58440:15;;;58434:22;58475:3;58494:18;;;58487:30;;;;58554:15;;58548:22;58360:55;;-1:-1:-1;58548:22:32;-1:-1:-1;58589:3:32;;-1:-1:-1;58601:53:32;58635:18;;;58548:22;29349:10;29338:22;29326:35;;29273:94;58601:53;58691:15;;58685:22;;-1:-1:-1;58726:3:32;58738:53;58772:18;;;58685:22;29349:10;29338:22;29326:35;;29273:94;58738:53;58828:15;;58822:22;;-1:-1:-1;58863:3:32;58875:53;58909:18;;;58822:22;17872:6;17861:18;17849:31;;17796:90;58875:53;58965:15;;58959:22;;-1:-1:-1;59001:3:32;59013:54;59047:19;;;58959:22;17872:6;17861:18;17849:31;;17796:90;59013:54;59105:16;;59099:23;;-1:-1:-1;59142:3:32;59154:55;59189:19;;;59099:23;29349:10;29338:22;29326:35;;29273:94;59154:55;59247:16;;59241:23;;-1:-1:-1;59284:3:32;59296:55;59331:19;;;59241:23;29349:10;29338:22;29326:35;;29273:94;59296:55;59389:16;;59383:23;;-1:-1:-1;59426:3:32;59438:55;59473:19;;;59383:23;29349:10;29338:22;29326:35;;29273:94;59438:55;59519:16;;59513:23;59556:3;59575:19;;;59568:32;;;;59642:16;;;59636:23;59616:18;;59609:51;;;;-1:-1:-1;59677:6:32;57051:2638;-1:-1:-1;57051:2638:32:o;61724:180::-;-1:-1:-1;;;;;61829:10:32;;;61841;;;61825:27;;61864:11;;;61861:37;;;61878:18;;:::i;62243:277::-;62438:2;62427:9;62420:21;62401:4;62458:56;62510:2;62499:9;62495:18;62487:6;62458:56;:::i;62525:1063::-;62895:4;62924:3;62954:2;62943:9;62936:21;62980:45;63021:2;63010:9;63006:18;62998:6;62980:45;:::i;:::-;62966:59;;63061:6;63056:2;63045:9;63041:18;63034:34;63116:9;63108:6;63104:22;63099:2;63088:9;63084:18;63077:50;63150:33;63176:6;63168;63150:33;:::i;:::-;63136:47;;63219:6;63214:2;63203:9;63199:18;63192:34;63275:9;63267:6;63263:22;63257:3;63246:9;63242:19;63235:51;63309:33;63335:6;63327;63309:33;:::i;:::-;-1:-1:-1;;;;;63379:32:32;;63399:3;63358:19;;63351:61;63449:22;;;63443:3;63428:19;;63421:51;63295:47;-1:-1:-1;63489:33:32;63295:47;63507:6;63489:33;:::i;:::-;63481:41;;;63573:6;63566:14;63559:22;63553:3;63542:9;63538:19;63531:51;62525:1063;;;;;;;;;;;:::o", "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.18;\npragma experimental ABIEncoderV2;\n\nimport \"./Bridge.sol\";\nimport \"./QuotesV2.sol\";\nimport \"./SignatureValidator.sol\";\nimport \"@rsksmart/btc-transaction-solidity-helper/contracts/BtcUtils.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol\";\n\n/**\n @title Contract that assists with the Flyover protocol\n */\n\ncontract LiquidityBridgeContractV2 is Initializable, OwnableUpgradeable, ReentrancyGuardUpgradeable {\n uint16 constant public MAX_CALL_GAS_COST = 35000;\n uint16 constant public MAX_REFUND_GAS_LIMIT = 2300;\n\n uint8 constant public UNPROCESSED_QUOTE_CODE = 0;\n uint8 constant public CALL_DONE_CODE = 1;\n uint8 constant public PROCESSED_QUOTE_CODE = 2;\n\n int16 constant public BRIDGE_REFUNDED_USER_ERROR_CODE = - 100;\n int16 constant public BRIDGE_REFUNDED_LP_ERROR_CODE = - 200;\n int16 constant public BRIDGE_UNPROCESSABLE_TX_NOT_CONTRACT_ERROR_CODE = - 300;\n int16 constant public BRIDGE_UNPROCESSABLE_TX_INVALID_SENDER_ERROR_CODE = - 301;\n int16 constant public BRIDGE_UNPROCESSABLE_TX_ALREADY_PROCESSED_ERROR_CODE = - 302;\n int16 constant public BRIDGE_UNPROCESSABLE_TX_VALIDATIONS_ERROR = - 303;\n int16 constant public BRIDGE_UNPROCESSABLE_TX_VALUE_ZERO_ERROR = - 304;\n int16 constant public BRIDGE_UNPROCESSABLE_TX_UTXO_AMOUNT_SENT_BELOW_MINIMUM_ERROR =\n - 305;\n int16 constant public BRIDGE_GENERIC_ERROR = - 900;\n uint constant public PAY_TO_ADDRESS_OUTPUT = 0;\n uint constant public QUOTE_HASH_OUTPUT = 1;\n\n struct Registry {\n uint32 timestamp;\n bool success;\n }\n\n struct PegoutRecord {\n uint256 depositTimestamp;\n bool completed;\n }\n\n struct LiquidityProvider {\n uint id;\n address provider;\n string name;\n string apiBaseUrl;\n bool status;\n string providerType;\n }\n\n event Register(uint id, address indexed from, uint256 amount);\n event CollateralIncrease(address from, uint256 amount);\n event PegoutCollateralIncrease(address from, uint256 amount);\n event Withdrawal(address from, uint256 amount);\n event WithdrawCollateral(address from, uint256 amount);\n event Resigned(address from);\n event CallForUser(\n address indexed from,\n address indexed dest,\n uint gasLimit,\n uint value,\n bytes data,\n bool success,\n bytes32 quoteHash\n );\n event PegInRegistered(bytes32 indexed quoteHash, int256 transferredAmount);\n event Penalized(address liquidityProvider, uint penalty, bytes32 quoteHash);\n event BridgeCapExceeded(bytes32 quoteHash, int256 errorCode);\n event BalanceIncrease(address dest, uint amount);\n event BalanceDecrease(address dest, uint amount);\n event Refund(address dest, uint amount, bool success, bytes32 quoteHash);\n event PegOutRefunded(bytes32 indexed quoteHash);\n event PegOutDeposit(\n bytes32 indexed quoteHash,\n address indexed sender,\n uint256 amount,\n uint256 timestamp\n );\n event PegOutUserRefunded(\n bytes32 indexed quoteHash,\n uint256 value,\n address userAddress\n );\n event DaoFeeSent(bytes32 indexed quoteHash, uint256 amount);\n event ProviderUpdate(address indexed providerAddress, string name, string url);\n\n Bridge public bridge;\n mapping(address => uint256) private balances;\n mapping(address => uint256) private collateral;\n mapping(address => uint256) private pegoutCollateral;\n mapping(uint => LiquidityProvider) private liquidityProviders;\n mapping(bytes32 => Registry) private callRegistry;\n mapping(address => uint256) private resignationBlockNum;\n\n uint256 private minCollateral;\n uint256 private minPegIn;\n\n uint32 private rewardP;\n uint32 private resignDelayInBlocks;\n uint private dust;\n uint public providerId;\n\n uint private btcBlockTime;\n bool private mainnet;\n\n mapping(bytes32 => uint8) private processedQuotes;\n mapping(bytes32 => QuotesV2.PegOutQuote) private registeredPegoutQuotes;\n mapping(bytes32 => PegoutRecord) private pegoutRegistry;\n\n uint256 public productFeePercentage;\n address public daoFeeCollectorAddress;\n\n modifier onlyRegistered() {\n require(isRegistered(msg.sender), \"LBC001\");\n _;\n }\n\n modifier onlyRegisteredForPegout() {\n require(isRegisteredForPegout(msg.sender), \"LBC001\");\n _;\n }\n\n modifier onlyOwnerAndProvider(uint _providerId) {\n require(\n msg.sender == owner() ||\n msg.sender == liquidityProviders[_providerId].provider,\n \"LBC005\"\n );\n _;\n }\n\n function setProviderStatus(\n uint _providerId,\n bool status\n ) external onlyOwnerAndProvider(_providerId) {\n liquidityProviders[_providerId].status = status;\n }\n\n receive() external payable {\n require(msg.sender == address(bridge), \"LBC007\");\n }\n\n function getProviderIds() external view returns (uint) {\n return providerId;\n }\n\n function getBridgeAddress() external view returns (address) {\n return address(bridge);\n }\n\n function getMinCollateral() public view returns (uint) {\n return minCollateral;\n }\n\n function getMinPegIn() external view returns (uint) {\n return minPegIn;\n }\n\n function getRewardPercentage() external view returns (uint) {\n return rewardP;\n }\n\n function getResignDelayBlocks() external view returns (uint) {\n return resignDelayInBlocks;\n }\n\n function getDustThreshold() external view returns (uint) {\n return dust;\n }\n\n function isPegOutQuoteCompleted(bytes32 quoteHash) external view returns (bool) {\n return pegoutRegistry[quoteHash].completed;\n }\n\n /**\n @dev Checks whether a liquidity provider can deliver a pegin service\n @return Whether the liquidity provider is registered and has enough locked collateral\n */\n function isOperational(address addr) external view returns (bool) {\n return isRegistered(addr) && collateral[addr] >= minCollateral;\n }\n\n /**\n @dev Checks whether a liquidity provider can deliver a pegout service\n @return Whether the liquidity provider is registered and has enough locked collateral\n */\n function isOperationalForPegout(address addr) external view returns (bool) {\n return\n isRegisteredForPegout(addr) &&\n pegoutCollateral[addr] >= minCollateral;\n }\n\n /**\n @dev Registers msg.sender as a liquidity provider with msg.value as collateral\n */\n function register(\n string memory _name,\n string memory _apiBaseUrl,\n bool _status,\n string memory _providerType\n ) external payable returns (uint) {\n require(tx.origin == msg.sender, \"LBC003\");\n //require(collateral[msg.sender] == 0, \"Already registered\");\n require(bytes(_name).length > 0, \"LBC010\");\n require(\n bytes(_apiBaseUrl).length > 0,\n \"LBC017\"\n );\n\n // Check if _providerType is one of the valid strings\n require(\n keccak256(abi.encodePacked(_providerType)) ==\n keccak256(abi.encodePacked(\"pegin\")) ||\n keccak256(abi.encodePacked(_providerType)) ==\n keccak256(abi.encodePacked(\"pegout\")) ||\n keccak256(abi.encodePacked(_providerType)) ==\n keccak256(abi.encodePacked(\"both\")),\n \"LBC018\"\n );\n\n require(collateral[msg.sender] == 0 && pegoutCollateral[msg.sender] == 0, \"LBC070\");\n require(\n resignationBlockNum[msg.sender] == 0,\n \"LBC009\"\n );\n\n if (keccak256(abi.encodePacked(_providerType)) == keccak256(abi.encodePacked(\"pegin\"))) {\n require(msg.value >= minCollateral, \"LBC008\");\n collateral[msg.sender] = msg.value;\n } else if (keccak256(abi.encodePacked(_providerType)) == keccak256(abi.encodePacked(\"pegout\"))) {\n require(msg.value >= minCollateral, \"LBC008\");\n pegoutCollateral[msg.sender] = msg.value;\n } else {\n require(msg.value >= minCollateral * 2, \"LBC008\");\n uint halfMsgValue = msg.value / 2;\n collateral[msg.sender] = msg.value % 2 == 0 ? halfMsgValue : halfMsgValue + 1;\n pegoutCollateral[msg.sender] = halfMsgValue;\n }\n\n providerId++;\n liquidityProviders[providerId] = LiquidityProvider({\n id: providerId,\n provider: msg.sender,\n name: _name,\n apiBaseUrl: _apiBaseUrl,\n status: _status,\n providerType: _providerType\n });\n emit Register(providerId, msg.sender, msg.value);\n return (providerId);\n }\n\n function getProviders(\n uint[] memory providerIds\n ) external view returns (LiquidityProvider[] memory) {\n LiquidityProvider[] memory providersToReturn = new LiquidityProvider[](\n providerIds.length\n );\n uint count = 0;\n\n for (uint i = 0; i < providerIds.length; i++) {\n uint id = providerIds[i];\n if (\n (isRegistered(liquidityProviders[id].provider) ||\n isRegisteredForPegout(liquidityProviders[id].provider)) &&\n liquidityProviders[id].status\n ) {\n providersToReturn[count] = liquidityProviders[id];\n count++;\n }\n }\n return providersToReturn;\n }\n\n /**\n @dev Increases the amount of collateral of the sender\n */\n function addCollateral() external payable onlyRegistered {\n collateral[msg.sender] += msg.value;\n emit CollateralIncrease(msg.sender, msg.value);\n }\n\n function addPegoutCollateral() external payable onlyRegisteredForPegout {\n pegoutCollateral[msg.sender] += msg.value;\n emit PegoutCollateralIncrease(msg.sender, msg.value);\n }\n\n /**\n @dev Increases the balance of the sender\n */\n function deposit() external payable onlyRegistered {\n increaseBalance(msg.sender, msg.value);\n }\n\n /**\n @dev Used to withdraw funds\n @param amount The amount to withdraw\n */\n function withdraw(uint256 amount) external {\n require(balances[msg.sender] >= amount, \"LBC019\");\n balances[msg.sender] -= amount;\n (bool success,) = msg.sender.call{value: amount}(\"\");\n require(success, \"LBC020\");\n emit Withdrawal(msg.sender, amount);\n }\n\n /**\n @dev Used to withdraw the locked collateral\n */\n function withdrawCollateral() external nonReentrant {\n require(resignationBlockNum[msg.sender] > 0, \"LBC021\");\n require(\n block.number - resignationBlockNum[msg.sender] >=\n resignDelayInBlocks,\n \"LBC022\"\n );\n uint amount = collateral[msg.sender] + pegoutCollateral[msg.sender];\n pegoutCollateral[msg.sender] = 0;\n collateral[msg.sender] = 0;\n resignationBlockNum[msg.sender] = 0;\n (bool success,) = msg.sender.call{value: amount}(\"\");\n require(success, \"LBC020\");\n emit WithdrawCollateral(msg.sender, amount);\n }\n\n /**\n @dev Used to resign as a liquidity provider\n */\n function resign() external onlyRegistered {\n require(resignationBlockNum[msg.sender] == 0, \"LBC023\");\n resignationBlockNum[msg.sender] = block.number;\n emit Resigned(msg.sender);\n }\n\n /**\n @dev Returns the amount of collateral of a liquidity provider\n @param addr The address of the liquidity provider\n @return The amount of locked collateral\n */\n function getCollateral(address addr) external view returns (uint256) {\n return collateral[addr];\n }\n\n function getPegoutCollateral(address addr) external view returns (uint256) {\n return pegoutCollateral[addr];\n }\n\n /**\n @dev Returns the amount of funds of a liquidity provider\n @param addr The address of the liquidity provider\n @return The balance of the liquidity provider\n */\n function getBalance(address addr) external view returns (uint256) {\n return balances[addr];\n }\n\n /**\n @dev Performs a call on behalf of a user\n @param quote The quote that identifies the service\n @return Boolean indicating whether the call was successful\n */\n function callForUser(\n QuotesV2.PeginQuote memory quote\n ) external payable onlyRegistered nonReentrant returns (bool) {\n require(\n msg.sender == quote.liquidityProviderRskAddress,\n \"LBC024\"\n );\n require(\n balances[quote.liquidityProviderRskAddress] + msg.value >=\n quote.value,\n \"LBC019\"\n );\n\n bytes32 quoteHash = validateAndHashQuote(quote);\n require(\n processedQuotes[quoteHash] == UNPROCESSED_QUOTE_CODE,\n \"LBC025\"\n );\n\n increaseBalance(quote.liquidityProviderRskAddress, msg.value);\n\n // This check ensures that the call cannot be performed with less gas than the agreed amount\n require(\n gasleft() >= quote.gasLimit + MAX_CALL_GAS_COST,\n \"LBC026\"\n );\n (bool success,) = quote.contractAddress.call{\n gas: quote.gasLimit,\n value: quote.value\n }(quote.data);\n\n require(block.timestamp <= type(uint32).max, \"LBC027\");\n callRegistry[quoteHash].timestamp = uint32(block.timestamp);\n\n if (success) {\n callRegistry[quoteHash].success = true;\n decreaseBalance(quote.liquidityProviderRskAddress, quote.value);\n }\n emit CallForUser(\n msg.sender,\n quote.contractAddress,\n quote.gasLimit,\n quote.value,\n quote.data,\n success,\n quoteHash\n );\n processedQuotes[quoteHash] = CALL_DONE_CODE;\n return success;\n }\n\n /**\n @dev Registers a peg-in transaction with the bridge and pays to the involved parties\n @param quote The quote of the service\n @param signature The signature of the quote\n @param btcRawTransaction The peg-in transaction\n @param partialMerkleTree The merkle tree path that proves transaction inclusion\n @param height The block that contains the peg-in transaction\n @return The total peg-in amount received from the bridge contract or an error code\n */\n function registerPegIn(\n QuotesV2.PeginQuote memory quote,\n bytes memory signature,\n bytes memory btcRawTransaction,\n bytes memory partialMerkleTree,\n uint256 height\n ) external nonReentrant returns (int256) {\n bytes32 quoteHash = validateAndHashQuote(quote);\n\n // TODO: allow multiple registerPegIns for the same quote with different transactions\n require(\n processedQuotes[quoteHash] <= CALL_DONE_CODE,\n \"LBC028\"\n );\n require(\n SignatureValidator.verify(\n quote.liquidityProviderRskAddress,\n quoteHash,\n signature\n ),\n \"LBC029\"\n );\n require(height < uint256(int256(type(int32).max)), \"LBC030\");\n\n int256 transferredAmountOrErrorCode = registerBridge(\n quote,\n btcRawTransaction,\n partialMerkleTree,\n height,\n quoteHash\n );\n\n require(\n transferredAmountOrErrorCode !=\n BRIDGE_UNPROCESSABLE_TX_VALIDATIONS_ERROR,\n \"LBC031\"\n );\n require(\n transferredAmountOrErrorCode !=\n BRIDGE_UNPROCESSABLE_TX_ALREADY_PROCESSED_ERROR_CODE,\n \"LBC032\"\n );\n require(\n transferredAmountOrErrorCode !=\n BRIDGE_UNPROCESSABLE_TX_VALUE_ZERO_ERROR,\n \"LBC033\"\n );\n require(\n transferredAmountOrErrorCode !=\n BRIDGE_UNPROCESSABLE_TX_UTXO_AMOUNT_SENT_BELOW_MINIMUM_ERROR,\n \"LBC034\"\n );\n require(\n transferredAmountOrErrorCode != BRIDGE_GENERIC_ERROR,\n \"LBC035\"\n );\n require(\n transferredAmountOrErrorCode > 0 ||\n transferredAmountOrErrorCode == BRIDGE_REFUNDED_LP_ERROR_CODE ||\n transferredAmountOrErrorCode == BRIDGE_REFUNDED_USER_ERROR_CODE,\n \"LBC036\"\n );\n\n if (\n shouldPenalizeLP(\n quote,\n transferredAmountOrErrorCode,\n callRegistry[quoteHash].timestamp,\n height\n )\n ) {\n uint penalizationAmount = min(\n quote.penaltyFee,\n collateral[quote.liquidityProviderRskAddress]\n ); // prevent underflow when collateral is less than penalty fee.\n collateral[quote.liquidityProviderRskAddress] -= penalizationAmount;\n emit Penalized(\n quote.liquidityProviderRskAddress,\n penalizationAmount,\n quoteHash\n );\n\n // pay reward to sender\n uint256 punisherReward = (penalizationAmount * rewardP) / 100;\n increaseBalance(msg.sender, punisherReward);\n }\n\n if (\n transferredAmountOrErrorCode == BRIDGE_REFUNDED_LP_ERROR_CODE ||\n transferredAmountOrErrorCode == BRIDGE_REFUNDED_USER_ERROR_CODE\n ) {\n // Bridge cap exceeded\n processedQuotes[quoteHash] = PROCESSED_QUOTE_CODE;\n delete callRegistry[quoteHash];\n emit BridgeCapExceeded(quoteHash, transferredAmountOrErrorCode);\n return transferredAmountOrErrorCode;\n }\n\n // the amount is safely assumed positive because it's already been\n // validated in lines 287/298 there's no (negative) error code being returned by the bridge.\n uint transferredAmount = uint(transferredAmountOrErrorCode);\n\n QuotesV2.checkAgreedAmount(quote, transferredAmount);\n\n if (callRegistry[quoteHash].timestamp > 0) {\n uint refundAmount;\n\n if (callRegistry[quoteHash].success) {\n refundAmount = min(\n transferredAmount,\n quote.value + quote.callFee + quote.gasFee\n );\n } else {\n refundAmount = min(transferredAmount, quote.callFee + quote.gasFee);\n }\n increaseBalance(quote.liquidityProviderRskAddress, refundAmount);\n\n uint remainingAmount = transferredAmount - refundAmount;\n payToFeeCollector(quote.productFeeAmount, quoteHash);\n\n if (remainingAmount > dust) {\n // refund rskRefundAddress, if remaining amount greater than dust\n (bool success,) = quote.rskRefundAddress.call{\n gas: MAX_REFUND_GAS_LIMIT,\n value: remainingAmount\n }(\"\");\n emit Refund(\n quote.rskRefundAddress,\n remainingAmount,\n success,\n quoteHash\n );\n\n if (!success) {\n // transfer funds to LP instead, if for some reason transfer to rskRefundAddress was unsuccessful\n increaseBalance(\n quote.liquidityProviderRskAddress,\n remainingAmount\n );\n }\n }\n } else {\n uint refundAmount = transferredAmount;\n\n if (quote.callOnRegister && refundAmount >= quote.value) {\n (bool callSuccess,) = quote.contractAddress.call{\n gas: quote.gasLimit,\n value: quote.value\n }(quote.data);\n emit CallForUser(\n msg.sender,\n quote.contractAddress,\n quote.gasLimit,\n quote.value,\n quote.data,\n callSuccess,\n quoteHash\n );\n\n if (callSuccess) {\n refundAmount -= quote.value;\n }\n }\n if (refundAmount > dust) {\n // refund rskRefundAddress, if refund amount greater than dust\n (bool success,) = quote.rskRefundAddress.call{\n gas: MAX_REFUND_GAS_LIMIT,\n value: refundAmount\n }(\"\");\n emit Refund(\n quote.rskRefundAddress,\n refundAmount,\n success,\n quoteHash\n );\n }\n }\n processedQuotes[quoteHash] = PROCESSED_QUOTE_CODE;\n delete callRegistry[quoteHash];\n emit PegInRegistered(quoteHash, transferredAmountOrErrorCode);\n return transferredAmountOrErrorCode;\n }\n\n function depositPegout( // TODO convert to calldata when contract size issues are fixed\n QuotesV2.PegOutQuote memory quote,\n bytes memory signature\n ) external payable {\n require(isRegisteredForPegout(quote.lpRskAddress), \"LBC037\");\n require(quote.value + quote.callFee + quote.productFeeAmount + quote.gasFee <= msg.value, \"LBC063\");\n require(block.timestamp <= quote.depositDateLimit, \"LBC065\");\n require(block.timestamp <= quote.expireDate, \"LBC046\");\n require(block.number <= quote.expireBlock, \"LBC047\");\n bytes32 quoteHash = hashPegoutQuote(quote);\n require(\n SignatureValidator.verify(quote.lpRskAddress, quoteHash, signature),\n \"LBC029\"\n );\n\n QuotesV2.PegOutQuote storage registeredQuote = registeredPegoutQuotes[quoteHash];\n\n require(pegoutRegistry[quoteHash].completed == false, \"LBC064\");\n require(registeredQuote.lbcAddress == address(0), \"LBC028\");\n registeredPegoutQuotes[quoteHash] = quote;\n pegoutRegistry[quoteHash].depositTimestamp = block.timestamp;\n emit PegOutDeposit(quoteHash, msg.sender, msg.value, block.timestamp);\n }\n\n function refundUserPegOut(\n bytes32 quoteHash\n ) external nonReentrant {\n QuotesV2.PegOutQuote storage quote = registeredPegoutQuotes[quoteHash];\n\n require(quote.lbcAddress != address(0), \"LBC042\");\n require(\n block.timestamp > quote.expireDate &&\n block.number > quote.expireBlock,\n \"LBC041\"\n );\n\n uint valueToTransfer = quote.value + quote.callFee + quote.productFeeAmount + quote.gasFee;\n address addressToTransfer = quote.rskRefundAddress;\n\n uint penalty = min(quote.penaltyFee, pegoutCollateral[quote.lpRskAddress]);\n pegoutCollateral[quote.lpRskAddress] -= penalty;\n\n emit Penalized(quote.lpRskAddress, penalty, quoteHash);\n emit PegOutUserRefunded(\n quoteHash,\n valueToTransfer,\n quote.rskRefundAddress\n );\n\n delete registeredPegoutQuotes[quoteHash];\n pegoutRegistry[quoteHash].completed = true;\n\n (bool sent,) = addressToTransfer.call{value: valueToTransfer}(\"\");\n require(sent, \"LBC044\");\n }\n\n function refundPegOut(\n bytes32 quoteHash,\n bytes memory btcTx,\n bytes32 btcBlockHeaderHash,\n uint256 partialMerkleTree,\n bytes32[] memory merkleBranchHashes\n ) external nonReentrant onlyRegisteredForPegout {\n require(pegoutRegistry[quoteHash].completed == false, \"LBC064\");\n QuotesV2.PegOutQuote storage quote = registeredPegoutQuotes[quoteHash];\n require(quote.lbcAddress != address(0), \"LBC042\");\n BtcUtils.TxRawOutput[] memory outputs = BtcUtils.getOutputs(btcTx);\n bytes memory scriptContent = BtcUtils.parseNullDataScript(outputs[QUOTE_HASH_OUTPUT].pkScript);\n require(scriptContent.length == 33 && scriptContent[0] == 0x20, \"LBC075\");\n // shift the array to remove the first byte (the size)\n for (uint8 i = 0 ; i < scriptContent.length - 1; i++) {\n scriptContent[i] = scriptContent[i + 1];\n }\n bytes32 txQuoteHash = abi.decode(scriptContent, (bytes32));\n require(quoteHash == txQuoteHash, \"LBC069\");\n require(msg.sender == quote.lpRskAddress, \"LBC048\");\n require(\n bridge.getBtcTransactionConfirmations(\n BtcUtils.hashBtcTx(btcTx),\n btcBlockHeaderHash,\n partialMerkleTree,\n merkleBranchHashes\n ) >= int(uint256(quote.transferConfirmations)),\n \"LBC049\"\n );\n require(quote.value <= outputs[PAY_TO_ADDRESS_OUTPUT].value * (10**10), \"LBC067\"); // satoshi to wei\n bytes memory btcTxDestination = BtcUtils.outputScriptToAddress(\n outputs[PAY_TO_ADDRESS_OUTPUT].pkScript,\n mainnet\n );\n require(keccak256(quote.deposityAddress) == keccak256(btcTxDestination), \"LBC068\");\n\n if (\n shouldPenalizePegOutLP(\n quote,\n txQuoteHash,\n btcBlockHeaderHash\n )\n ) {\n uint penalty = min(\n quote.penaltyFee,\n pegoutCollateral[quote.lpRskAddress]\n );\n pegoutCollateral[quote.lpRskAddress] -= penalty;\n emit Penalized(quote.lpRskAddress, penalty, txQuoteHash);\n }\n\n (bool sent,) = quote.lpRskAddress.call{\n value: quote.value + quote.callFee\n }(\"\");\n require(sent, \"LBC050\");\n\n payToFeeCollector(quote.productFeeAmount, quoteHash);\n\n delete registeredPegoutQuotes[txQuoteHash];\n pegoutRegistry[txQuoteHash].completed = true;\n emit PegOutRefunded(txQuoteHash);\n }\n\n function validatePeginDepositAddress(\n QuotesV2.PeginQuote memory quote,\n bytes memory depositAddress\n ) external view returns (bool) {\n bytes32 derivationValue = keccak256(\n bytes.concat(\n hashQuote(quote),\n quote.btcRefundAddress,\n bytes20(quote.lbcAddress),\n quote.liquidityProviderBtcAddress\n )\n );\n bytes memory flyoverRedeemScript = bytes.concat(\n hex\"20\",\n derivationValue,\n hex\"75\",\n bridge.getActivePowpegRedeemScript()\n );\n return BtcUtils.validateP2SHAdress(depositAddress, flyoverRedeemScript, mainnet);\n }\n\n /**\n @dev Calculates hash of a quote. Note: besides calculation this function also validates the quote.\n @param quote The quote of the service\n @return The hash of a quote\n */\n function hashQuote(QuotesV2.PeginQuote memory quote) public view returns (bytes32) {\n return validateAndHashQuote(quote);\n }\n\n function hashPegoutQuote(\n QuotesV2.PegOutQuote memory quote\n ) public view returns (bytes32) {\n return validateAndHashPegOutQuote(quote);\n }\n\n function validateAndHashQuote(\n QuotesV2.PeginQuote memory quote\n ) private view returns (bytes32) {\n require(address(this) == quote.lbcAddress, \"LBC051\");\n require(\n address(bridge) != quote.contractAddress,\n \"LBC052\"\n );\n require(\n quote.btcRefundAddress.length == 21 ||\n quote.btcRefundAddress.length == 33,\n \"LBC053\"\n );\n require(\n quote.liquidityProviderBtcAddress.length == 21,\n \"LBC054\"\n );\n require(\n quote.value + quote.callFee + quote.productFeeAmount + quote.gasFee >= minPegIn,\n \"LBC055\"\n );\n require(\n type(uint32).max >= uint64(quote.agreementTimestamp) + uint64(quote.timeForDeposit),\n \"LBC071\"\n );\n\n return keccak256(QuotesV2.encodeQuote(quote));\n }\n\n function validateAndHashPegOutQuote(\n QuotesV2.PegOutQuote memory quote\n ) private view returns (bytes32) {\n require(address(this) == quote.lbcAddress, \"LBC056\");\n\n return keccak256(QuotesV2.encodePegOutQuote(quote));\n }\n\n function min(uint a, uint b) private pure returns (uint) {\n return a < b ? a : b;\n }\n\n // IMPORTANT: These methods should remain private at all costs\n function increaseBalance(address dest, uint amount) private {\n balances[dest] += amount;\n emit BalanceIncrease(dest, amount);\n }\n\n function decreaseBalance(address dest, uint amount) private {\n balances[dest] -= amount;\n emit BalanceDecrease(dest, amount);\n }\n\n /**\n @dev Checks if a liquidity provider is registered\n @param addr The address of the liquidity provider\n @return Boolean indicating whether the liquidity provider is registered\n */\n function isRegistered(address addr) private view returns (bool) {\n return collateral[addr] > 0 && resignationBlockNum[addr] == 0;\n }\n\n function isRegisteredForPegout(address addr) private view returns (bool) {\n return pegoutCollateral[addr] > 0 && resignationBlockNum[addr] == 0;\n }\n\n /**\n @dev Registers a transaction with the bridge contract\n @param quote The quote of the service\n @param btcRawTransaction The peg-in transaction\n @param partialMerkleTree The merkle tree path that proves transaction inclusion\n @param height The block that contains the transaction\n @return The total peg-in amount received from the bridge contract or an error code\n */\n function registerBridge(\n QuotesV2.PeginQuote memory quote,\n bytes memory btcRawTransaction,\n bytes memory partialMerkleTree,\n uint256 height,\n bytes32 derivationHash\n ) private returns (int256) {\n return\n bridge.registerFastBridgeBtcTransaction(\n btcRawTransaction,\n height,\n partialMerkleTree,\n derivationHash,\n quote.btcRefundAddress,\n payable(this),\n quote.liquidityProviderBtcAddress,\n callRegistry[derivationHash].timestamp > 0 && callRegistry[derivationHash].success\n );\n }\n\n /**\n @dev Checks if a liquidity provider should be penalized\n @param quote The quote of the service\n @param amount The transferred amount or an error code\n @param callTimestamp The time that the liquidity provider called callForUser\n @param height The block height where the peg-in transaction is included\n @return Boolean indicating whether the penalty applies\n */\n function shouldPenalizeLP(\n QuotesV2.PeginQuote memory quote,\n int256 amount,\n uint256 callTimestamp,\n uint256 height\n ) private view returns (bool) {\n // do not penalize if deposit amount is insufficient\n if (amount > 0 && uint256(amount) < quote.value + quote.callFee + quote.productFeeAmount + quote.gasFee) {\n return false;\n }\n\n bytes memory firstConfirmationHeader = bridge\n .getBtcBlockchainBlockHeaderByHeight(height);\n require(firstConfirmationHeader.length > 0, \"Invalid block height\");\n\n uint256 firstConfirmationTimestamp = BtcUtils.getBtcBlockTimestamp(\n firstConfirmationHeader\n );\n\n // do not penalize if deposit was not made on time\n // prevent overflow when collateral is less than penalty fee.\n uint timeLimit = quote.agreementTimestamp + quote.timeForDeposit;\n if (firstConfirmationTimestamp > timeLimit) {\n return false;\n }\n\n // penalize if call was not made\n if (callTimestamp == 0) {\n return true;\n }\n\n bytes memory nConfirmationsHeader = bridge\n .getBtcBlockchainBlockHeaderByHeight(\n height + quote.depositConfirmations - 1\n );\n require(nConfirmationsHeader.length > 0, \"LBC058\");\n\n uint256 nConfirmationsTimestamp = BtcUtils.getBtcBlockTimestamp(\n nConfirmationsHeader\n );\n\n // penalize if the call was not made on time\n if (callTimestamp > nConfirmationsTimestamp + quote.callTime) {\n return true;\n }\n return false;\n }\n\n function shouldPenalizePegOutLP(\n QuotesV2.PegOutQuote memory quote,\n bytes32 quoteHash,\n bytes32 blockHash\n ) private view returns (bool) {\n bytes memory firstConfirmationHeader = bridge.getBtcBlockchainBlockHeaderByHash(blockHash);\n require(firstConfirmationHeader.length > 0, \"LBC059\");\n\n uint256 firstConfirmationTimestamp = BtcUtils.getBtcBlockTimestamp(firstConfirmationHeader);\n\n // penalize if the transfer was not made on time\n if (firstConfirmationTimestamp > pegoutRegistry[quoteHash].depositTimestamp +\n quote.transferTime + btcBlockTime) {\n return true;\n }\n\n // penalize if LP is refunding after expiration\n if (block.timestamp > quote.expireDate || block.number > quote.expireBlock) {\n return true;\n }\n\n return false;\n }\n\n function payToFeeCollector(uint amount, bytes32 quoteHash) private {\n if (amount > 0) {\n (bool daoSuccess,) = payable(daoFeeCollectorAddress).call{value: amount}(\"\");\n require(daoSuccess, \"LBC074\");\n emit DaoFeeSent(quoteHash, amount);\n }\n }\n\n function updateProvider(string memory _name, string memory _url) external {\n require(bytes(_name).length > 0 && bytes(_url).length > 0, \"LBC076\");\n LiquidityProvider storage lp;\n for (uint i = 1; i <= providerId; i++) {\n lp = liquidityProviders[i];\n if (msg.sender == lp.provider) {\n lp.name = _name;\n lp.apiBaseUrl = _url;\n emit ProviderUpdate(msg.sender, lp.name, lp.apiBaseUrl);\n return;\n }\n }\n revert(\"LBC001\");\n }\n}\n", - "sourcePath": "/Users/luischavez/iov/liquidity-bridge-contract/contracts/LiquidityBridgeContractV2.sol", + "sourcePath": "/Users/guilhermesoares/Desktop/RskCodebase/liquidity-bridge-contract/contracts/LiquidityBridgeContractV2.sol", "ast": { "absolutePath": "project:/contracts/LiquidityBridgeContractV2.sol", "exportedSymbols": { @@ -85558,9 +85603,21 @@ "name": "solc", "version": "0.8.18+commit.87f61d96.Emscripten.clang" }, - "networks": {}, + "networks": { + "31": { + "events": {}, + "links": { + "SignatureValidator": "0xe90bAe63CB58f7da3915C8478aD1823BC8A3BEb5", + "QuotesV2": "0xbdD04fED2A63D79b3342c2d8cf5478b96a2A1EB5", + "BtcUtils": "0x1a11730F3853EA233D22A57459d361481690cfdD" + }, + "address": "0x18D8212bC00106b93070123f325021C723D503a3", + "transactionHash": "0x73c0985ea6079eda2ad6fd7d58bf521a6ae19d36916d7eb622082026d183eda8" + } + }, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.150Z", + "updatedAt": "2024-05-22T08:30:50.026Z", + "networkType": "ethereum", "devdoc": { "events": { "Initialized(uint8)": { diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json index bfaab96..190546b 100644 --- a/build/contracts/Migrations.json +++ b/build/contracts/Migrations.json @@ -669,7 +669,7 @@ "sourceMap": "58:352:25:-:0;;;82:33;;;-1:-1:-1;;;;;;82:33:25;105:10;82:33;;;58:352;;;;;;;;;;;;;;;;", "deployedSourceMap": "58:352:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;119:36;;;;;;;;;160:25:32;;;148:2;133:18;119:36:25;;;;;;;;82:33;;;;;-1:-1:-1;;;;;82:33:25;;;;;;-1:-1:-1;;;;;360:32:32;;;342:51;;330:2;315:18;82:33:25;196:203:32;305:103:25;;;;;;:::i;:::-;;:::i;:::-;;;217:5;;-1:-1:-1;;;;;217:5:25;203:10;:19;188:101;;;;-1:-1:-1;;;188:101:25;;791:2:32;188:101:25;;;773:21:32;830:2;810:18;;;803:30;869:34;849:18;;;842:62;-1:-1:-1;;;920:18:32;;;913:49;979:19;;188:101:25;;;;;;;;367:24:::1;:36:::0;305:103::o;404:180:32:-;463:6;516:2;504:9;495:7;491:23;487:32;484:52;;;532:1;529;522:12;484:52;-1:-1:-1;555:23:32;;404:180;-1:-1:-1;404:180:32:o", "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.18;\n\ncontract Migrations {\n address public owner = msg.sender;\n uint public last_completed_migration;\n\n modifier restricted() {\n require(\n msg.sender == owner,\n \"This function is restricted to the contract's owner\"\n );\n _;\n }\n\n function setCompleted(uint completed) public restricted {\n last_completed_migration = completed;\n }\n}\n", - "sourcePath": "/Users/luischavez/iov/liquidity-bridge-contract/contracts/Migrations.sol", + "sourcePath": "/Users/guilhermesoares/Desktop/RskCodebase/liquidity-bridge-contract/contracts/Migrations.sol", "ast": { "absolutePath": "project:/contracts/Migrations.sol", "exportedSymbols": { @@ -1076,7 +1076,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:34:37.780Z", + "updatedAt": "2024-05-22T08:30:50.062Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/Mock.json b/build/contracts/Mock.json index bb93c4c..8c0ddf0 100644 --- a/build/contracts/Mock.json +++ b/build/contracts/Mock.json @@ -1544,7 +1544,7 @@ "sourceMap": "99:605:26:-:0;;;;;;;;;;;;;;;;;;;", "deployedSourceMap": "99:605:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;399:303;;;;;;:::i;:::-;;:::i;:::-;;242:75;;;;;;;;;;-1:-1:-1;282:3:26;304:6;242:75;;;457:25:32;;;445:2;430:18;242:75:26;;;;;;;323:70;;;;;;;;;;;;;:::i;143:22::-;;;;;;;;;;;;;;;;172:64;;;;;;:::i;:::-;219:6;:10;172:64;399:303;551:144;;-1:-1:-1;;;551:144:26;;1285:3:32;551:144:26;;;;1267:22:32;;;;1326:2;1305:19;;;1298:31;-1:-1:-1;;;1345:19:32;;;1338:45;1421:3;1399:20;;;1392:33;1462:2;1441:19;;;1434:31;-1:-1:-1;;;1481:19:32;;;1474:51;661:4:26;1563:18:32;;;1556:50;1544:3;1622:18;;;1615:30;1661:18;;;1654:29;-1:-1:-1;;;1699:19:32;;;1692:35;530:10:26;;-1:-1:-1;;;;;551:12:26;;;;;571:9;;1744:19:32;;551:144:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;466:236;399:303;:::o;323:70::-;363:23;;-1:-1:-1;;;363:23:26;;2165:2:32;363:23:26;;;2147:21:32;2204:1;2184:18;;;2177:29;-1:-1:-1;;;2222:18:32;;;2215:35;2267:18;;363:23:26;;;;;;;14:294:32;81:6;134:2;122:9;113:7;109:23;105:32;102:52;;;150:1;147;140:12;102:52;176:23;;-1:-1:-1;;;;;228:31:32;;218:42;;208:70;;274:1;271;264:12;208:70;297:5;14:294;-1:-1:-1;;;14:294:32:o;675:179::-;733:6;786:2;774:9;765:7;761:23;757:32;754:52;;;802:1;799;792:12;754:52;-1:-1:-1;825:23:32;;675:179;-1:-1:-1;675:179:32:o;1774:184::-;1844:6;1897:2;1885:9;1876:7;1872:23;1868:32;1865:52;;;1913:1;1910;1903:12;1865:52;-1:-1:-1;1936:16:32;;1774:184;-1:-1:-1;1774:184:32:o", "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.18;\n\nimport \"./LiquidityBridgeContract.sol\";\n\ncontract Mock {\n int private status;\n uint256 public balance;\n\n function set(int s) external payable {\n status = s;\n }\n\n function check() external view returns (int) {\n return status;\n }\n\n function fail() external pure {\n require(false, \"error\");\n }\n\n function callRegister(address payable lbcAddress) external payable {\n LiquidityBridgeContract lbc = LiquidityBridgeContract(lbcAddress);\n lbc.register{value: msg.value}(\n \"First contract\",\n \"http://localhost/api\",\n true,\n \"both\"\n );\n }\n}\n", - "sourcePath": "/Users/luischavez/iov/liquidity-bridge-contract/contracts/Mock.sol", + "sourcePath": "/Users/guilhermesoares/Desktop/RskCodebase/liquidity-bridge-contract/contracts/Mock.sol", "ast": { "absolutePath": "project:/contracts/Mock.sol", "exportedSymbols": { @@ -2349,7 +2349,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:09.293Z", + "updatedAt": "2024-05-22T08:30:02.487Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/OpCodes.json b/build/contracts/OpCodes.json index e185a38..b220969 100644 --- a/build/contracts/OpCodes.json +++ b/build/contracts/OpCodes.json @@ -551,7 +551,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.122Z", + "updatedAt": "2024-05-22T08:24:03.630Z", "devdoc": { "kind": "dev", "methods": {}, diff --git a/build/contracts/Ownable.json b/build/contracts/Ownable.json index e082f5d..6f0544f 100644 --- a/build/contracts/Ownable.json +++ b/build/contracts/Ownable.json @@ -1394,7 +1394,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.102Z", + "updatedAt": "2024-05-22T08:24:03.608Z", "devdoc": { "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.", "kind": "dev", diff --git a/build/contracts/OwnableUpgradeable.json b/build/contracts/OwnableUpgradeable.json index bfa56f6..1ce80b1 100644 --- a/build/contracts/OwnableUpgradeable.json +++ b/build/contracts/OwnableUpgradeable.json @@ -1612,7 +1612,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.094Z", + "updatedAt": "2024-05-22T08:24:03.603Z", "devdoc": { "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.", "events": { diff --git a/build/contracts/Proxy.json b/build/contracts/Proxy.json index 99551b9..6449aea 100644 --- a/build/contracts/Proxy.json +++ b/build/contracts/Proxy.json @@ -813,7 +813,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.108Z", + "updatedAt": "2024-05-22T08:24:03.613Z", "devdoc": { "details": "This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.", "kind": "dev", diff --git a/build/contracts/ProxyAdmin.json b/build/contracts/ProxyAdmin.json index f0d7ba5..95defae 100644 --- a/build/contracts/ProxyAdmin.json +++ b/build/contracts/ProxyAdmin.json @@ -5459,7 +5459,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.108Z", + "updatedAt": "2024-05-22T08:24:03.614Z", "devdoc": { "details": "This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.", "kind": "dev", diff --git a/build/contracts/Quotes.json b/build/contracts/Quotes.json index a506c01..7aa14cd 100644 --- a/build/contracts/Quotes.json +++ b/build/contracts/Quotes.json @@ -11458,7 +11458,7 @@ "sourceMap": "58:4167:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;58:4167:27;;;;;;;;;;;;;;;;;", "deployedSourceMap": "58:4167:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3756:466;;;;;;:::i;:::-;;:::i;:::-;;1202:284;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1492:303;;;;;;:::i;:::-;;:::i;3756:466::-;3878:17;3912:5;:13;;;3898:5;:11;;;:27;;;;:::i;:::-;3878:47;-1:-1:-1;3935:10:27;3948:20;3963:5;3878:47;3948:20;:::i;:::-;3935:33;-1:-1:-1;4163:20:27;3935:33;4163:12;:20;:::i;:::-;4142:17;:41;;4121:94;;;;-1:-1:-1;;;4121:94:27;;8714:2:32;4121:94:27;;;8696:21:32;8753:1;8733:18;;;8726:29;-1:-1:-1;;;8771:18:32;;;8764:36;8817:18;;4121:94:27;;;;;;;;3868:354;;3756:466;;:::o;1202:284::-;1285:12;1440:18;1452:5;1440:11;:18::i;:::-;1460;1472:5;1460:11;:18::i;:::-;1429:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1422:57;;1202:284;;;:::o;1492:303::-;1582:12;1737:24;1755:5;1737:17;:24::i;:::-;1763;1781:5;1763:17;:24::i;1801:513::-;1883:12;1954:5;:19;;;1991:5;:16;;;2025:5;:33;;;2076:5;:22;;;2116:5;:22;;;2156:5;:33;;;2207:5;:13;;;2238:5;:16;;;2272:5;:21;;;1926:381;;;;;;;;;;;;;;;;:::i;2320:468::-;2402:12;2473:5;:10;;;2501:5;:14;;;2533:5;:11;;;2562:5;:11;;;2591:5;:24;;;2633:5;:20;;;2671:5;:14;;;2703:5;:26;;;2747:5;:20;;;2445:336;;;;;;;;;;;;;;;;:::i;2794:482::-;2883:12;2954:5;:16;;;2988:5;:18;;;3024:5;:22;;;3064:5;:22;;;3104:5;:18;;;3140:5;:13;;;3171:5;:16;;;3205:5;:11;;;3234:5;:21;;;2926:343;;;;;;;;;;;;;;;;:::i;3282:468::-;3442:11;;;;;3471:24;;;;3513:22;;;;3553:26;;;;3597:27;;;;3642:18;;;;3678:16;;;;3712:17;;;;3414:329;;;;;;12560:25:32;;;;12604:10;12650:15;;;12630:18;;;12623:43;12702:15;;;3371:12:27;12682:18:32;;;12675:43;;;;12737:6;12779:15;;;12759:18;;;12752:43;12832:15;;;;12811:19;;;12804:44;12885:15;;12864:19;;;12857:44;12938:15;;12917:19;;;12910:44;12991:15;;-1:-1:-1;12970:19:32;;12963:44;3371:12:27;12532:19:32;3414:329:27;12231:782:32;14:127;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:255;218:2;212:9;260:6;248:19;;-1:-1:-1;;;;;282:34:32;;318:22;;;279:62;276:88;;;344:18;;:::i;:::-;380:2;373:22;146:255;:::o;406:250::-;473:2;467:9;515:6;503:19;;-1:-1:-1;;;;;537:34:32;;573:22;;;534:62;531:88;;;599:18;;:::i;661:177::-;729:20;;-1:-1:-1;;;;;;778:35:32;;768:46;;758:74;;828:1;825;818:12;758:74;661:177;;;:::o;843:173::-;911:20;;-1:-1:-1;;;;;960:31:32;;950:42;;940:70;;1006:1;1003;996:12;1021:718;1063:5;1116:3;1109:4;1101:6;1097:17;1093:27;1083:55;;1134:1;1131;1124:12;1083:55;1157:20;;-1:-1:-1;;;;;1226:10:32;;;1223:36;;;1239:18;;:::i;:::-;1314:2;1308:9;1282:2;1368:13;;-1:-1:-1;;1364:22:32;;;1388:2;1360:31;1356:40;1344:53;;;1412:18;;;1432:22;;;1409:46;1406:72;;;1458:18;;:::i;:::-;1498:10;1494:2;1487:22;1533:2;1525:6;1518:18;1579:3;1572:4;1567:2;1559:6;1555:15;1551:26;1548:35;1545:55;;;1596:1;1593;1586:12;1545:55;1660:2;1653:4;1645:6;1641:17;1634:4;1626:6;1622:17;1609:54;1707:1;1700:4;1695:2;1687:6;1683:15;1679:26;1672:37;1727:6;1718:15;;;;;;1021:718;;;;:::o;1744:163::-;1811:20;;1871:10;1860:22;;1850:33;;1840:61;;1897:1;1894;1887:12;1912:160;1978:20;;2038:1;2027:20;;;2017:31;;2007:59;;2062:1;2059;2052:12;2077:159;2144:20;;2204:6;2193:18;;2183:29;;2173:57;;2226:1;2223;2216:12;2241:160;2306:20;;2362:13;;2355:21;2345:32;;2335:60;;2391:1;2388;2381:12;2406:2005;2463:5;2511:6;2499:9;2494:3;2490:19;2486:32;2483:52;;;2531:1;2528;2521:12;2483:52;2553:22;;:::i;:::-;2544:31;;2598:29;2617:9;2598:29;:::i;:::-;2591:5;2584:44;2660:38;2694:2;2683:9;2679:18;2660:38;:::i;:::-;2655:2;2648:5;2644:14;2637:62;2731:38;2765:2;2754:9;2750:18;2731:38;:::i;:::-;2726:2;2715:14;;2708:62;2821:2;2806:18;;2793:32;-1:-1:-1;;;;;2874:14:32;;;2871:34;;;2901:1;2898;2891:12;2871:34;2937:45;2978:3;2969:6;2958:9;2954:22;2937:45;:::i;:::-;2932:2;2925:5;2921:14;2914:69;3016:39;3050:3;3039:9;3035:19;3016:39;:::i;:::-;3010:3;3003:5;2999:15;2992:64;3109:3;3098:9;3094:19;3081:33;3065:49;;3139:2;3129:8;3126:16;3123:36;;;3155:1;3152;3145:12;3123:36;3192:47;3235:3;3224:8;3213:9;3209:24;3192:47;:::i;:::-;3186:3;3179:5;3175:15;3168:72;3301:3;3290:9;3286:19;3273:33;3267:3;3260:5;3256:15;3249:58;3368:3;3357:9;3353:19;3340:33;3334:3;3327:5;3323:15;3316:58;3393:3;3383:13;;3428:38;3462:2;3451:9;3447:18;3428:38;:::i;:::-;3423:2;3416:5;3412:14;3405:62;3486:3;3476:13;;3542:2;3531:9;3527:18;3514:32;3571:2;3561:8;3558:16;3555:36;;;3587:1;3584;3577:12;3555:36;3623:47;3666:3;3655:8;3644:9;3640:24;3623:47;:::i;:::-;3618:2;3611:5;3607:14;3600:71;;;;3690:3;3725:37;3758:2;3747:9;3743:18;3725:37;:::i;:::-;3709:14;;;3702:61;3782:3;3817:36;3834:18;;;3817:36;:::i;:::-;3801:14;;;3794:60;3873:3;3921:18;;;3908:32;3892:14;;;3885:56;3960:3;3995:37;4013:18;;;3995:37;:::i;:::-;3979:14;;;3972:61;4052:3;4087:37;4105:18;;;4087:37;:::i;:::-;4071:14;;;4064:61;4144:3;4179:37;4197:18;;;4179:37;:::i;:::-;4163:14;;;4156:61;4237:3;4273:38;4291:19;;;4273:38;:::i;:::-;4256:15;;;4249:63;4332:3;4368:36;4384:19;;;4368:36;:::i;:::-;4351:15;;;4344:61;4355:5;2406:2005;-1:-1:-1;;2406:2005:32:o;4416:420::-;4513:6;4521;4574:2;4562:9;4553:7;4549:23;4545:32;4542:52;;;4590:1;4587;4580:12;4542:52;4617:23;;-1:-1:-1;;;;;4652:30:32;;4649:50;;;4695:1;4692;4685:12;4649:50;4718:61;4771:7;4762:6;4751:9;4747:22;4718:61;:::i;:::-;4708:71;4826:2;4811:18;;;;4798:32;;-1:-1:-1;;;;4416:420:32:o;4841:352::-;4929:6;4982:2;4970:9;4961:7;4957:23;4953:32;4950:52;;;4998:1;4995;4988:12;4950:52;5025:23;;-1:-1:-1;;;;;5060:30:32;;5057:50;;;5103:1;5100;5093:12;5057:50;5126:61;5179:7;5170:6;5159:9;5155:22;5126:61;:::i;:::-;5116:71;4841:352;-1:-1:-1;;;;4841:352:32:o;5198:422::-;5239:3;5277:5;5271:12;5304:6;5299:3;5292:19;5329:1;5339:162;5353:6;5350:1;5347:13;5339:162;;;5415:4;5471:13;;;5467:22;;5461:29;5443:11;;;5439:20;;5432:59;5368:12;5339:162;;;5343:3;5546:1;5539:4;5530:6;5525:3;5521:16;5517:27;5510:38;5609:4;5602:2;5598:7;5593:2;5585:6;5581:15;5577:29;5572:3;5568:39;5564:50;5557:57;;;5198:422;;;;:::o;5625:225::-;5780:2;5769:9;5762:21;5743:4;5800:44;5840:2;5829:9;5825:18;5817:6;5800:44;:::i;:::-;5792:52;5625:225;-1:-1:-1;;;5625:225:32:o;5855:2035::-;5944:6;5997:2;5985:9;5976:7;5972:23;5968:32;5965:52;;;6013:1;6010;6003:12;5965:52;6040:23;;-1:-1:-1;;;;;6112:14:32;;;6109:34;;;6139:1;6136;6129:12;6109:34;6162:22;;;;6218:6;6200:16;;;6196:29;6193:49;;;6238:1;6235;6228:12;6193:49;6264:17;;:::i;:::-;6304:22;6323:2;6304:22;:::i;:::-;6297:5;6290:37;6359:31;6386:2;6382;6378:11;6359:31;:::i;:::-;6354:2;6347:5;6343:14;6336:55;6437:2;6433;6429:11;6416:25;6466:2;6456:8;6453:16;6450:36;;;6482:1;6479;6472:12;6450:36;6518:44;6554:7;6543:8;6539:2;6535:17;6518:44;:::i;:::-;6513:2;6506:5;6502:14;6495:68;;6595:31;6622:2;6618;6614:11;6595:31;:::i;:::-;6590:2;6583:5;6579:14;6572:55;6673:3;6669:2;6665:12;6652:26;6703:2;6693:8;6690:16;6687:36;;;6719:1;6716;6709:12;6687:36;6756:44;6792:7;6781:8;6777:2;6773:17;6756:44;:::i;:::-;6750:3;6743:5;6739:15;6732:69;;6855:3;6851:2;6847:12;6834:26;6828:3;6821:5;6817:15;6810:51;6915:3;6911:2;6907:12;6894:26;6888:3;6881:5;6877:15;6870:51;6954:30;6979:3;6975:2;6971:12;6954:30;:::i;:::-;6948:3;6941:5;6937:15;6930:55;7004:3;7053:2;7049;7045:11;7032:25;7082:2;7072:8;7069:16;7066:36;;;7098:1;7095;7088:12;7066:36;7134:44;7170:7;7159:8;7155:2;7151:17;7134:44;:::i;:::-;7129:2;7122:5;7118:14;7111:68;;;7198:3;7188:13;;7254:2;7250;7246:11;7233:25;7228:2;7221:5;7217:14;7210:49;7278:3;7268:13;;7313:30;7339:2;7335;7331:11;7313:30;:::i;:::-;7308:2;7301:5;7297:14;7290:54;7363:3;7353:13;;7398:30;7424:2;7420;7416:11;7398:30;:::i;:::-;7393:2;7386:5;7382:14;7375:54;7448:3;7438:13;;7483:30;7509:2;7505;7501:11;7483:30;:::i;:::-;7478:2;7471:5;7467:14;7460:54;7533:3;7523:13;;7568:30;7594:2;7590;7586:11;7568:30;:::i;:::-;7563:2;7556:5;7552:14;7545:54;7618:3;7608:13;;7653:30;7679:2;7675;7671:11;7653:30;:::i;:::-;7648:2;7641:5;7637:14;7630:54;7704:3;7693:14;;7740:31;7766:3;7762:2;7758:12;7740:31;:::i;:::-;7734:3;7727:5;7723:15;7716:56;7792:3;7781:14;;7828:31;7854:3;7850:2;7846:12;7828:31;:::i;:::-;7811:15;;;7804:56;;;;7815:5;5855:2035;-1:-1:-1;;;;5855:2035:32:o;7895:127::-;7956:10;7951:3;7947:20;7944:1;7937:31;7987:4;7984:1;7977:15;8011:4;8008:1;8001:15;8027:125;8092:9;;;8113:10;;;8110:36;;;8126:18;;:::i;:::-;8027:125;;;;:::o;8157:217::-;8197:1;8223;8213:132;;8267:10;8262:3;8258:20;8255:1;8248:31;8302:4;8299:1;8292:15;8330:4;8327:1;8320:15;8213:132;-1:-1:-1;8359:9:32;;8157:217::o;8379:128::-;8446:9;;;8467:11;;;8464:37;;;8481:18;;:::i;8846:377::-;9039:2;9028:9;9021:21;9002:4;9065:44;9105:2;9094:9;9090:18;9082:6;9065:44;:::i;:::-;9157:9;9149:6;9145:22;9140:2;9129:9;9125:18;9118:50;9185:32;9210:6;9202;9185:32;:::i;:::-;9177:40;8846:377;-1:-1:-1;;;;;8846:377:32:o;9228:1021::-;-1:-1:-1;;;;;;9655:36:32;;9637:55;;-1:-1:-1;;;;;9766:15:32;;;9761:2;9746:18;;9739:43;9818:15;;;9813:2;9798:18;;9791:43;9625:3;9679:2;9850:18;;9843:30;;;9596:4;;9896:44;9921:18;;;9913:6;9896:44;:::i;:::-;9882:58;;9989:2;9981:6;9977:15;9971:3;9960:9;9956:19;9949:44;10042:9;10034:6;10030:22;10024:3;10013:9;10009:19;10002:51;10070:32;10095:6;10087;10070:32;:::i;:::-;10133:3;10118:19;;10111:35;;;;10177:3;10162:19;;10155:35;;;;-1:-1:-1;;10227:15:32;;10221:3;10206:19;;;10199:44;10062:40;9228:1021;-1:-1:-1;;;;;;9228:1021:32:o;10254:901::-;10568:4;10597:3;10627:2;10616:9;10609:21;10647:44;10687:2;10676:9;10672:18;10664:6;10647:44;:::i;:::-;10710:10;10756:15;;;10751:2;10736:18;;10729:43;10819:1;10808:21;;;;10803:2;10788:18;;10781:49;-1:-1:-1;;10861:2:32;10846:18;;10839:34;;;;10910:15;;;10904:3;10889:19;;10882:44;10963:15;;;10957:3;10942:19;;10935:44;11016:15;;;11010:3;10995:19;;10988:44;11081:6;11069:19;;;11063:3;11048:19;;11041:48;11133:14;;11126:22;11120:3;11105:19;;;11098:51;;;;10808:21;10639:52;-1:-1:-1;10254:901:32:o;11160:1066::-;-1:-1:-1;;;;;11623:15:32;;;11605:34;;11675:15;;;11670:2;11655:18;;11648:43;11555:3;11722:2;11707:18;;11700:30;;;11526:4;;11753:44;11778:18;;;11770:6;11753:44;:::i;:::-;11833:15;;;11828:2;11813:18;;11806:43;11886:22;;;11880:3;11865:19;;11858:51;11739:58;-1:-1:-1;11932:32:32;11739:58;11949:6;11932:32;:::i;:::-;11918:46;;12001:6;11995:3;11984:9;11980:19;11973:35;12045:6;12039:3;12028:9;12024:19;12017:35;12103:6;12100:1;12089:21;12083:3;12072:9;12068:19;12061:50;12160:9;12152:6;12148:22;12142:3;12131:9;12127:19;12120:51;12188:32;12213:6;12205;12188:32;:::i;:::-;12180:40;11160:1066;-1:-1:-1;;;;;;;;;;;;11160:1066:32:o", "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.18;\n\nlibrary Quotes {\n struct PeginQuote {\n bytes20 fedBtcAddress;\n address lbcAddress;\n address liquidityProviderRskAddress;\n bytes btcRefundAddress;\n address payable rskRefundAddress;\n bytes liquidityProviderBtcAddress;\n uint256 callFee;\n uint256 penaltyFee;\n address contractAddress;\n bytes data;\n uint32 gasLimit;\n int64 nonce;\n uint256 value;\n uint32 agreementTimestamp;\n uint32 timeForDeposit;\n uint32 callTime;\n uint16 depositConfirmations;\n bool callOnRegister;\n }\n\n struct PegOutQuote {\n address lbcAddress;\n address lpRskAddress;\n bytes btcRefundAddress;\n address rskRefundAddress;\n bytes lpBtcAddress;\n uint256 callFee;\n uint256 penaltyFee;\n int64 nonce;\n bytes deposityAddress;\n uint256 value;\n uint32 agreementTimestamp;\n uint32 depositDateLimit;\n uint16 depositConfirmations;\n uint16 transferConfirmations;\n uint32 transferTime;\n uint32 expireDate;\n uint32 expireBlock;\n }\n\n function encodeQuote(\n PeginQuote memory quote\n ) external pure returns (bytes memory) {\n // Encode in two parts because abi.encode cannot take more than 12 parameters due to stack depth limits.\n return abi.encode(encodePart1(quote), encodePart2(quote));\n }\n\n function encodePegOutQuote(\n PegOutQuote memory quote\n ) external pure returns (bytes memory) {\n // Encode in two parts because abi.encode cannot take more than 12 parameters due to stack depth limits.\n return abi.encode(encodePegOutPart1(quote), encodePegOutPart2(quote));\n }\n\n function encodePart1(\n PeginQuote memory quote\n ) private pure returns (bytes memory) {\n return\n abi.encode(\n quote.fedBtcAddress,\n quote.lbcAddress,\n quote.liquidityProviderRskAddress,\n quote.btcRefundAddress,\n quote.rskRefundAddress,\n quote.liquidityProviderBtcAddress,\n quote.callFee,\n quote.penaltyFee,\n quote.contractAddress\n );\n }\n\n function encodePart2(\n PeginQuote memory quote\n ) private pure returns (bytes memory) {\n return\n abi.encode(\n quote.data,\n quote.gasLimit,\n quote.nonce,\n quote.value,\n quote.agreementTimestamp,\n quote.timeForDeposit,\n quote.callTime,\n quote.depositConfirmations,\n quote.callOnRegister\n );\n }\n\n function encodePegOutPart1(\n PegOutQuote memory quote\n ) private pure returns (bytes memory) {\n return\n abi.encode(\n quote.lbcAddress,\n quote.lpRskAddress,\n quote.btcRefundAddress,\n quote.rskRefundAddress,\n quote.lpBtcAddress,\n quote.callFee,\n quote.penaltyFee,\n quote.nonce,\n quote.deposityAddress\n );\n }\n\n function encodePegOutPart2(\n PegOutQuote memory quote\n ) private pure returns (bytes memory) {\n return\n abi.encode(\n quote.value,\n quote.agreementTimestamp,\n quote.depositDateLimit,\n quote.depositConfirmations,\n quote.transferConfirmations,\n quote.transferTime,\n quote.expireDate,\n quote.expireBlock\n );\n }\n\n function checkAgreedAmount(\n PeginQuote memory quote,\n uint transferredAmount\n ) external pure {\n uint agreedAmount = quote.value + quote.callFee;\n uint delta = agreedAmount / 10000;\n // transferred amount should not be lower than (agreed amount - delta),\n // where delta is intended to tackle rounding problems\n require(\n transferredAmount >= agreedAmount - delta,\n \"LBC057\"\n );\n }\n\n}", - "sourcePath": "/Users/luischavez/iov/liquidity-bridge-contract/contracts/Quotes.sol", + "sourcePath": "/Users/guilhermesoares/Desktop/RskCodebase/liquidity-bridge-contract/contracts/Quotes.sol", "ast": { "absolutePath": "project:/contracts/Quotes.sol", "exportedSymbols": { @@ -15168,7 +15168,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:09.304Z", + "updatedAt": "2024-05-22T08:30:02.500Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/QuotesV2.json b/build/contracts/QuotesV2.json index 16c623e..cf1309a 100644 --- a/build/contracts/QuotesV2.json +++ b/build/contracts/QuotesV2.json @@ -120,7 +120,8 @@ } ], "stateMutability": "pure", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -236,7 +237,8 @@ } ], "stateMutability": "pure", - "type": "function" + "type": "function", + "constant": true }, { "inputs": [ @@ -356,7 +358,8 @@ "name": "checkAgreedAmount", "outputs": [], "stateMutability": "pure", - "type": "function" + "type": "function", + "constant": true } ], "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes20\",\"name\":\"fedBtcAddress\",\"type\":\"bytes20\"},{\"internalType\":\"address\",\"name\":\"lbcAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidityProviderRskAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"btcRefundAddress\",\"type\":\"bytes\"},{\"internalType\":\"address payable\",\"name\":\"rskRefundAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"liquidityProviderBtcAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"penaltyFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"int64\",\"name\":\"nonce\",\"type\":\"int64\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"agreementTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"timeForDeposit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"callTime\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"depositConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"callOnRegister\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"productFeeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasFee\",\"type\":\"uint256\"}],\"internalType\":\"struct QuotesV2.PeginQuote\",\"name\":\"quote\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"transferredAmount\",\"type\":\"uint256\"}],\"name\":\"checkAgreedAmount\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"lbcAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"lpRskAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"btcRefundAddress\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"rskRefundAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"lpBtcAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"penaltyFee\",\"type\":\"uint256\"},{\"internalType\":\"int64\",\"name\":\"nonce\",\"type\":\"int64\"},{\"internalType\":\"bytes\",\"name\":\"deposityAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"agreementTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"depositDateLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"depositConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"transferConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"transferTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expireDate\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expireBlock\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"productFeeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasFee\",\"type\":\"uint256\"}],\"internalType\":\"struct QuotesV2.PegOutQuote\",\"name\":\"quote\",\"type\":\"tuple\"}],\"name\":\"encodePegOutQuote\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes20\",\"name\":\"fedBtcAddress\",\"type\":\"bytes20\"},{\"internalType\":\"address\",\"name\":\"lbcAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"liquidityProviderRskAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"btcRefundAddress\",\"type\":\"bytes\"},{\"internalType\":\"address payable\",\"name\":\"rskRefundAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"liquidityProviderBtcAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"penaltyFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"int64\",\"name\":\"nonce\",\"type\":\"int64\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"agreementTimestamp\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"timeForDeposit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"callTime\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"depositConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"callOnRegister\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"productFeeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasFee\",\"type\":\"uint256\"}],\"internalType\":\"struct QuotesV2.PeginQuote\",\"name\":\"quote\",\"type\":\"tuple\"}],\"name\":\"encodeQuote\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/QuotesV2.sol\":\"QuotesV2\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"project:/contracts/QuotesV2.sol\":{\"keccak256\":\"0xda3afec2b2b9aae5c1747ffcd7646fd0680965743702961b08236e0cce699d35\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e751b7128c53b32303e573fb14796eb0e8912d50114c8824ad307ac632725ee\",\"dweb:/ipfs/QmTyF3Dmw1d7crXtSALUsaQcHtp5cCzUo1xEtyG3uBtXAY\"]}},\"version\":1}", @@ -12032,7 +12035,7 @@ "sourceMap": "58:4493:28:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;58:4493:28;;;;;;;;;;;;;;;;;", "deployedSourceMap": "58:4493:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1320:284;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1610:303;;;;;;:::i;:::-;;:::i;4014:534::-;;;;;;:::i;:::-;;:::i;:::-;;1320:284;1403:12;1558:18;1570:5;1558:11;:18::i;:::-;1578;1590:5;1578:11;:18::i;:::-;1547:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1540:57;;1320:284;;;:::o;1610:303::-;1700:12;1855:24;1873:5;1855:17;:24::i;:::-;1881;1899:5;1881:17;:24::i;4014:534::-;4136:17;4237:5;:12;;;4212:5;:22;;;4196:5;:13;;;4182:5;:11;;;:27;;;;:::i;:::-;:52;;;;:::i;:::-;:67;;;;:::i;:::-;4167:82;-1:-1:-1;4261:10:28;4274:20;4289:5;4167:82;4274:20;:::i;:::-;4261:33;-1:-1:-1;4489:20:28;4261:33;4489:12;:20;:::i;:::-;4468:17;:41;;4447:94;;;;-1:-1:-1;;;4447:94:28;;9442:2:32;4447:94:28;;;9424:21:32;9481:1;9461:18;;;9454:29;-1:-1:-1;;;9499:18:32;;;9492:36;9545:18;;4447:94:28;;;;;;;;4126:422;;4014:534;;:::o;1919:513::-;2001:12;2072:5;:19;;;2109:5;:16;;;2143:5;:33;;;2194:5;:22;;;2234:5;:22;;;2274:5;:33;;;2325:5;:13;;;2356:5;:16;;;2390:5;:21;;;2044:381;;;;;;;;;;;;;;;;:::i;2438:538::-;2520:12;2591:5;:10;;;2619:5;:14;;;2651:5;:11;;;2680:5;:11;;;2709:5;:24;;;2751:5;:20;;;2789:5;:14;;;2821:5;:26;;;2865:5;:20;;;2903:5;:22;;;2943:5;:12;;;2563:406;;;;;;;;;;;;;;;;;;:::i;2982:482::-;3071:12;3142:5;:16;;;3176:5;:18;;;3212:5;:22;;;3252:5;:22;;;3292:5;:18;;;3328:5;:13;;;3359:5;:16;;;3393:5;:11;;;3422:5;:21;;;3114:343;;;;;;;;;;;;;;;;:::i;3470:538::-;3630:11;;;;;3659:24;;;;;3701:22;;;;;3741:26;;;;3785:27;;;;3830:18;;;;3866:16;;;;3900:17;;;;3935:22;;;;3975:12;;;;3602:399;;;;;;13108:25:32;;;;13152:10;13198:15;;;13178:18;;;13171:43;13250:15;;;3559:12:28;13230:18:32;;;13223:43;;;;13285:6;13327:15;;;13307:18;;;13300:43;13380:15;;;;13359:19;;;13352:44;13433:15;;;13412:19;;;13405:44;13486:15;;13465:19;;;13458:44;13539:15;;;;-1:-1:-1;13518:19:32;;13511:44;13571:19;;;13564:35;;;;13615:19;;;13608:35;13080:19;3602:399:28;12723:926:32;14:127;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:255;218:2;212:9;260:6;248:19;;-1:-1:-1;;;;;282:34:32;;318:22;;;279:62;276:88;;;344:18;;:::i;:::-;380:2;373:22;146:255;:::o;406:250::-;473:2;467:9;515:6;503:19;;-1:-1:-1;;;;;537:34:32;;573:22;;;534:62;531:88;;;599:18;;:::i;661:177::-;729:20;;-1:-1:-1;;;;;;778:35:32;;768:46;;758:74;;828:1;825;818:12;758:74;661:177;;;:::o;843:173::-;911:20;;-1:-1:-1;;;;;960:31:32;;950:42;;940:70;;1006:1;1003;996:12;1021:718;1063:5;1116:3;1109:4;1101:6;1097:17;1093:27;1083:55;;1134:1;1131;1124:12;1083:55;1157:20;;-1:-1:-1;;;;;1226:10:32;;;1223:36;;;1239:18;;:::i;:::-;1314:2;1308:9;1282:2;1368:13;;-1:-1:-1;;1364:22:32;;;1388:2;1360:31;1356:40;1344:53;;;1412:18;;;1432:22;;;1409:46;1406:72;;;1458:18;;:::i;:::-;1498:10;1494:2;1487:22;1533:2;1525:6;1518:18;1579:3;1572:4;1567:2;1559:6;1555:15;1551:26;1548:35;1545:55;;;1596:1;1593;1586:12;1545:55;1660:2;1653:4;1645:6;1641:17;1634:4;1626:6;1622:17;1609:54;1707:1;1700:4;1695:2;1687:6;1683:15;1679:26;1672:37;1727:6;1718:15;;;;;;1021:718;;;;:::o;1744:163::-;1811:20;;1871:10;1860:22;;1850:33;;1840:61;;1897:1;1894;1887:12;1912:160;1978:20;;2038:1;2027:20;;;2017:31;;2007:59;;2062:1;2059;2052:12;2077:159;2144:20;;2204:6;2193:18;;2183:29;;2173:57;;2226:1;2223;2216:12;2241:160;2306:20;;2362:13;;2355:21;2345:32;;2335:60;;2391:1;2388;2381:12;2406:2185;2463:5;2511:6;2499:9;2494:3;2490:19;2486:32;2483:52;;;2531:1;2528;2521:12;2483:52;2553:22;;:::i;:::-;2544:31;;2598:29;2617:9;2598:29;:::i;:::-;2591:5;2584:44;2660:38;2694:2;2683:9;2679:18;2660:38;:::i;:::-;2655:2;2648:5;2644:14;2637:62;2731:38;2765:2;2754:9;2750:18;2731:38;:::i;:::-;2726:2;2715:14;;2708:62;2821:2;2806:18;;2793:32;-1:-1:-1;;;;;2874:14:32;;;2871:34;;;2901:1;2898;2891:12;2871:34;2937:45;2978:3;2969:6;2958:9;2954:22;2937:45;:::i;:::-;2932:2;2925:5;2921:14;2914:69;3016:39;3050:3;3039:9;3035:19;3016:39;:::i;:::-;3010:3;3003:5;2999:15;2992:64;3109:3;3098:9;3094:19;3081:33;3065:49;;3139:2;3129:8;3126:16;3123:36;;;3155:1;3152;3145:12;3123:36;3192:47;3235:3;3224:8;3213:9;3209:24;3192:47;:::i;:::-;3186:3;3179:5;3175:15;3168:72;3301:3;3290:9;3286:19;3273:33;3267:3;3260:5;3256:15;3249:58;3368:3;3357:9;3353:19;3340:33;3334:3;3327:5;3323:15;3316:58;3393:3;3383:13;;3428:38;3462:2;3451:9;3447:18;3428:38;:::i;:::-;3423:2;3416:5;3412:14;3405:62;3486:3;3476:13;;3542:2;3531:9;3527:18;3514:32;3571:2;3561:8;3558:16;3555:36;;;3587:1;3584;3577:12;3555:36;3623:47;3666:3;3655:8;3644:9;3640:24;3623:47;:::i;:::-;3618:2;3611:5;3607:14;3600:71;;;;3690:3;3725:37;3758:2;3747:9;3743:18;3725:37;:::i;:::-;3709:14;;;3702:61;3782:3;3817:36;3834:18;;;3817:36;:::i;:::-;3801:14;;;3794:60;3873:3;3921:18;;;3908:32;3892:14;;;3885:56;3960:3;3995:37;4013:18;;;3995:37;:::i;:::-;3979:14;;;3972:61;4052:3;4087:37;4105:18;;;4087:37;:::i;:::-;4071:14;;;4064:61;4144:3;4179:37;4197:18;;;4179:37;:::i;:::-;4163:14;;;4156:61;4237:3;4273:38;4291:19;;;4273:38;:::i;:::-;4256:15;;;4249:63;4332:3;4368:36;4384:19;;;4368:36;:::i;:::-;4351:15;;;4344:61;4425:3;4474:19;;;4461:33;4444:15;;;4437:58;4515:3;4564:19;;;4551:33;4534:15;;;4527:58;;;;4355:5;2406:2185;-1:-1:-1;2406:2185:32:o;4596:352::-;4684:6;4737:2;4725:9;4716:7;4712:23;4708:32;4705:52;;;4753:1;4750;4743:12;4705:52;4780:23;;-1:-1:-1;;;;;4815:30:32;;4812:50;;;4858:1;4855;4848:12;4812:50;4881:61;4934:7;4925:6;4914:9;4910:22;4881:61;:::i;:::-;4871:71;4596:352;-1:-1:-1;;;;4596:352:32:o;4953:422::-;4994:3;5032:5;5026:12;5059:6;5054:3;5047:19;5084:1;5094:162;5108:6;5105:1;5102:13;5094:162;;;5170:4;5226:13;;;5222:22;;5216:29;5198:11;;;5194:20;;5187:59;5123:12;5094:162;;;5098:3;5301:1;5294:4;5285:6;5280:3;5276:16;5272:27;5265:38;5364:4;5357:2;5353:7;5348:2;5340:6;5336:15;5332:29;5327:3;5323:39;5319:50;5312:57;;;4953:422;;;;:::o;5380:225::-;5535:2;5524:9;5517:21;5498:4;5555:44;5595:2;5584:9;5580:18;5572:6;5555:44;:::i;:::-;5547:52;5380:225;-1:-1:-1;;;5380:225:32:o;5610:2201::-;5699:6;5752:2;5740:9;5731:7;5727:23;5723:32;5720:52;;;5768:1;5765;5758:12;5720:52;5795:23;;-1:-1:-1;;;;;5867:14:32;;;5864:34;;;5894:1;5891;5884:12;5864:34;5917:22;;;;5973:6;5955:16;;;5951:29;5948:49;;;5993:1;5990;5983:12;5948:49;6019:17;;:::i;:::-;6059:22;6078:2;6059:22;:::i;:::-;6052:5;6045:37;6114:31;6141:2;6137;6133:11;6114:31;:::i;:::-;6109:2;6102:5;6098:14;6091:55;6192:2;6188;6184:11;6171:25;6221:2;6211:8;6208:16;6205:36;;;6237:1;6234;6227:12;6205:36;6273:44;6309:7;6298:8;6294:2;6290:17;6273:44;:::i;:::-;6268:2;6261:5;6257:14;6250:68;;6350:31;6377:2;6373;6369:11;6350:31;:::i;:::-;6345:2;6338:5;6334:14;6327:55;6428:3;6424:2;6420:12;6407:26;6458:2;6448:8;6445:16;6442:36;;;6474:1;6471;6464:12;6442:36;6511:44;6547:7;6536:8;6532:2;6528:17;6511:44;:::i;:::-;6505:3;6498:5;6494:15;6487:69;;6610:3;6606:2;6602:12;6589:26;6583:3;6576:5;6572:15;6565:51;6670:3;6666:2;6662:12;6649:26;6643:3;6636:5;6632:15;6625:51;6709:30;6734:3;6730:2;6726:12;6709:30;:::i;:::-;6703:3;6696:5;6692:15;6685:55;6759:3;6808:2;6804;6800:11;6787:25;6837:2;6827:8;6824:16;6821:36;;;6853:1;6850;6843:12;6821:36;6889:44;6925:7;6914:8;6910:2;6906:17;6889:44;:::i;:::-;6884:2;6877:5;6873:14;6866:68;;;6953:3;6943:13;;7009:2;7005;7001:11;6988:25;6983:2;6976:5;6972:14;6965:49;7033:3;7023:13;;7068:30;7094:2;7090;7086:11;7068:30;:::i;:::-;7063:2;7056:5;7052:14;7045:54;7118:3;7108:13;;7153:30;7179:2;7175;7171:11;7153:30;:::i;:::-;7148:2;7141:5;7137:14;7130:54;7203:3;7193:13;;7238:30;7264:2;7260;7256:11;7238:30;:::i;:::-;7233:2;7226:5;7222:14;7215:54;7288:3;7278:13;;7323:30;7349:2;7345;7341:11;7323:30;:::i;:::-;7318:2;7311:5;7307:14;7300:54;7373:3;7363:13;;7408:30;7434:2;7430;7426:11;7408:30;:::i;:::-;7403:2;7396:5;7392:14;7385:54;7459:3;7448:14;;7495:31;7521:3;7517:2;7513:12;7495:31;:::i;:::-;7489:3;7482:5;7478:15;7471:56;7547:3;7536:14;;7583:31;7609:3;7605:2;7601:12;7583:31;:::i;:::-;7566:15;;;7559:56;;;;7635:3;7684:12;;;7671:26;7654:15;;;7647:51;7718:3;7767:12;;;7754:26;7737:15;;;7730:51;;;;7570:5;5610:2201;-1:-1:-1;;;5610:2201:32:o;7816:420::-;7913:6;7921;7974:2;7962:9;7953:7;7949:23;7945:32;7942:52;;;7990:1;7987;7980:12;7942:52;8017:23;;-1:-1:-1;;;;;8052:30:32;;8049:50;;;8095:1;8092;8085:12;8049:50;8118:61;8171:7;8162:6;8151:9;8147:22;8118:61;:::i;:::-;8108:71;8226:2;8211:18;;;;8198:32;;-1:-1:-1;;;;7816:420:32:o;8241:377::-;8434:2;8423:9;8416:21;8397:4;8460:44;8500:2;8489:9;8485:18;8477:6;8460:44;:::i;:::-;8552:9;8544:6;8540:22;8535:2;8524:9;8520:18;8513:50;8580:32;8605:6;8597;8580:32;:::i;:::-;8572:40;8241:377;-1:-1:-1;;;;;8241:377:32:o;8623:127::-;8684:10;8679:3;8675:20;8672:1;8665:31;8715:4;8712:1;8705:15;8739:4;8736:1;8729:15;8755:125;8820:9;;;8841:10;;;8838:36;;;8854:18;;:::i;:::-;8755:125;;;;:::o;8885:217::-;8925:1;8951;8941:132;;8995:10;8990:3;8986:20;8983:1;8976:31;9030:4;9027:1;9020:15;9058:4;9055:1;9048:15;8941:132;-1:-1:-1;9087:9:32;;8885:217::o;9107:128::-;9174:9;;;9195:11;;;9192:37;;;9209:18;;:::i;9574:1021::-;-1:-1:-1;;;;;;10001:36:32;;9983:55;;-1:-1:-1;;;;;10112:15:32;;;10107:2;10092:18;;10085:43;10164:15;;;10159:2;10144:18;;10137:43;9971:3;10025:2;10196:18;;10189:30;;;9942:4;;10242:44;10267:18;;;10259:6;10242:44;:::i;:::-;10228:58;;10335:2;10327:6;10323:15;10317:3;10306:9;10302:19;10295:44;10388:9;10380:6;10376:22;10370:3;10359:9;10355:19;10348:51;10416:32;10441:6;10433;10416:32;:::i;:::-;10479:3;10464:19;;10457:35;;;;10523:3;10508:19;;10501:35;;;;-1:-1:-1;;10573:15:32;;10567:3;10552:19;;;10545:44;10408:40;9574:1021;-1:-1:-1;;;;;;9574:1021:32:o;10600:1047::-;10971:4;11000:3;11030:2;11019:9;11012:21;11050:44;11090:2;11079:9;11075:18;11067:6;11050:44;:::i;:::-;11113:10;11159:15;;;11154:2;11139:18;;11132:43;11222:1;11211:21;;;;11206:2;11191:18;;11184:49;-1:-1:-1;;11264:2:32;11249:18;;11242:34;;;;11313:15;;;11307:3;11292:19;;11285:44;11366:15;;;11360:3;11345:19;;11338:44;11419:15;;;;11413:3;11398:19;;11391:44;11484:6;11472:19;;;11466:3;11451:19;;11444:48;11536:14;;11529:22;11523:3;11508:19;;11501:51;11583:3;11568:19;;11561:35;;;;11627:3;11612:19;11605:36;;;;11211:21;11042:52;-1:-1:-1;10600:1047:32:o;11652:1066::-;-1:-1:-1;;;;;12115:15:32;;;12097:34;;12167:15;;;12162:2;12147:18;;12140:43;12047:3;12214:2;12199:18;;12192:30;;;12018:4;;12245:44;12270:18;;;12262:6;12245:44;:::i;:::-;12325:15;;;12320:2;12305:18;;12298:43;12378:22;;;12372:3;12357:19;;12350:51;12231:58;-1:-1:-1;12424:32:32;12231:58;12441:6;12424:32;:::i;:::-;12410:46;;12493:6;12487:3;12476:9;12472:19;12465:35;12537:6;12531:3;12520:9;12516:19;12509:35;12595:6;12592:1;12581:21;12575:3;12564:9;12560:19;12553:50;12652:9;12644:6;12640:22;12634:3;12623:9;12619:19;12612:51;12680:32;12705:6;12697;12680:32;:::i;:::-;12672:40;11652:1066;-1:-1:-1;;;;;;;;;;;;11652:1066:32:o", "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.18;\n\nlibrary QuotesV2 {\n struct PeginQuote {\n bytes20 fedBtcAddress;\n address lbcAddress;\n address liquidityProviderRskAddress;\n bytes btcRefundAddress;\n address payable rskRefundAddress;\n bytes liquidityProviderBtcAddress;\n uint256 callFee;\n uint256 penaltyFee;\n address contractAddress;\n bytes data;\n uint32 gasLimit;\n int64 nonce;\n uint256 value;\n uint32 agreementTimestamp;\n uint32 timeForDeposit;\n uint32 callTime;\n uint16 depositConfirmations;\n bool callOnRegister;\n uint256 productFeeAmount;\n uint256 gasFee;\n }\n\n struct PegOutQuote {\n address lbcAddress;\n address lpRskAddress;\n bytes btcRefundAddress;\n address rskRefundAddress;\n bytes lpBtcAddress;\n uint256 callFee;\n uint256 penaltyFee;\n int64 nonce;\n bytes deposityAddress;\n uint256 value;\n uint32 agreementTimestamp;\n uint32 depositDateLimit;\n uint16 depositConfirmations;\n uint16 transferConfirmations;\n uint32 transferTime;\n uint32 expireDate;\n uint32 expireBlock;\n uint256 productFeeAmount;\n uint256 gasFee;\n }\n\n function encodeQuote(\n PeginQuote memory quote\n ) external pure returns (bytes memory) {\n // Encode in two parts because abi.encode cannot take more than 12 parameters due to stack depth limits.\n return abi.encode(encodePart1(quote), encodePart2(quote));\n }\n\n function encodePegOutQuote(\n PegOutQuote memory quote\n ) external pure returns (bytes memory) {\n // Encode in two parts because abi.encode cannot take more than 12 parameters due to stack depth limits.\n return abi.encode(encodePegOutPart1(quote), encodePegOutPart2(quote));\n }\n\n function encodePart1(\n PeginQuote memory quote\n ) private pure returns (bytes memory) {\n return\n abi.encode(\n quote.fedBtcAddress,\n quote.lbcAddress,\n quote.liquidityProviderRskAddress,\n quote.btcRefundAddress,\n quote.rskRefundAddress,\n quote.liquidityProviderBtcAddress,\n quote.callFee,\n quote.penaltyFee,\n quote.contractAddress\n );\n }\n\n function encodePart2(\n PeginQuote memory quote\n ) private pure returns (bytes memory) {\n return\n abi.encode(\n quote.data,\n quote.gasLimit,\n quote.nonce,\n quote.value,\n quote.agreementTimestamp,\n quote.timeForDeposit,\n quote.callTime,\n quote.depositConfirmations,\n quote.callOnRegister,\n quote.productFeeAmount,\n quote.gasFee\n );\n }\n\n function encodePegOutPart1(\n PegOutQuote memory quote\n ) private pure returns (bytes memory) {\n return\n abi.encode(\n quote.lbcAddress,\n quote.lpRskAddress,\n quote.btcRefundAddress,\n quote.rskRefundAddress,\n quote.lpBtcAddress,\n quote.callFee,\n quote.penaltyFee,\n quote.nonce,\n quote.deposityAddress\n );\n }\n\n function encodePegOutPart2(\n PegOutQuote memory quote\n ) private pure returns (bytes memory) {\n return\n abi.encode(\n quote.value,\n quote.agreementTimestamp,\n quote.depositDateLimit,\n quote.depositConfirmations,\n quote.transferConfirmations,\n quote.transferTime,\n quote.expireDate,\n quote.expireBlock,\n quote.productFeeAmount,\n quote.gasFee\n );\n }\n\n function checkAgreedAmount(\n PeginQuote memory quote,\n uint transferredAmount\n ) external pure {\n uint agreedAmount = 0;\n agreedAmount = quote.value + quote.callFee + quote.productFeeAmount + quote.gasFee;\n\n\n uint delta = agreedAmount / 10000;\n // transferred amount should not be lower than (agreed amount - delta),\n // where delta is intended to tackle rounding problems\n require(\n transferredAmount >= agreedAmount - delta,\n \"LBC057\"\n );\n }\n\n}", - "sourcePath": "/Users/luischavez/iov/liquidity-bridge-contract/contracts/QuotesV2.sol", + "sourcePath": "/Users/guilhermesoares/Desktop/RskCodebase/liquidity-bridge-contract/contracts/QuotesV2.sol", "ast": { "absolutePath": "project:/contracts/QuotesV2.sol", "exportedSymbols": { @@ -16115,9 +16118,17 @@ "name": "solc", "version": "0.8.18+commit.87f61d96.Emscripten.clang" }, - "networks": {}, + "networks": { + "31": { + "events": {}, + "links": {}, + "address": "0xbdD04fED2A63D79b3342c2d8cf5478b96a2A1EB5", + "transactionHash": "0x3717da3a0ce5fe2cd2450c134fde307f3c18a86165ad12d3bd86e687faab7903" + } + }, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.176Z", + "updatedAt": "2024-05-22T08:30:50.007Z", + "networkType": "ethereum", "devdoc": { "kind": "dev", "methods": {}, diff --git a/build/contracts/ReentrancyGuardUpgradeable.json b/build/contracts/ReentrancyGuardUpgradeable.json index 7bc33e7..041ea9d 100644 --- a/build/contracts/ReentrancyGuardUpgradeable.json +++ b/build/contracts/ReentrancyGuardUpgradeable.json @@ -956,7 +956,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.099Z", + "updatedAt": "2024-05-22T08:24:03.606Z", "devdoc": { "details": "Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].", "events": { diff --git a/build/contracts/SignatureValidator.json b/build/contracts/SignatureValidator.json index f486a13..641c574 100644 --- a/build/contracts/SignatureValidator.json +++ b/build/contracts/SignatureValidator.json @@ -28,7 +28,8 @@ } ], "stateMutability": "pure", - "type": "function" + "type": "function", + "constant": true } ], "metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"quoteHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"verify(address,bytes32,bytes)\":{\"details\":\"Verfies signature against address\",\"params\":{\"addr\":\"The signing address\",\"quoteHash\":\"The hash of the signed data\",\"signature\":\"The signature containing v, r and s\"},\"returns\":{\"_0\":\"True if the signature is valid, false otherwise.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/SignatureValidator.sol\":\"SignatureValidator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"project:/contracts/SignatureValidator.sol\":{\"keccak256\":\"0x9d72920dd5ff2891c8dd3b3a814c1b108e82fcc6dfd849c96842e88c01d25b2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8df1167e9def35ced4a620e3fa1e6d148bc7c1fb995378bf12dabef250b3be65\",\"dweb:/ipfs/QmZJJchWvzUeMb68VPHFGnMXBx7aMhK5GqJy8ECDx2rf58\"]}},\"version\":1}", @@ -2105,7 +2106,7 @@ "sourceMap": "58:913:29:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;58:913:29;;;;;;;;;;;;;;;;;", "deployedSourceMap": "58:913:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;373:596;;;;;;:::i;:::-;;:::i;:::-;;;1487:14:32;;1480:22;1462:41;;1450:2;1435:18;373:596:29;;;;;;;;593:4;578:20;;;572:27;638:4;623:20;;;617:27;691:4;676:20;;670:27;770:56;;;;;;;;;;-1:-1:-1;;;770:56:29;;;;869:35;;467:4;;617:27;;662:36;;;;467:4;;869:35;;770:56;;894:9;;869:35;;:::i;:::-;;;;-1:-1:-1;;869:35:29;;;;;;;;;859:46;;869:35;859:46;;;;922:32;;;;;;;;;2202:25:32;;;2275:4;2263:17;;2243:18;;;2236:45;;;;2297:18;;;2290:34;;;2340:18;;;2333:34;;;859:46:29;-1:-1:-1;;;;;;922:40:29;;;:32;;2174:19:32;;922:32:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;922:40:29;;915:47;;;;;;;373:596;;;;;:::o;14:127:32:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1163;232:6;240;248;301:2;289:9;280:7;276:23;272:32;269:52;;;317:1;314;307:12;269:52;343:23;;-1:-1:-1;;;;;395:31:32;;385:42;;375:70;;441:1;438;431:12;375:70;464:5;-1:-1:-1;516:2:32;501:18;;488:32;;-1:-1:-1;571:2:32;556:18;;543:32;-1:-1:-1;;;;;624:14:32;;;621:34;;;651:1;648;641:12;621:34;689:6;678:9;674:22;664:32;;734:7;727:4;723:2;719:13;715:27;705:55;;756:1;753;746:12;705:55;792:2;779:16;814:2;810;807:10;804:36;;;820:18;;:::i;:::-;895:2;889:9;863:2;949:13;;-1:-1:-1;;945:22:32;;;969:2;941:31;937:40;925:53;;;993:18;;;1013:22;;;990:46;987:72;;;1039:18;;:::i;:::-;1079:10;1075:2;1068:22;1114:2;1106:6;1099:18;1154:7;1149:2;1144;1140;1136:11;1132:20;1129:33;1126:53;;;1175:1;1172;1165:12;1126:53;1231:2;1226;1222;1218:11;1213:2;1205:6;1201:15;1188:46;1276:1;1271:2;1266;1258:6;1254:15;1250:24;1243:35;1297:6;1287:16;;;;;;;146:1163;;;;;:::o;1514:456::-;1671:3;1709:6;1703:13;1734:1;1744:129;1758:6;1755:1;1752:13;1744:129;;;1856:4;1840:14;;;1836:25;;1830:32;1817:11;;;1810:53;1773:12;1744:129;;;-1:-1:-1;1892:16:32;;;;1917:18;;;-1:-1:-1;1959:4:32;1951:13;;1514:456;-1:-1:-1;1514:456:32:o", "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.18;\n\nlibrary SignatureValidator {\n /**\n @dev Verfies signature against address\n @param addr The signing address\n @param quoteHash The hash of the signed data\n @param signature The signature containing v, r and s\n @return True if the signature is valid, false otherwise.\n */\n function verify(address addr, bytes32 quoteHash, bytes memory signature) public pure returns (bool) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n \n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n // TODO use EIP712 compatible format instead\n bytes memory prefix = \"\\x19Ethereum Signed Message:\\n32\";\n bytes32 prefixedHash = keccak256(abi.encodePacked(prefix, quoteHash));\n return ecrecover(prefixedHash, v, r, s) == addr;\n }\n}\n", - "sourcePath": "/Users/luischavez/iov/liquidity-bridge-contract/contracts/SignatureValidator.sol", + "sourcePath": "/Users/guilhermesoares/Desktop/RskCodebase/liquidity-bridge-contract/contracts/SignatureValidator.sol", "ast": { "absolutePath": "project:/contracts/SignatureValidator.sol", "exportedSymbols": { @@ -2968,7 +2969,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:09.302Z", + "updatedAt": "2024-05-22T08:30:50.003Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/SignatureValidatorMock.json b/build/contracts/SignatureValidatorMock.json index 2d78f93..ca1ed70 100644 --- a/build/contracts/SignatureValidatorMock.json +++ b/build/contracts/SignatureValidatorMock.json @@ -1508,7 +1508,7 @@ "sourceMap": "58:427:30:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;58:427:30;;;;;;;;;;;;;;;;;", "deployedSourceMap": "58:427:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;95:388;;;;;;:::i;:::-;472:4;95:388;;;;;;;;;1487:14:32;;1480:22;1462:41;;1450:2;1435:18;95:388:30;;;;;;;14:127:32;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1163;232:6;240;248;301:2;289:9;280:7;276:23;272:32;269:52;;;317:1;314;307:12;269:52;343:23;;-1:-1:-1;;;;;395:31:32;;385:42;;375:70;;441:1;438;431:12;375:70;464:5;-1:-1:-1;516:2:32;501:18;;488:32;;-1:-1:-1;571:2:32;556:18;;543:32;-1:-1:-1;;;;;624:14:32;;;621:34;;;651:1;648;641:12;621:34;689:6;678:9;674:22;664:32;;734:7;727:4;723:2;719:13;715:27;705:55;;756:1;753;746:12;705:55;792:2;779:16;814:2;810;807:10;804:36;;;820:18;;:::i;:::-;895:2;889:9;863:2;949:13;;-1:-1:-1;;945:22:32;;;969:2;941:31;937:40;925:53;;;993:18;;;1013:22;;;990:46;987:72;;;1039:18;;:::i;:::-;1079:10;1075:2;1068:22;1114:2;1106:6;1099:18;1154:7;1149:2;1144;1140;1136:11;1132:20;1129:33;1126:53;;;1175:1;1172;1165:12;1126:53;1231:2;1226;1222;1218:11;1213:2;1205:6;1201:15;1188:46;1276:1;1271:2;1266;1258:6;1254:15;1250:24;1243:35;1297:6;1287:16;;;;;;;146:1163;;;;;:::o", "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.18;\n\nlibrary SignatureValidatorMock {\n function verify(address , bytes32 , bytes memory) public pure returns (bool) {\n // This is mocked due to an issue with truffle evm that makes the\n // ecrecover function to return address 0x000...0 as the signer\n // when executing against RSK the issue doesn't happen, so the actual implementation\n // uses the class and not this mock\n return true;\n }\n}\n", - "sourcePath": "/Users/luischavez/iov/liquidity-bridge-contract/contracts/SignatureValidatorMock.sol", + "sourcePath": "/Users/guilhermesoares/Desktop/RskCodebase/liquidity-bridge-contract/contracts/SignatureValidatorMock.sol", "ast": { "absolutePath": "project:/contracts/SignatureValidatorMock.sol", "exportedSymbols": { @@ -1727,7 +1727,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:09.308Z", + "updatedAt": "2024-05-22T08:30:02.506Z", "networkType": "ethereum", "devdoc": { "kind": "dev", diff --git a/build/contracts/StorageSlot.json b/build/contracts/StorageSlot.json index 7404bb9..d05cf90 100644 --- a/build/contracts/StorageSlot.json +++ b/build/contracts/StorageSlot.json @@ -1513,7 +1513,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.116Z", + "updatedAt": "2024-05-22T08:24:03.622Z", "devdoc": { "details": "Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\"); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` _Available since v4.1 for `address`, `bool`, `bytes32`, `uint256`._ _Available since v4.9 for `string`, `bytes`._", "kind": "dev", diff --git a/build/contracts/TransparentUpgradeableProxy.json b/build/contracts/TransparentUpgradeableProxy.json index e5ad50a..85f89d7 100644 --- a/build/contracts/TransparentUpgradeableProxy.json +++ b/build/contracts/TransparentUpgradeableProxy.json @@ -10601,7 +10601,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.111Z", + "updatedAt": "2024-05-22T08:24:03.617Z", "devdoc": { "details": "This contract implements a proxy that is upgradeable by an admin. 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 one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, 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. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy. NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not inherit from that interface, and instead the admin functions are 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. 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 admin operations inaccessible, which could prevent upgradeability. Transparency may also be compromised.", "events": { diff --git a/build/contracts/WalletMock.json b/build/contracts/WalletMock.json index 0cd4104..ff725fa 100644 --- a/build/contracts/WalletMock.json +++ b/build/contracts/WalletMock.json @@ -473,7 +473,7 @@ "sourceMap": "58:220:31:-:0;;;;;;;;;;;;;;;;;;;", "deployedSourceMap": "58:220:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;245:11;;;;244:12;236:33;;;;-1:-1:-1;;;236:33:31;;216:2:32;236:33:31;;;198:21:32;255:1;235:18;;;228:29;-1:-1:-1;;;273:18:32;;;266:38;321:18;;236:33:31;;;;;;;;58:220;;;;;116:77;;;;;;;;;;-1:-1:-1;116:77:31;;;;;:::i;:::-;169:11;:17;;-1:-1:-1;;169:17:31;;;;;;;;;;116:77;350:273:32;406:6;459:2;447:9;438:7;434:23;430:32;427:52;;;475:1;472;465:12;427:52;514:9;501:23;567:5;560:13;553:21;546:5;543:32;533:60;;589:1;586;579:12;533:60;612:5;350:273;-1:-1:-1;;;350:273:32:o", "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.18;\n\ncontract WalletMock {\n\n bool private rejectFunds;\n\n function setRejectFunds(bool val) external {\n rejectFunds = val;\n }\n\n receive() external payable {\n require(!rejectFunds, \"rejected\");\n }\n}\n", - "sourcePath": "/Users/luischavez/iov/liquidity-bridge-contract/contracts/WalletMock.sol", + "sourcePath": "/Users/guilhermesoares/Desktop/RskCodebase/liquidity-bridge-contract/contracts/WalletMock.sol", "ast": { "absolutePath": "project:/contracts/WalletMock.sol", "exportedSymbols": { @@ -782,7 +782,7 @@ }, "networks": {}, "schemaVersion": "3.4.13", - "updatedAt": "2024-05-22T07:27:05.180Z", + "updatedAt": "2024-05-22T08:24:03.702Z", "devdoc": { "kind": "dev", "methods": {}, diff --git a/config.json b/config.json index 1f3ac8e..ccfdebb 100644 --- a/config.json +++ b/config.json @@ -134,8 +134,8 @@ "deployed": true }, "QuotesV2": { - "address": "0xe3cdAe87f8e843D8607184F8dE404EBc9F5f9Cc4", - "deployed": false + "address": "0xbdD04fED2A63D79b3342c2d8cf5478b96a2A1EB5", + "deployed": true } } } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index b3e5f20..9781b58 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8836,6 +8836,7 @@ "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", "dev": true, + "hasInstallScript": true, "optional": true, "peer": true, "dependencies": { @@ -9221,6 +9222,7 @@ "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.7.tgz", "integrity": "sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q==", "dev": true, + "hasInstallScript": true, "optional": true, "peer": true, "dependencies": {