Contract 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf 1

Contract Overview

Balance:
0 FTM
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xf0b20e6ec17c0da186839e75ff7881c47239b440bdb07d847c166e9519c4506fRetry Payload89713022022-05-10 22:10:5347 days 10 hrs ago0xc13b65f7c53cd6db2ea205a4b574b4a0858720a6 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.049608864396
0xa484e273401e9c9bd99bfcffb564359c51b38f3ed1d0bf596890e3e4894daebdRetry Payload89707732022-05-10 21:27:4847 days 10 hrs ago0xc13b65f7c53cd6db2ea205a4b574b4a0858720a6 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.053039973168
0x767a7e05b6ef5754634bd25546b7f3e8df80e1c06e704d0e8a78c5d7f7b90631Retry Payload89412242022-05-09 14:22:5448 days 18 hrs ago0x992f3d2bea24c0b94fc78aba3f43870731dc6874 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.020249422284
0xa23031ae747b78a4a4c6d1fe248a9d0625a3ca280fd5473a4d512f113166a9d2Estimate Fees89144162022-05-06 0:47:5452 days 7 hrs ago0xf6fb1937e8b41d7255d8587bce2fbfd30ae77f29 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.01688688
0x0ea0880dfc45a3002777eceb99f9aa8b673a8f79f2026b13c00d40cd31043250Estimate Fees89144102022-05-06 0:46:0852 days 7 hrs ago0xf6fb1937e8b41d7255d8587bce2fbfd30ae77f29 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.01688688
0x41b2b275cd97923210c9c791c9d29dc8337a372e212c6da4b74d8a39d6dbd588Estimate Fees89143922022-05-06 0:35:2452 days 7 hrs ago0xf6fb1937e8b41d7255d8587bce2fbfd30ae77f29 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.0175974525
0x2884a548f96e206cda183e0300af2ea10acf1f8dd5a84b8cb7cdd59b5521564dRetry Payload88802012022-04-28 20:59:5459 days 11 hrs ago0xc2f96d554e7ea419de10ac408679dd075c30ebb8 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.075857626572
0x6a664027471e22e50e1c6578e70c1bb72fd22595eaa4cceec24e69a1ba434276Retry Payload88801792022-04-28 20:47:0559 days 11 hrs ago0xc2f96d554e7ea419de10ac408679dd075c30ebb8 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.079470551706
0x738698892caa5588db2e62af45a2abd75f71e739a740195cb8c3811c80df5004Retry Payload88695442022-04-26 21:40:4161 days 10 hrs ago0x732bc218ea380b93081c7dfeb362a13e28b7a8d6 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.052469321814
0xff0897611a388e7f80ca29c5171ce1a0244d6d1ad6eeb3cbb4bc41de941a947bRetry Payload87156472022-04-18 20:43:0769 days 11 hrs ago0xc13b65f7c53cd6db2ea205a4b574b4a0858720a6 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.050191316812
0xbfd2e5e9ecbc4723312dcb15ee5be7051a6decead46333757b31953a0f8cadd1Transfer Ownersh...85863082022-03-28 15:26:1490 days 17 hrs ago0xc13b65f7c53cd6db2ea205a4b574b4a0858720a6 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.005718806006
0xa5ed1368e460334ba73ed9bb291c76b0e9f87525ecaba00aaa43e6aabc59fc1cSet Receive Vers...85858202022-03-28 13:44:1190 days 18 hrs ago0x50246378bdada5ee28458f32f9cc3bc9c1a0ac37 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.006585705
0xb4ef12ca4dcd3fdf56e0cbf3c7d0a3816430e9a49e2ee7b75c382b7e2cc7ffe5Set Send Version85858182022-03-28 13:44:0190 days 18 hrs ago0x50246378bdada5ee28458f32f9cc3bc9c1a0ac37 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.014479965
0x2ec58f10a242765588b7609f26bd143702198fc860a0dd5802e4458403ff72bfRetry Payload85853442022-03-28 10:25:5790 days 22 hrs ago0x50246378bdada5ee28458f32f9cc3bc9c1a0ac37 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.0663865875
0x8c2a533804db97949bf22c74dae01afe54fdf5747d12757d815342dc92ce0917Receive Payload85853332022-03-28 10:23:3290 days 22 hrs ago0x50246378bdada5ee28458f32f9cc3bc9c1a0ac37 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.070987185
0x88742109e77413049410243ebe964cd1cd257fe1d703613abff59b692a79d01cReceive Payload85853262022-03-28 10:21:2690 days 22 hrs ago0x50246378bdada5ee28458f32f9cc3bc9c1a0ac37 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.0709638975
0x8c219c137d71d32883934ee99473709fe238e5840ae924965d4a86a3a6069264Set Default Rece...83613072022-03-11 17:04:20107 days 15 hrs ago0xc13b65f7c53cd6db2ea205a4b574b4a0858720a6 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.17190063
0xe7ae7c8b41057423359032dcadc2a5522f96525a56e3ff52106b5a77bde66246Set Default Send...83613042022-03-11 17:04:12107 days 15 hrs ago0xc13b65f7c53cd6db2ea205a4b574b4a0858720a6 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.1710082125
0xbace88830fc7077326290e8a18d63156bfdb0f9e452439b071ab8fc74097ac28New Version83613022022-03-11 17:04:10107 days 15 hrs ago0xc13b65f7c53cd6db2ea205a4b574b4a0858720a6 IN  0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0 FTM0.17121294
0x324f8a3ac9f21f3e07ecf9d5441f8293e238c7f9c9e8e47b99bae8c636cf4cb40x60a0604083608042022-03-11 16:39:26107 days 15 hrs ago0xc13b65f7c53cd6db2ea205a4b574b4a0858720a6 IN  Create: Endpoint0 FTM0.678909199131
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x86ecf2219350bd1e431e513b7b3aa5897aef7f92957d27f24f9c3cb0b4b1a38193335822022-06-25 5:09:362 days 3 hrs ago 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf 0x3373eb0b696c12d11d39dd1be413e6b4cc2cc23a3.5 FTM
0x86ecf2219350bd1e431e513b7b3aa5897aef7f92957d27f24f9c3cb0b4b1a38193335822022-06-25 5:09:362 days 3 hrs ago 0x872c2dd06233237e0d9c4179b8ab622890608c71 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf3.5 FTM
0x7c5295969bdf223b097fa2d6b9592d1c1cdd588ca3a584058fbe57bbd7aa6b3393331332022-06-25 1:32:362 days 6 hrs ago 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf 0x3373eb0b696c12d11d39dd1be413e6b4cc2cc23a5 FTM
0x7c5295969bdf223b097fa2d6b9592d1c1cdd588ca3a584058fbe57bbd7aa6b3393331332022-06-25 1:32:362 days 6 hrs ago 0x10c772373299247d2baa3177728d82ddefb5997d 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf5 FTM
0x6f7a9fe93b3b2c892dbec2e1a5585f53773244fd4a05a687fbc940c5b57ee59e93241852022-06-23 8:11:344 days 15 mins ago 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf 0x3373eb0b696c12d11d39dd1be413e6b4cc2cc23a0.03587280379872105 FTM
0x6f7a9fe93b3b2c892dbec2e1a5585f53773244fd4a05a687fbc940c5b57ee59e93241852022-06-23 8:11:344 days 15 mins ago 0x5ca02c14660a446b6538f5e06e5f14dbd903c736 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0.03587280379872105 FTM
0x4b2bb40747b8e1b54845f094c510e3aec52d69e4f8d0844968231a8f575a581893223282022-06-23 2:40:164 days 5 hrs ago 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf 0x3373eb0b696c12d11d39dd1be413e6b4cc2cc23a28 FTM
0x4b2bb40747b8e1b54845f094c510e3aec52d69e4f8d0844968231a8f575a581893223282022-06-23 2:40:164 days 5 hrs ago 0xb97948ad8805174e0cb27caf0115e5ea5e02f3a7 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf28 FTM
0x6c5afde38e24e4f6dd82a2af8b5ba941c11ce90048ed8632834d035f5d4a0e2993208072022-06-22 19:50:584 days 12 hrs ago 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf 0x3373eb0b696c12d11d39dd1be413e6b4cc2cc23a1 wei
0x6c5afde38e24e4f6dd82a2af8b5ba941c11ce90048ed8632834d035f5d4a0e2993208072022-06-22 19:50:584 days 12 hrs ago 0x32c2df68a7e15d447848e9f313fcd6720ec56cad 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf1 wei
0x0914c4ba656ffecde148dcf1fb68fa22ad7fe86e39f7bd8936f4bb3994605bd793208062022-06-22 19:50:554 days 12 hrs ago 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf 0x3373eb0b696c12d11d39dd1be413e6b4cc2cc23a0.837718365567312416 FTM
0x0914c4ba656ffecde148dcf1fb68fa22ad7fe86e39f7bd8936f4bb3994605bd793208062022-06-22 19:50:554 days 12 hrs ago 0x32c2df68a7e15d447848e9f313fcd6720ec56cad 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0.837718365567312416 FTM
0x93b01466c27f3d4cd152638b81926a9a3cb7719fdf83867716da803fa1ae93f593208052022-06-22 19:50:494 days 12 hrs ago 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf 0x3373eb0b696c12d11d39dd1be413e6b4cc2cc23a0.003892984090644449 FTM
0x93b01466c27f3d4cd152638b81926a9a3cb7719fdf83867716da803fa1ae93f593208052022-06-22 19:50:494 days 12 hrs ago 0x32c2df68a7e15d447848e9f313fcd6720ec56cad 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0.003892984090644449 FTM
0x2620efb0b94e34530acaae56f101630bb9c13a581526751d33fe91b17f87ba5a93208042022-06-22 19:50:424 days 12 hrs ago 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf 0x3373eb0b696c12d11d39dd1be413e6b4cc2cc23a1.385811856618818751 FTM
0x2620efb0b94e34530acaae56f101630bb9c13a581526751d33fe91b17f87ba5a93208042022-06-22 19:50:424 days 12 hrs ago 0x32c2df68a7e15d447848e9f313fcd6720ec56cad 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf1.385811856618818751 FTM
0xb6c5686ccf33f47494880b6cd4b4a917398bec7d21f68aa511dc2551ac372d5393208022022-06-22 19:50:354 days 12 hrs ago 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf 0x3373eb0b696c12d11d39dd1be413e6b4cc2cc23a7.047653954616082501 FTM
0xb6c5686ccf33f47494880b6cd4b4a917398bec7d21f68aa511dc2551ac372d5393208022022-06-22 19:50:354 days 12 hrs ago 0x32c2df68a7e15d447848e9f313fcd6720ec56cad 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf7.047653954616082501 FTM
0xfbfd603d9c299722cb2e0fe8dcaefebffabc40d8724c381e716c32e3107e4f5c93208002022-06-22 19:50:284 days 12 hrs ago 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf 0x3373eb0b696c12d11d39dd1be413e6b4cc2cc23a3.62591783454076099 FTM
0xfbfd603d9c299722cb2e0fe8dcaefebffabc40d8724c381e716c32e3107e4f5c93208002022-06-22 19:50:284 days 12 hrs ago 0x32c2df68a7e15d447848e9f313fcd6720ec56cad 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf3.62591783454076099 FTM
0x980bcc55b1e8debfe11dd22be94caec257562a617cfb0b7f14a6d80f1113af8d93207832022-06-22 19:50:034 days 12 hrs ago 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf 0x3373eb0b696c12d11d39dd1be413e6b4cc2cc23a0.000900063900000001 FTM
0x980bcc55b1e8debfe11dd22be94caec257562a617cfb0b7f14a6d80f1113af8d93207832022-06-22 19:50:034 days 12 hrs ago 0x32c2df68a7e15d447848e9f313fcd6720ec56cad 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf0.000900063900000001 FTM
0xeaada64d7d7984512c9cbd00576b08cb53877bbaab58089b920b82ea0f948aae93182982022-06-22 12:21:294 days 20 hrs ago 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf 0x3373eb0b696c12d11d39dd1be413e6b4cc2cc23a40 FTM
0xeaada64d7d7984512c9cbd00576b08cb53877bbaab58089b920b82ea0f948aae93182982022-06-22 12:21:294 days 20 hrs ago 0xb97948ad8805174e0cb27caf0115e5ea5e02f3a7 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf40 FTM
0x0da92472b50c72689f2d47bde30348dbad20e530d58f45fc05c36b991c011f8793178582022-06-22 10:19:094 days 22 hrs ago 0x7dcad72640f835b0fa36efd3d6d3ec902c7e5acf 0x3373eb0b696c12d11d39dd1be413e6b4cc2cc23a15 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Endpoint

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 30000 runs

Other Settings:
default evmVersion, BSL 1.1 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2022-04-23
*/

// Sources flattened with hardhat v2.8.4 https://hardhat.org

// File contracts/interfaces/ILayerZeroReceiver.sol


pragma solidity >=0.5.0;

interface ILayerZeroReceiver {
    // @notice LayerZero endpoint will invoke this function to deliver the message on the destination
    // @param _srcChainId - the source endpoint identifier
    // @param _srcAddress - the source sending contract address from the source chain
    // @param _nonce - the ordered message nonce
    // @param _payload - the signed payload is the UA bytes has encoded to be sent
    function lzReceive(uint16 _srcChainId, bytes calldata _srcAddress, uint64 _nonce, bytes calldata _payload) external;
}


// File contracts/interfaces/ILayerZeroUserApplicationConfig.sol


pragma solidity >=0.5.0;

interface ILayerZeroUserApplicationConfig {
    // @notice set the configuration of the LayerZero messaging library of the specified version
    // @param _version - messaging library version
    // @param _chainId - the chainId for the pending config change
    // @param _configType - type of configuration. every messaging library has its own convention.
    // @param _config - configuration in the bytes. can encode arbitrary content.
    function setConfig(uint16 _version, uint16 _chainId, uint _configType, bytes calldata _config) external;

    // @notice set the send() LayerZero messaging library version to _version
    // @param _version - new messaging library version
    function setSendVersion(uint16 _version) external;

    // @notice set the lzReceive() LayerZero messaging library version to _version
    // @param _version - new messaging library version
    function setReceiveVersion(uint16 _version) external;

    // @notice Only when the UA needs to resume the message flow in blocking mode and clear the stored payload
    // @param _srcChainId - the chainId of the source chain
    // @param _srcAddress - the contract address of the source contract at the source chain
    function forceResumeReceive(uint16 _srcChainId, bytes calldata _srcAddress) external;
}


// File contracts/interfaces/ILayerZeroEndpoint.sol


pragma solidity >=0.5.0;

interface ILayerZeroEndpoint is ILayerZeroUserApplicationConfig {
    // @notice send a LayerZero message to the specified address at a LayerZero endpoint.
    // @param _dstChainId - the destination chain identifier
    // @param _destination - the address on destination chain (in bytes). address length/format may vary by chains
    // @param _payload - a custom bytes payload to send to the destination contract
    // @param _refundAddress - if the source transaction is cheaper than the amount of value passed, refund the additional amount to this address
    // @param _zroPaymentAddress - the address of the ZRO token holder who would pay for the transaction
    // @param _adapterParams - parameters for custom functionality. e.g. receive airdropped native gas from the relayer on destination
    function send(uint16 _dstChainId, bytes calldata _destination, bytes calldata _payload, address payable _refundAddress, address _zroPaymentAddress, bytes calldata _adapterParams) external payable;

    // @notice used by the messaging library to publish verified payload
    // @param _srcChainId - the source chain identifier
    // @param _srcAddress - the source contract (as bytes) at the source chain
    // @param _dstAddress - the address on destination chain
    // @param _nonce - the unbound message ordering nonce
    // @param _gasLimit - the gas limit for external contract execution
    // @param _payload - verified payload to send to the destination contract
    function receivePayload(uint16 _srcChainId, bytes calldata _srcAddress, address _dstAddress, uint64 _nonce, uint _gasLimit, bytes calldata _payload) external;

    // @notice get the inboundNonce of a receiver from a source chain which could be EVM or non-EVM chain
    // @param _srcChainId - the source chain identifier
    // @param _srcAddress - the source chain contract address
    function getInboundNonce(uint16 _srcChainId, bytes calldata _srcAddress) external view returns (uint64);

    // @notice get the outboundNonce from this source chain which, consequently, is always an EVM
    // @param _srcAddress - the source chain contract address
    function getOutboundNonce(uint16 _dstChainId, address _srcAddress) external view returns (uint64);

    // @notice gets a quote in source native gas, for the amount that send() requires to pay for message delivery
    // @param _dstChainId - the destination chain identifier
    // @param _userApplication - the user app address on this EVM chain
    // @param _payload - the custom message to send over LayerZero
    // @param _payInZRO - if false, user app pays the protocol fee in native token
    // @param _adapterParam - parameters for the adapter service, e.g. send some dust native token to dstChain
    function estimateFees(uint16 _dstChainId, address _userApplication, bytes calldata _payload, bool _payInZRO, bytes calldata _adapterParam) external view returns (uint nativeFee, uint zroFee);

    // @notice get this Endpoint's immutable source identifier
    function getChainId() external view returns (uint16);

    // @notice the interface to retry failed message on this Endpoint destination
    // @param _srcChainId - the source chain identifier
    // @param _srcAddress - the source chain contract address
    // @param _payload - the payload to be retried
    function retryPayload(uint16 _srcChainId, bytes calldata _srcAddress, bytes calldata _payload) external;

    // @notice query if any STORED payload (message blocking) at the endpoint.
    // @param _srcChainId - the source chain identifier
    // @param _srcAddress - the source chain contract address
    function hasStoredPayload(uint16 _srcChainId, bytes calldata _srcAddress) external view returns (bool);

    // @notice query if the _libraryAddress is valid for sending msgs.
    // @param _userApplication - the user app address on this EVM chain
    function getSendLibraryAddress(address _userApplication) external view returns (address);

    // @notice query if the _libraryAddress is valid for receiving msgs.
    // @param _userApplication - the user app address on this EVM chain
    function getReceiveLibraryAddress(address _userApplication) external view returns (address);

    // @notice query if the non-reentrancy guard for send() is on
    // @return true if the guard is on. false otherwise
    function isSendingPayload() external view returns (bool);

    // @notice query if the non-reentrancy guard for receive() is on
    // @return true if the guard is on. false otherwise
    function isReceivingPayload() external view returns (bool);

    // @notice get the configuration of the LayerZero messaging library of the specified version
    // @param _version - messaging library version
    // @param _chainId - the chainId for the pending config change
    // @param _userApplication - the contract address of the user application
    // @param _configType - type of configuration. every messaging library has its own convention.
    function getConfig(uint16 _version, uint16 _chainId, address _userApplication, uint _configType) external view returns (bytes memory);

    // @notice get the send() LayerZero messaging library version
    // @param _userApplication - the contract address of the user application
    function getSendVersion(address _userApplication) external view returns (uint16);

    // @notice get the lzReceive() LayerZero messaging library version
    // @param _userApplication - the contract address of the user application
    function getReceiveVersion(address _userApplication) external view returns (uint16);
}


// File contracts/interfaces/ILayerZeroMessagingLibrary.sol


pragma solidity >=0.7.0;

interface ILayerZeroMessagingLibrary {
    // send(), messages will be inflight.
    function send(address _userApplication, uint64 _lastNonce, uint16 _chainId, bytes calldata _destination, bytes calldata _payload, address payable refundAddress, address _zroPaymentAddress, bytes calldata _adapterParams) external payable;

    // estimate native fee at the send side
    function estimateFees(uint16 _chainId, address _userApplication, bytes calldata _payload, bool _payInZRO, bytes calldata _adapterParam) external view returns (uint nativeFee, uint zroFee);

    //---------------------------------------------------------------------------
    // setConfig / getConfig are User Application (UA) functions to specify Oracle, Relayer, blockConfirmations, libraryVersion
    function setConfig(uint16 _chainId, address _userApplication, uint _configType, bytes calldata _config) external;

    function getConfig(uint16 _chainId, address _userApplication, uint _configType) external view returns (bytes memory);
}


// File @openzeppelin/contracts/utils/[email protected]



pragma solidity >=0.6.0 <0.8.0;

/*
 * @dev 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 GSN 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.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


// File @openzeppelin/contracts/access/[email protected]



pragma solidity ^0.7.0;

/**
 * @dev 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.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


// File contracts/Endpoint.sol

// SPDX-License-Identifier: BUSL-1.1

pragma solidity 0.7.6;



contract Endpoint is Ownable, ILayerZeroEndpoint {
    uint16 public immutable chainId;

    // installed libraries and reserved versions
    uint16 public constant BLOCK_VERSION = 65535;
    uint16 public constant DEFAULT_VERSION = 0;
    uint16 public latestVersion;
    mapping(uint16 => ILayerZeroMessagingLibrary) public libraryLookup; // version -> ILayerZeroEndpointLibrary

    // default send/receive libraries
    uint16 public defaultSendVersion;
    uint16 public defaultReceiveVersion;
    ILayerZeroMessagingLibrary public defaultSendLibrary;
    address public defaultReceiveLibraryAddress;

    struct LibraryConfig {
        uint16 sendVersion;
        uint16 receiveVersion;
        address receiveLibraryAddress;
        ILayerZeroMessagingLibrary sendLibrary;
    }

    struct StoredPayload {
        uint64 payloadLength;
        address dstAddress;
        bytes32 payloadHash;
    }

    // user app config = [uaAddress]
    mapping(address => LibraryConfig) public uaConfigLookup;
    // inboundNonce = [srcChainId][srcAddress].
    mapping(uint16 => mapping(bytes => uint64)) public inboundNonce;
    // outboundNonce = [dstChainId][srcAddress].
    mapping(uint16 => mapping(address => uint64)) public outboundNonce;
    // storedPayload = [srcChainId][srcAddress]
    mapping(uint16 => mapping(bytes => StoredPayload)) public storedPayload;

    // library versioning events
    event NewLibraryVersionAdded(uint16 version);
    event DefaultSendVersionSet(uint16 version);
    event DefaultReceiveVersionSet(uint16 version);
    event UaSendVersionSet(address ua, uint16 version);
    event UaReceiveVersionSet(address ua, uint16 version);
    event UaForceResumeReceive(uint16 chainId, bytes srcAddress);
    // payload events
    event PayloadCleared(uint16 srcChainId, bytes srcAddress, uint64 nonce, address dstAddress);
    event PayloadStored(uint16 srcChainId, bytes srcAddress, address dstAddress, uint64 nonce, bytes payload, bytes reason);

    constructor(uint16 _chainId) {
        chainId = _chainId;
    }

    //---------------------------------------------------------------------------
    // send and receive nonreentrant lock
    uint8 internal constant _NOT_ENTERED = 1;
    uint8 internal constant _ENTERED = 2;
    uint8 internal _send_entered_state = 1;
    uint8 internal _receive_entered_state = 1;

    modifier sendNonReentrant() {
        require(_send_entered_state == _NOT_ENTERED, "LayerZero: no send reentrancy");
        _send_entered_state = _ENTERED;
        _;
        _send_entered_state = _NOT_ENTERED;
    }
    modifier receiveNonReentrant() {
        require(_receive_entered_state == _NOT_ENTERED, "LayerZero: no receive reentrancy");
        _receive_entered_state = _ENTERED;
        _;
        _receive_entered_state = _NOT_ENTERED;
    }

    // BLOCK_VERSION is also a valid version
    modifier validVersion(uint16 _version) {
        require(_version <= latestVersion || _version == BLOCK_VERSION, "LayerZero: invalid messaging library version");
        _;
    }

    //---------------------------------------------------------------------------
    // User Application Calls - Endpoint Interface

    function send(uint16 _dstChainId, bytes calldata _destination, bytes calldata _payload, address payable _refundAddress, address _zroPaymentAddress, bytes calldata _adapterParams) external payable override sendNonReentrant {
        LibraryConfig storage uaConfig = uaConfigLookup[msg.sender];
        uint64 nonce = ++outboundNonce[_dstChainId][msg.sender];
        _getSendLibrary(uaConfig).send{value: msg.value}(msg.sender, nonce, _dstChainId, _destination, _payload, _refundAddress, _zroPaymentAddress, _adapterParams);
    }

    //---------------------------------------------------------------------------
    // authenticated Library (msg.sender) Calls to pass through Endpoint to UA (dstAddress)
    function receivePayload(uint16 _srcChainId, bytes calldata _srcAddress, address _dstAddress, uint64 _nonce, uint _gasLimit, bytes calldata _payload) external override receiveNonReentrant {
        // assert and increment the nonce. no message shuffling
        require(_nonce == ++inboundNonce[_srcChainId][_srcAddress], "LayerZero: wrong nonce");

        LibraryConfig storage uaConfig = uaConfigLookup[_dstAddress];

        // authentication to prevent cross-version message validation
        // protects against a malicious library from passing arbitrary data
        if (uaConfig.receiveVersion == DEFAULT_VERSION) {
            require(defaultReceiveLibraryAddress == msg.sender, "LayerZero: invalid default library");
        } else {
            require(uaConfig.receiveLibraryAddress == msg.sender, "LayerZero: invalid library");
        }

        // block if any message blocking
        StoredPayload storage sp = storedPayload[_srcChainId][_srcAddress];
        require(sp.payloadHash == bytes32(0), "LayerZero: in message blocking");

        try ILayerZeroReceiver(_dstAddress).lzReceive{gas: _gasLimit}(_srcChainId, _srcAddress, _nonce, _payload) {
            // success, do nothing, end of the message delivery
        } catch (bytes memory reason) {
            // revert nonce if any uncaught errors/exceptions if the ua chooses the blocking mode
            storedPayload[_srcChainId][_srcAddress] = StoredPayload(uint64(_payload.length), _dstAddress, keccak256(_payload));
            emit PayloadStored(_srcChainId, _srcAddress, _dstAddress, _nonce, _payload, reason);
        }
    }

    function retryPayload(uint16 _srcChainId, bytes calldata _srcAddress, bytes calldata _payload) external override receiveNonReentrant {
        StoredPayload storage sp = storedPayload[_srcChainId][_srcAddress];
        require(sp.payloadHash != bytes32(0), "LayerZero: no stored payload");
        require(_payload.length == sp.payloadLength && keccak256(_payload) == sp.payloadHash, "LayerZero: invalid payload");

        address dstAddress = sp.dstAddress;
        // empty the storedPayload
        sp.payloadLength = 0;
        sp.dstAddress = address(0);
        sp.payloadHash = bytes32(0);

        uint64 nonce = inboundNonce[_srcChainId][_srcAddress];

        ILayerZeroReceiver(dstAddress).lzReceive(_srcChainId, _srcAddress, nonce, _payload);
        emit PayloadCleared(_srcChainId, _srcAddress, nonce, dstAddress);
    }

    //---------------------------------------------------------------------------
    // Owner Calls, only new library version upgrade (3 steps)

    // note libraryLookup[0] = 0x0, no library implementation
    // LIBRARY UPGRADE step 1: set _newLayerZeroLibraryAddress be the new version
    function newVersion(address _newLayerZeroLibraryAddress) external onlyOwner {
        require(_newLayerZeroLibraryAddress != address(0x0), "LayerZero: new version cannot be zero address");
        require(latestVersion < 65535, "LayerZero: can not add new messaging library");
        latestVersion++;
        libraryLookup[latestVersion] = ILayerZeroMessagingLibrary(_newLayerZeroLibraryAddress);
        emit NewLibraryVersionAdded(latestVersion);
    }

    // LIBRARY UPGRADE step 2: stop sending messages from the old version
    function setDefaultSendVersion(uint16 _newDefaultSendVersion) external onlyOwner validVersion(_newDefaultSendVersion) {
        require(_newDefaultSendVersion != DEFAULT_VERSION, "LayerZero: default send version must > 0");
        defaultSendVersion = _newDefaultSendVersion;
        defaultSendLibrary = libraryLookup[defaultSendVersion];
        emit DefaultSendVersionSet(_newDefaultSendVersion);
    }

    // LIBRARY UPGRADE step 3: stop receiving messages from the old version
    function setDefaultReceiveVersion(uint16 _newDefaultReceiveVersion) external onlyOwner validVersion(_newDefaultReceiveVersion) {
        require(_newDefaultReceiveVersion != DEFAULT_VERSION, "LayerZero: default receive version must > 0");
        defaultReceiveVersion = _newDefaultReceiveVersion;
        defaultReceiveLibraryAddress = address(libraryLookup[defaultReceiveVersion]);
        emit DefaultReceiveVersionSet(_newDefaultReceiveVersion);
    }

    //---------------------------------------------------------------------------
    // User Application Calls - UA set/get Interface

    function setConfig(uint16 _version, uint16 _chainId, uint _configType, bytes calldata _config) external override validVersion(_version) {
        if (_version == DEFAULT_VERSION) {
            require(defaultSendVersion == defaultReceiveVersion, "LayerZero: can not set Config during DEFAULT migration");
            _version = defaultSendVersion;
        }
        require(_version != BLOCK_VERSION, "LayerZero: can not set config for BLOCK_VERSION");
        libraryLookup[_version].setConfig(_chainId, msg.sender, _configType, _config);
    }

    // Migration step 1: set the send version
    // Define what library the UA points too
    function setSendVersion(uint16 _newVersion) external override validVersion(_newVersion) {
        // write into config
        LibraryConfig storage uaConfig = uaConfigLookup[msg.sender];
        uaConfig.sendVersion = _newVersion;
        // the libraryLookup[BLOCK_VERSION || DEFAULT_VERSION] = 0x0
        uaConfig.sendLibrary = libraryLookup[_newVersion];
        emit UaSendVersionSet(msg.sender, _newVersion);
    }

    // Migration step 2: set the receive version
    // after all messages sent from the old version are received
    // the UA can now safely switch to the new receive version
    // it is the UA's responsibility make sure all messages from the old version are processed
    function setReceiveVersion(uint16 _newVersion) external override validVersion(_newVersion) {
        // write into config
        LibraryConfig storage uaConfig = uaConfigLookup[msg.sender];
        uaConfig.receiveVersion = _newVersion;
        // the libraryLookup[BLOCK_VERSION || DEFAULT_VERSION] = 0x0
        uaConfig.receiveLibraryAddress = address(libraryLookup[_newVersion]);
        emit UaReceiveVersionSet(msg.sender, _newVersion);
    }

    function forceResumeReceive(uint16 _srcChainId, bytes calldata _srcAddress) external override {
        StoredPayload storage sp = storedPayload[_srcChainId][_srcAddress];
        // revert if no messages are cached. safeguard malicious UA behaviour
        require(sp.payloadHash != bytes32(0), "LayerZero: no stored payload");
        require(sp.dstAddress == msg.sender, "LayerZero: invalid caller");

        // empty the storedPayload
        sp.payloadLength = 0;
        sp.dstAddress = address(0);
        sp.payloadHash = bytes32(0);

        // emit the event with the new nonce
        emit UaForceResumeReceive(_srcChainId, _srcAddress);
    }

    //---------------------------------------------------------------------------
    // view helper function

    function estimateFees(uint16 _dstChainId, address _userApplication, bytes calldata _payload, bool _payInZRO, bytes calldata _adapterParams) external view override returns (uint nativeFee, uint zroFee) {
        LibraryConfig storage uaConfig = uaConfigLookup[_userApplication];
        ILayerZeroMessagingLibrary lib = uaConfig.sendVersion == DEFAULT_VERSION ? defaultSendLibrary : uaConfig.sendLibrary;
        return lib.estimateFees(_dstChainId, _userApplication, _payload, _payInZRO, _adapterParams);
    }

    function _getSendLibrary(LibraryConfig storage uaConfig) internal view returns (ILayerZeroMessagingLibrary) {
        if (uaConfig.sendVersion == DEFAULT_VERSION) {
            // check if the in send-blocking upgrade
            require(defaultSendVersion != BLOCK_VERSION, "LayerZero: default in BLOCK_VERSION");
            return defaultSendLibrary;
        } else {
            // check if the in send-blocking upgrade
            require(uaConfig.sendVersion != BLOCK_VERSION, "LayerZero: in BLOCK_VERSION");
            return uaConfig.sendLibrary;
        }
    }

    function getSendLibraryAddress(address _userApplication) external view override returns (address sendLibraryAddress) {
        LibraryConfig storage uaConfig = uaConfigLookup[_userApplication];
        uint16 sendVersion = uaConfig.sendVersion;
        require(sendVersion != BLOCK_VERSION, "LayerZero: send version is BLOCK_VERSION");
        if (sendVersion == DEFAULT_VERSION) {
            require(defaultSendVersion != BLOCK_VERSION, "LayerZero: send version (default) is BLOCK_VERSION");
            sendLibraryAddress = address(defaultSendLibrary);
        } else {
            sendLibraryAddress = address(uaConfig.sendLibrary);
        }
    }

    function getReceiveLibraryAddress(address _userApplication) external view override returns (address receiveLibraryAddress) {
        LibraryConfig storage uaConfig = uaConfigLookup[_userApplication];
        uint16 receiveVersion = uaConfig.receiveVersion;
        require(receiveVersion != BLOCK_VERSION, "LayerZero: receive version is BLOCK_VERSION");
        if (receiveVersion == DEFAULT_VERSION) {
            require(defaultReceiveVersion != BLOCK_VERSION, "LayerZero: receive version (default) is BLOCK_VERSION");
            receiveLibraryAddress = defaultReceiveLibraryAddress;
        } else {
            receiveLibraryAddress = uaConfig.receiveLibraryAddress;
        }
    }

    function isSendingPayload() external view override returns (bool) {
        return _send_entered_state == _ENTERED;
    }

    function isReceivingPayload() external view override returns (bool) {
        return _receive_entered_state == _ENTERED;
    }

    function getInboundNonce(uint16 _srcChainId, bytes calldata _srcAddress) external view override returns (uint64) {
        return inboundNonce[_srcChainId][_srcAddress];
    }

    function getOutboundNonce(uint16 _dstChainId, address _srcAddress) external view override returns (uint64) {
        return outboundNonce[_dstChainId][_srcAddress];
    }

    function getChainId() external view override returns (uint16) {
        return chainId;
    }

    function getSendVersion(address _userApplication) external view override returns (uint16) {
        LibraryConfig storage uaConfig = uaConfigLookup[_userApplication];
        return uaConfig.sendVersion == DEFAULT_VERSION ? defaultSendVersion : uaConfig.sendVersion;
    }

    function getReceiveVersion(address _userApplication) external view override returns (uint16) {
        LibraryConfig storage uaConfig = uaConfigLookup[_userApplication];
        return uaConfig.receiveVersion == DEFAULT_VERSION ? defaultReceiveVersion : uaConfig.receiveVersion;
    }

    function getConfig(uint16 _version, uint16 _chainId, address _userApplication, uint _configType) external view override validVersion(_version) returns (bytes memory) {
        if (_version == DEFAULT_VERSION) {
            require(defaultSendVersion == defaultReceiveVersion, "LayerZero: no DEFAULT config while migration");
            _version = defaultSendVersion;
        }
        require(_version != BLOCK_VERSION, "LayerZero: can not get config for BLOCK_VERSION");
        return libraryLookup[_version].getConfig(_chainId, _userApplication, _configType);
    }

    function hasStoredPayload(uint16 _srcChainId, bytes calldata _srcAddress) external view override returns (bool) {
        StoredPayload storage sp = storedPayload[_srcChainId][_srcAddress];
        return sp.payloadHash != bytes32(0);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint16","name":"_chainId","type":"uint16"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"version","type":"uint16"}],"name":"DefaultReceiveVersionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"version","type":"uint16"}],"name":"DefaultSendVersionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"version","type":"uint16"}],"name":"NewLibraryVersionAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"srcChainId","type":"uint16"},{"indexed":false,"internalType":"bytes","name":"srcAddress","type":"bytes"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"},{"indexed":false,"internalType":"address","name":"dstAddress","type":"address"}],"name":"PayloadCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"srcChainId","type":"uint16"},{"indexed":false,"internalType":"bytes","name":"srcAddress","type":"bytes"},{"indexed":false,"internalType":"address","name":"dstAddress","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"payload","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"PayloadStored","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"chainId","type":"uint16"},{"indexed":false,"internalType":"bytes","name":"srcAddress","type":"bytes"}],"name":"UaForceResumeReceive","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ua","type":"address"},{"indexed":false,"internalType":"uint16","name":"version","type":"uint16"}],"name":"UaReceiveVersionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ua","type":"address"},{"indexed":false,"internalType":"uint16","name":"version","type":"uint16"}],"name":"UaSendVersionSet","type":"event"},{"inputs":[],"name":"BLOCK_VERSION","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_VERSION","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chainId","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultReceiveLibraryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultReceiveVersion","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultSendLibrary","outputs":[{"internalType":"contract ILayerZeroMessagingLibrary","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultSendVersion","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"address","name":"_userApplication","type":"address"},{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"bool","name":"_payInZRO","type":"bool"},{"internalType":"bytes","name":"_adapterParams","type":"bytes"}],"name":"estimateFees","outputs":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"zroFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"}],"name":"forceResumeReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getChainId","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_version","type":"uint16"},{"internalType":"uint16","name":"_chainId","type":"uint16"},{"internalType":"address","name":"_userApplication","type":"address"},{"internalType":"uint256","name":"_configType","type":"uint256"}],"name":"getConfig","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"}],"name":"getInboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"address","name":"_srcAddress","type":"address"}],"name":"getOutboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_userApplication","type":"address"}],"name":"getReceiveLibraryAddress","outputs":[{"internalType":"address","name":"receiveLibraryAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_userApplication","type":"address"}],"name":"getReceiveVersion","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_userApplication","type":"address"}],"name":"getSendLibraryAddress","outputs":[{"internalType":"address","name":"sendLibraryAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_userApplication","type":"address"}],"name":"getSendVersion","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"}],"name":"hasStoredPayload","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"inboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isReceivingPayload","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSendingPayload","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestVersion","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"libraryLookup","outputs":[{"internalType":"contract ILayerZeroMessagingLibrary","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newLayerZeroLibraryAddress","type":"address"}],"name":"newVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"address","name":"","type":"address"}],"name":"outboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"address","name":"_dstAddress","type":"address"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"uint256","name":"_gasLimit","type":"uint256"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"receivePayload","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"retryPayload","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"bytes","name":"_destination","type":"bytes"},{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"address payable","name":"_refundAddress","type":"address"},{"internalType":"address","name":"_zroPaymentAddress","type":"address"},{"internalType":"bytes","name":"_adapterParams","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_version","type":"uint16"},{"internalType":"uint16","name":"_chainId","type":"uint16"},{"internalType":"uint256","name":"_configType","type":"uint256"},{"internalType":"bytes","name":"_config","type":"bytes"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_newDefaultReceiveVersion","type":"uint16"}],"name":"setDefaultReceiveVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_newDefaultSendVersion","type":"uint16"}],"name":"setDefaultSendVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_newVersion","type":"uint16"}],"name":"setReceiveVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_newVersion","type":"uint16"}],"name":"setSendVersion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"storedPayload","outputs":[{"internalType":"uint64","name":"payloadLength","type":"uint64"},{"internalType":"address","name":"dstAddress","type":"address"},{"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"uaConfigLookup","outputs":[{"internalType":"uint16","name":"sendVersion","type":"uint16"},{"internalType":"uint16","name":"receiveVersion","type":"uint16"},{"internalType":"address","name":"receiveLibraryAddress","type":"address"},{"internalType":"contract ILayerZeroMessagingLibrary","name":"sendLibrary","type":"address"}],"stateMutability":"view","type":"function"}]

60a06040526008805461ff001960ff19909116600117166101001790553480156200002957600080fd5b5060405162003c9638038062003c96833981810160405260208110156200004f57600080fd5b505160006200005d620000bd565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060f01b6001600160f01b031916608052620000c1565b3390565b60805160f01c613bb2620000e4600039806117d75280611eb75250613bb26000f3fe6080604052600436106102855760003560e01c80639c729da111610153578063ca066b35116100cb578063f2fde38b1161007f578063f5ecbdbc11610064578063f5ecbdbc14610f17578063faee093f14610fe6578063fdc07c7014610ffb57610285565b8063f2fde38b14610e54578063f4abee4b14610e9457610285565b8063da1a7c9a116100b0578063da1a7c9a14610dea578063e97a448a14610e2a578063ebfea6e014610e3f57610285565b8063ca066b3514610d3d578063cbed8b9c14610d5257610285565b8063bd42a71311610122578063c2fa481311610107578063c2fa481314610abe578063c580310014610bca578063c7e3711714610d0f57610285565b8063bd42a71314610a7b578063c07f47d414610aa957610285565b80639c729da114610902578063a91606df14610942578063aaff5f1614610957578063b208649914610a3157610285565b806342d65a8d1161020157806376a386dc116101b55780638da5cb5b1161019a5780638da5cb5b1461081a5780639924d33b1461082f5780639a8a0592146108ed57610285565b806376a386dc146106b75780637a145748146107b357610285565b80635d9ef01a116101e65780635d9ef01a1461064d578063715018a61461066257806371ba2fd61461067757610285565b806342d65a8d146105875780634afb422b1461060f57610285565b806310ddb1371161025857806324ba3f2c1161023d57806324ba3f2c146104495780633408e4701461045e57806340a7bb101461047357610285565b806310ddb137146103db578063158c81ad1461040957610285565b806307e0db171461028a578063096568f6146102ba5780630b837bb5146103115780630eaf6ea61461033f575b600080fd5b34801561029657600080fd5b506102b8600480360360208110156102ad57600080fd5b503561ffff16611083565b005b3480156102c657600080fd5b506102fa600480360360208110156102dd57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166111c7565b6040805161ffff9092168252519081900360200190f35b34801561031d57600080fd5b506102b86004803603602081101561033457600080fd5b503561ffff16611213565b34801561034b57600080fd5b506103c76004803603604081101561036257600080fd5b61ffff823516919081019060408101602082013564010000000081111561038857600080fd5b82018360208201111561039a57600080fd5b803590602001918460018302840111640100000000831117156103bc57600080fd5b50909250905061141a565b604080519115158252519081900360200190f35b3480156103e757600080fd5b506102b8600480360360208110156103fe57600080fd5b503561ffff16611466565b34801561041557600080fd5b506102b86004803603602081101561042c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166115b3565b34801561045557600080fd5b506102fa6117d0565b34801561046a57600080fd5b506102fa6117d5565b34801561047f57600080fd5b5061056e600480360360a081101561049657600080fd5b61ffff8235169173ffffffffffffffffffffffffffffffffffffffff602082013516918101906060810160408201356401000000008111156104d757600080fd5b8201836020820111156104e957600080fd5b8035906020019184600183028401116401000000008311171561050b57600080fd5b91939092823515159260408101906020013564010000000081111561052f57600080fd5b82018360208201111561054157600080fd5b8035906020019184600183028401116401000000008311171561056357600080fd5b5090925090506117f9565b6040805192835260208301919091528051918290030190f35b34801561059357600080fd5b506102b8600480360360408110156105aa57600080fd5b61ffff82351691908101906040810160208201356401000000008111156105d057600080fd5b8201836020820111156105e257600080fd5b8035906020019184600183028401116401000000008311171561060457600080fd5b5090925090506119b1565b34801561061b57600080fd5b50610624611b7c565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561065957600080fd5b506102fa611ba0565b34801561066e57600080fd5b506102b8611baa565b34801561068357600080fd5b506106246004803603602081101561069a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ca7565b3480156106c357600080fd5b50610775600480360360408110156106da57600080fd5b61ffff823516919081019060408101602082013564010000000081111561070057600080fd5b82018360208201111561071257600080fd5b8035906020019184600183028401116401000000008311171561073457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611db8945050505050565b6040805167ffffffffffffffff909416845273ffffffffffffffffffffffffffffffffffffffff909216602084015282820152519081900360600190f35b3480156107bf57600080fd5b506107fd600480360360408110156107d657600080fd5b50803561ffff16906020013573ffffffffffffffffffffffffffffffffffffffff16611e1c565b6040805167ffffffffffffffff9092168252519081900360200190f35b34801561082657600080fd5b50610624611e61565b34801561083b57600080fd5b506107fd6004803603604081101561085257600080fd5b61ffff823516919081019060408101602082013564010000000081111561087857600080fd5b82018360208201111561088a57600080fd5b803590602001918460018302840111640100000000831117156108ac57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611e7d945050505050565b3480156108f957600080fd5b506102fa611eb5565b34801561090e57600080fd5b506106246004803603602081101561092557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ed9565b34801561094e57600080fd5b506102fa611fdd565b34801561096357600080fd5b506102b86004803603606081101561097a57600080fd5b61ffff82351691908101906040810160208201356401000000008111156109a057600080fd5b8201836020820111156109b257600080fd5b803590602001918460018302840111640100000000831117156109d457600080fd5b9193909290916020810190356401000000008111156109f257600080fd5b820183602082011115610a0457600080fd5b80359060200191846001830284011164010000000083111715610a2657600080fd5b509092509050611fe3565b348015610a3d57600080fd5b506107fd60048036036040811015610a5457600080fd5b50803561ffff16906020013573ffffffffffffffffffffffffffffffffffffffff1661242b565b348015610a8757600080fd5b506102b860048036036020811015610a9e57600080fd5b503561ffff16612452565b348015610ab557600080fd5b506102fa61265f565b348015610aca57600080fd5b506102b8600480360360c0811015610ae157600080fd5b61ffff8235169190810190604081016020820135640100000000811115610b0757600080fd5b820183602082011115610b1957600080fd5b80359060200191846001830284011164010000000083111715610b3b57600080fd5b9193909273ffffffffffffffffffffffffffffffffffffffff8335169267ffffffffffffffff602082013516926040820135929091608081019060600135640100000000811115610b8b57600080fd5b820183602082011115610b9d57600080fd5b80359060200191846001830284011164010000000083111715610bbf57600080fd5b509092509050612681565b6102b8600480360360c0811015610be057600080fd5b61ffff8235169190810190604081016020820135640100000000811115610c0657600080fd5b820183602082011115610c1857600080fd5b80359060200191846001830284011164010000000083111715610c3a57600080fd5b919390929091602081019035640100000000811115610c5857600080fd5b820183602082011115610c6a57600080fd5b80359060200191846001830284011164010000000083111715610c8c57600080fd5b9193909273ffffffffffffffffffffffffffffffffffffffff83358116936020810135909116929190606081019060400135640100000000811115610cd057600080fd5b820183602082011115610ce257600080fd5b80359060200191846001830284011164010000000083111715610d0457600080fd5b509092509050612d66565b348015610d1b57600080fd5b5061062460048036036020811015610d3257600080fd5b503561ffff16613035565b348015610d4957600080fd5b506103c761305d565b348015610d5e57600080fd5b506102b860048036036080811015610d7557600080fd5b61ffff823581169260208101359091169160408201359190810190608081016060820135640100000000811115610dab57600080fd5b820183602082011115610dbd57600080fd5b80359060200191846001830284011164010000000083111715610ddf57600080fd5b50909250905061306e565b348015610df657600080fd5b506102fa60048036036020811015610e0d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613271565b348015610e3657600080fd5b506103c76132cc565b348015610e4b57600080fd5b506106246132d8565b348015610e6057600080fd5b506102b860048036036020811015610e7757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166132f4565b348015610ea057600080fd5b50610ed460048036036020811015610eb757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613461565b6040805161ffff958616815293909416602084015273ffffffffffffffffffffffffffffffffffffffff9182168385015216606082015290519081900360800190f35b348015610f2357600080fd5b50610f7160048036036080811015610f3a57600080fd5b5061ffff813581169160208101359091169073ffffffffffffffffffffffffffffffffffffffff60408201351690606001356134ad565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610fab578181015183820152602001610f93565b50505050905090810190601f168015610fd85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610ff257600080fd5b506102fa613768565b34801561100757600080fd5b506107fd6004803603604081101561101e57600080fd5b61ffff823516919081019060408101602082013564010000000081111561104457600080fd5b82018360208201111561105657600080fd5b8035906020019184600183028401116401000000008311171561107857600080fd5b509092509050613778565b600054819061ffff7401000000000000000000000000000000000000000090910481169082161115806110b9575061ffff818116145b6110f45760405162461bcd60e51b815260040180806020018281038252602c8152602001806138c0602c913960400191505060405180910390fd5b336000818152600460209081526040808320805461ffff88167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909116811782558085526001808552948390205494820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9690961695909517909455815194855291840192909252815190927ff2bc255571446a2f9b7cb2f0c75fd6a279bdb469f515d5a5c9910f713aeb32ca92908290030190a1505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600460205260408120805461ffff161561120257805461ffff1661120a565b60025461ffff165b9150505b919050565b61121b6137c5565b73ffffffffffffffffffffffffffffffffffffffff16611239611e61565b73ffffffffffffffffffffffffffffffffffffffff16146112a1576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600054819061ffff7401000000000000000000000000000000000000000090910481169082161115806112d7575061ffff818116145b6113125760405162461bcd60e51b815260040180806020018281038252602c8152602001806138c0602c913960400191505060405180910390fd5b61ffff82166113525760405162461bcd60e51b8152600401808060200182810382526028815260200180613afb6028913960400191505060405180910390fd5b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff848116918217808455908116600090815260016020908152604091829020547fffffffffffffffff0000000000000000000000000000000000000000ffffffff90931673ffffffffffffffffffffffffffffffffffffffff9093166401000000000292909217909355825191825291517feb685c087d38029bbde35299b748c6b80f099c7e5c3f9fe2dbb3ace1099e3b07929181900390910190a15050565b61ffff8316600090815260076020526040808220905182919085908590808383808284379190910194855250506040519283900360200190922060010154151593505050509392505050565b600054819061ffff74010000000000000000000000000000000000000000909104811690821611158061149c575061ffff818116145b6114d75760405162461bcd60e51b815260040180806020018281038252602c8152602001806138c0602c913960400191505060405180910390fd5b33600081815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000061ffff8916908102919091178083558186526001855294839020547fffffffffffffffff0000000000000000000000000000000000000000ffffffff90951673ffffffffffffffffffffffffffffffffffffffff90951664010000000002949094178155815194855291840192909252815190927f9c199418af68d1547d7b99c71ee6a9eb18b27990dfcfb38982f3e3fb8c7b6bef92908290030190a1505050565b6115bb6137c5565b73ffffffffffffffffffffffffffffffffffffffff166115d9611e61565b73ffffffffffffffffffffffffffffffffffffffff1614611641576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166116935760405162461bcd60e51b815260040180806020018281038252602d815260200180613a51602d913960400191505060405180910390fd5b60005461ffff740100000000000000000000000000000000000000009091048116106116f05760405162461bcd60e51b815260040180806020018281038252602c815260200180613a25602c913960400191505060405180910390fd5b60008054600161ffff7401000000000000000000000000000000000000000080840482168301821681027fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff909416939093178085558390048116845260209182526040808520805473ffffffffffffffffffffffffffffffffffffffff88167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790559354845193900416825291517f18c7402e58a1bec57f4eb75af242f65ababbbe09d9db383e0542f00635e5b8c5929181900390910190a150565b600081565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602052604081208054829190829061ffff161561184e57600182015473ffffffffffffffffffffffffffffffffffffffff16611870565b600254640100000000900473ffffffffffffffffffffffffffffffffffffffff165b90508073ffffffffffffffffffffffffffffffffffffffff166340a7bb108c8c8c8c8c8c8c6040518863ffffffff1660e01b8152600401808861ffff1681526020018773ffffffffffffffffffffffffffffffffffffffff168152602001806020018515158152602001806020018381038352888882818152602001925080828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910184810383528581526020019050858580828437600081840152601f19601f8201169050808301925050509950505050505050505050604080518083038186803b15801561196c57600080fd5b505afa158015611980573d6000803e3d6000fd5b505050506040513d604081101561199657600080fd5b508051602090910151909c909b509950505050505050505050565b61ffff83166000908152600760205260408082209051849084908083838082843791909101948552505060405192839003602001909220600181015490935015159150611a479050576040805162461bcd60e51b815260206004820152601c60248201527f4c617965725a65726f3a206e6f2073746f726564207061796c6f616400000000604482015290519081900360640190fd5b805468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611abe576040805162461bcd60e51b815260206004820152601960248201527f4c617965725a65726f3a20696e76616c69642063616c6c657200000000000000604482015290519081900360640190fd5b80547fffffffff00000000000000000000000000000000000000000000000000000000168155600060018201556040805161ffff86168152602081018281529181018490527f23d2684f396e92a6e2ff2d16f98e6fea00d50cb27a64b531bc0748f730211f98918691869186919060608201848480828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909201829003965090945050505050a150505050565b600254640100000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60025461ffff1681565b611bb26137c5565b73ffffffffffffffffffffffffffffffffffffffff16611bd0611e61565b73ffffffffffffffffffffffffffffffffffffffff1614611c38576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600460205260408120805461ffff62010000909104811690811415611d195760405162461bcd60e51b815260040180806020018281038252602b815260200180613b52602b913960400191505060405180910390fd5b61ffff8116611d8e5760025462010000900461ffff9081161415611d6e5760405162461bcd60e51b81526004018080602001828103825260358152602001806138ec6035913960400191505060405180910390fd5b60035473ffffffffffffffffffffffffffffffffffffffff169250611db1565b8154640100000000900473ffffffffffffffffffffffffffffffffffffffff1692505b5050919050565b600760209081526000928352604090922081518083018401805192815290840192909301919091209152805460019091015467ffffffffffffffff82169168010000000000000000900473ffffffffffffffffffffffffffffffffffffffff169083565b61ffff8216600090815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205467ffffffffffffffff1692915050565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6005602090815260009283526040909220815180830184018051928152908401929093019190912091525467ffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600460205260408120805461ffff90811690811415611f455760405162461bcd60e51b81526004018080602001828103825260288152602001806139fd6028913960400191505060405180910390fd5b61ffff8116611fbc5760025461ffff9081161415611f945760405162461bcd60e51b81526004018080602001828103825260328152602001806139956032913960400191505060405180910390fd5b600254640100000000900473ffffffffffffffffffffffffffffffffffffffff169250611db1565b506001015473ffffffffffffffffffffffffffffffffffffffff1692915050565b61ffff81565b600854610100900460ff16600114612042576040805162461bcd60e51b815260206004820181905260248201527f4c617965725a65726f3a206e6f2072656365697665207265656e7472616e6379604482015290519081900360640190fd5b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661020017905561ffff851660009081526007602052604080822090518690869080838380828437919091019485525050604051928390036020019092206001810154909350151591506121049050576040805162461bcd60e51b815260206004820152601c60248201527f4c617965725a65726f3a206e6f2073746f726564207061796c6f616400000000604482015290519081900360640190fd5b805467ffffffffffffffff168214801561213f5750806001015483836040518083838082843780830192505050925050506040518091039020145b612190576040805162461bcd60e51b815260206004820152601a60248201527f4c617965725a65726f3a20696e76616c6964207061796c6f6164000000000000604482015290519081900360640190fd5b80547fffffffff000000000000000000000000000000000000000000000000000000008116825560006001830181905561ffff881681526005602052604080822090516801000000000000000090930473ffffffffffffffffffffffffffffffffffffffff16928890889080838380828437919091019485525050604051928390036020018320547e1d356700000000000000000000000000000000000000000000000000000000845261ffff8c166004850190815267ffffffffffffffff90911660448501819052608060248601908152608486018c905290955073ffffffffffffffffffffffffffffffffffffffff871694621d356794508d93508c928c9288928d928d929091606481019060a401888880828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910184810383528581526020019050858580828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b15801561232357600080fd5b505af1158015612337573d6000803e3d6000fd5b505050507f612434f39581c8e7d99746c9c20c6eb0ce8c0eb99f007c5719d620841370957d8888888486604051808661ffff168152602001806020018467ffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281038252868682818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039850909650505050505050a15050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055505050505050565b600660209081526000928352604080842090915290825290205467ffffffffffffffff1681565b61245a6137c5565b73ffffffffffffffffffffffffffffffffffffffff16612478611e61565b73ffffffffffffffffffffffffffffffffffffffff16146124e0576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600054819061ffff740100000000000000000000000000000000000000009091048116908216111580612516575061ffff818116145b6125515760405162461bcd60e51b815260040180806020018281038252602c8152602001806138c0602c913960400191505060405180910390fd5b61ffff82166125915760405162461bcd60e51b815260040180806020018281038252602b815260200180613aad602b913960400191505060405180910390fd5b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000061ffff85811682810293909317938490559204909116600090815260016020908152604091829020546003805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055815192835290517f96874dbe70c8a59e7996847475489a70a1b5096ed92cdc858b63ebabd071f8199281900390910190a15050565b60005474010000000000000000000000000000000000000000900461ffff1681565b600854610100900460ff166001146126e0576040805162461bcd60e51b815260206004820181905260248201527f4c617965725a65726f3a206e6f2072656365697665207265656e7472616e6379604482015290519081900360640190fd5b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661020017905561ffff8816600090815260056020526040908190209051889088908083838082843791909101948552505060405192839003602001909220805467ffffffffffffffff80821660010181167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090921682179092559087161491506127d99050576040805162461bcd60e51b815260206004820152601660248201527f4c617965725a65726f3a2077726f6e67206e6f6e636500000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff85166000908152600460205260409020805462010000900461ffff166128695760035473ffffffffffffffffffffffffffffffffffffffff1633146128645760405162461bcd60e51b81526004018080602001828103825260228152602001806139216022913960400191505060405180910390fd5b6128dc565b8054640100000000900473ffffffffffffffffffffffffffffffffffffffff1633146128dc576040805162461bcd60e51b815260206004820152601a60248201527f4c617965725a65726f3a20696e76616c6964206c696272617279000000000000604482015290519081900360640190fd5b61ffff891660009081526007602052604080822090518a908a90808383808284379190910194855250506040519283900360200190922060018101549093501591506129719050576040805162461bcd60e51b815260206004820152601e60248201527f4c617965725a65726f3a20696e206d65737361676520626c6f636b696e670000604482015290519081900360640190fd5b8673ffffffffffffffffffffffffffffffffffffffff16621d3567868c8c8c8b8a8a6040518863ffffffff1660e01b8152600401808761ffff168152602001806020018567ffffffffffffffff168152602001806020018381038352888882818152602001925080828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910184810383528581526020019050858580828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600088803b158015612a5857600080fd5b5087f193505050508015612a6a575060015b612d2e573d808015612a98576040519150601f19603f3d011682016040523d82523d6000602084013e612a9d565b606091505b5060405180606001604052808686905067ffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff16815260200186866040518083838082843780830192505050925050506040518091039020815250600760008d61ffff1661ffff1681526020019081526020016000208b8b604051808383808284378083019250505092505050908152602001604051809103902060008201518160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060208201518160000160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600101559050507f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db8b8b8b8b8b8a8a88604051808961ffff168152602001806020018773ffffffffffffffffffffffffffffffffffffffff1681526020018667ffffffffffffffff168152602001806020018060200184810384528b8b82818152602001925080828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101858103845287815260200190508787808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690920186810384528751815287516020918201939189019250908190849084905b83811015612ce9578181015183820152602001612cd1565b50505050905090810190601f168015612d165780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a1505b5050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555050505050505050565b60085460ff16600114612dc0576040805162461bcd60e51b815260206004820152601d60248201527f4c617965725a65726f3a206e6f2073656e64207265656e7472616e6379000000604482015290519081900360640190fd5b6008805460027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911617905533600081815260046020908152604080832061ffff8e1684526006835281842094845293909152902080547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000811667ffffffffffffffff91821660010191821617909155612e5a826137c9565b73ffffffffffffffffffffffffffffffffffffffff16634d3a0f7c3433848f8f8f8f8f8f8f8f8f6040518d63ffffffff1660e01b8152600401808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b67ffffffffffffffff1681526020018a61ffff16815260200180602001806020018773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018060200184810384528c8c82818152602001925080828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910185810384528a815260200190508a8a80828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910185810383528681526020019050868680828437600081840152601f19601f8201169050808301925050509e5050505050505050505050505050506000604051808303818588803b158015612fe457600080fd5b505af1158015612ff8573d6000803e3d6000fd5b5050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555050505050505050505050505050565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b600854610100900460ff1660021490565b600054859061ffff7401000000000000000000000000000000000000000090910481169082161115806130a4575061ffff818116145b6130df5760405162461bcd60e51b815260040180806020018281038252602c8152602001806138c0602c913960400191505060405180910390fd5b61ffff861661313f5760025461ffff8082166201000090920416146131355760405162461bcd60e51b81526004018080602001828103825260368152602001806139c76036913960400191505060405180910390fd5b60025461ffff1695505b61ffff86811614156131825760405162461bcd60e51b815260040180806020018281038252602f815260200180613b23602f913960400191505060405180910390fd5b61ffff808716600090815260016020526040908190205490517ff8e1734c000000000000000000000000000000000000000000000000000000008152918716600483019081523360248401819052604484018890526080606485019081526084850187905273ffffffffffffffffffffffffffffffffffffffff9093169363f8e1734c938a938a928a928a929160a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561325157600080fd5b505af1158015613265573d6000803e3d6000fd5b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600460205260408120805462010000900461ffff16156132b857805462010000900461ffff1661120a565b505060025462010000900461ffff16919050565b60085460ff1660021490565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6132fc6137c5565b73ffffffffffffffffffffffffffffffffffffffff1661331a611e61565b73ffffffffffffffffffffffffffffffffffffffff1614613382576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166133d45760405162461bcd60e51b81526004018080602001828103825260268152602001806139436026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6004602052600090815260409020805460019091015461ffff808316926201000081049091169173ffffffffffffffffffffffffffffffffffffffff6401000000009092048216911684565b600054606090859061ffff7401000000000000000000000000000000000000000090910481169082161115806134e6575061ffff818116145b6135215760405162461bcd60e51b815260040180806020018281038252602c8152602001806138c0602c913960400191505060405180910390fd5b61ffff86166135815760025461ffff8082166201000090920416146135775760405162461bcd60e51b815260040180806020018281038252602c815260200180613969602c913960400191505060405180910390fd5b60025461ffff1695505b61ffff86811614156135c45760405162461bcd60e51b815260040180806020018281038252602f815260200180613a7e602f913960400191505060405180910390fd5b61ffff8087166000908152600160205260408082205481517f52d2871f000000000000000000000000000000000000000000000000000000008152938916600485015273ffffffffffffffffffffffffffffffffffffffff88811660248601526044850188905291519116926352d2871f926064808301939192829003018186803b15801561365257600080fd5b505afa158015613666573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156136ad57600080fd5b81019080805160405193929190846401000000008211156136cd57600080fd5b9083019060208201858111156136e257600080fd5b82516401000000008111828201881017156136fc57600080fd5b82525081516020918201929091019080838360005b83811015613729578181015183820152602001613711565b50505050905090810190601f1680156137565780820380516001836020036101000a031916815260200191505b50604052505050915050949350505050565b60025462010000900461ffff1681565b61ffff831660009081526005602052604080822090518490849080838380828437919091019485525050604051928390036020019092205467ffffffffffffffff16925050509392505050565b3390565b805460009061ffff166138435760025461ffff908116141561381c5760405162461bcd60e51b8152600401808060200182810382526023815260200180613ad86023913960400191505060405180910390fd5b50600254640100000000900473ffffffffffffffffffffffffffffffffffffffff1661120e565b815461ffff908116141561389e576040805162461bcd60e51b815260206004820152601b60248201527f4c617965725a65726f3a20696e20424c4f434b5f56455253494f4e0000000000604482015290519081900360640190fd5b50600181015473ffffffffffffffffffffffffffffffffffffffff1661120e56fe4c617965725a65726f3a20696e76616c6964206d6573736167696e67206c6962726172792076657273696f6e4c617965725a65726f3a20726563656976652076657273696f6e202864656661756c742920697320424c4f434b5f56455253494f4e4c617965725a65726f3a20696e76616c69642064656661756c74206c6962726172794f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734c617965725a65726f3a206e6f2044454641554c5420636f6e666967207768696c65206d6967726174696f6e4c617965725a65726f3a2073656e642076657273696f6e202864656661756c742920697320424c4f434b5f56455253494f4e4c617965725a65726f3a2063616e206e6f742073657420436f6e66696720647572696e672044454641554c54206d6967726174696f6e4c617965725a65726f3a2073656e642076657273696f6e20697320424c4f434b5f56455253494f4e4c617965725a65726f3a2063616e206e6f7420616464206e6577206d6573736167696e67206c6962726172794c617965725a65726f3a206e65772076657273696f6e2063616e6e6f74206265207a65726f20616464726573734c617965725a65726f3a2063616e206e6f742067657420636f6e66696720666f7220424c4f434b5f56455253494f4e4c617965725a65726f3a2064656661756c7420726563656976652076657273696f6e206d757374203e20304c617965725a65726f3a2064656661756c7420696e20424c4f434b5f56455253494f4e4c617965725a65726f3a2064656661756c742073656e642076657273696f6e206d757374203e20304c617965725a65726f3a2063616e206e6f742073657420636f6e66696720666f7220424c4f434b5f56455253494f4e4c617965725a65726f3a20726563656976652076657273696f6e20697320424c4f434b5f56455253494f4ea2646970667358221220e6b5d21c6f8c2c9877013db38439d495d6ef7349de08e614e2356e88b774c06c64736f6c63430007060033000000000000000000000000000000000000000000000000000000000000271c

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000271c
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000000000271c


Deployed ByteCode Sourcemap

12426:15669:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21500:428;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21500:428:0;;;;:::i;:::-;;26687:275;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26687:275:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19744:411;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19744:411:0;;;;:::i;27849:243::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27849:243:0;;-1:-1:-1;27849:243:0;-1:-1:-1;27849:243:0;:::i;:::-;;;;;;;;;;;;;;;;;;22212:456;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22212:456:0;;;;:::i;19200:461::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19200:461:0;;;;:::i;12623:42::-;;;;;;;;;;;;;:::i;26584:95::-;;;;;;;;;;;;;:::i;23466:514::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23466:514:0;;-1:-1:-1;23466:514:0;-1:-1:-1;23466:514:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22676:668;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22676:668:0;;-1:-1:-1;22676:668:0;-1:-1:-1;22676:668:0;:::i;12941:52::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12860:32;;;;;;;;;;;;;:::i;11766:148::-;;;;;;;;;;;;;:::i;25247:697::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25247:697:0;;;;:::i;13757:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13757:71:0;;-1:-1:-1;13757:71:0;;-1:-1:-1;;;;;13757:71:0:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26404:172;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26404:172:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11115:87;;;;;;;;;;;;;:::i;13515:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13515:63:0;;-1:-1:-1;13515:63:0;;-1:-1:-1;;;;;13515:63:0:i;12482:31::-;;;;;;;;;;;;;:::i;24577:662::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24577:662:0;;;;:::i;12572:44::-;;;;;;;;;;;;;:::i;18047:850::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18047:850:0;;-1:-1:-1;18047:850:0;-1:-1:-1;18047:850:0;:::i;13635:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13635:66:0;;;;;;;;;;;:::i;20240:460::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20240:460:0;;;;:::i;12672:27::-;;;;;;;;;;;;;:::i;16405:1634::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16405:1634:0;;-1:-1:-1;16405:1634:0;-1:-1:-1;16405:1634:0;:::i;15688:533::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15688:533:0;;-1:-1:-1;15688:533:0;-1:-1:-1;15688:533:0;:::i;12706:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12706:66:0;;;;:::i;26083:128::-;;;;;;;;;;;;;:::i;20847:552::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20847:552:0;;-1:-1:-1;20847:552:0;-1:-1:-1;20847:552:0;:::i;26970:287::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26970:287:0;;;;:::i;25952:123::-;;;;;;;;;;;;;:::i;13000:43::-;;;;;;;;;;;;;:::i;12069:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12069:244:0;;;;:::i;13404:55::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13404:55:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27265:576;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27265:576:0;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12899:35;;;;;;;;;;;;;:::i;26219:177::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26219:177:0;;-1:-1:-1;26219:177:0;-1:-1:-1;26219:177:0;:::i;21500:428::-;15432:13;;21575:11;;15432:13;;;;;;;15420:25;;;;;;:54;;-1:-1:-1;12611:5:0;15449:25;;;;15420:54;15412:111;;;;-1:-1:-1;;;15412:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21677:10:::1;21629:30;21662:26:::0;;;:14:::1;:26;::::0;;;;;;;21699:34;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;21837:26;;;21699:34;21837:26;;;;;;;;21814:20;;::::1;:49:::0;;;::::1;21662:26;21837::::0;;;::::1;21814:49:::0;;;::::1;::::0;;;21879:41;;;;;;;::::1;::::0;;;;;;21662:26;;21879:41:::1;::::0;;;;;;;::::1;15534:1;21500:428:::0;;:::o;26687:275::-;26821:32;;;26769:6;26821:32;;;:14;:32;;;;;26871:20;;:39;:20;:39;:83;;26934:20;;;;26871:83;;;26913:18;;;;26871:83;26864:90;;;26687:275;;;;:::o;19744:411::-;11346:12;:10;:12::i;:::-;11335:23;;:7;:5;:7::i;:::-;:23;;;11327:68;;;;;-1:-1:-1;;;11327:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15432:13:::1;::::0;19838:22;;15432:13:::1;::::0;;;::::1;::::0;::::1;15420:25:::0;;::::1;;;::::0;:54:::1;;-1:-1:-1::0;12611:5:0::1;15449:25:::0;;::::1;;15420:54;15412:111;;;;-1:-1:-1::0;;;15412:111:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19881:41:::2;::::0;::::2;19873:94;;;;-1:-1:-1::0;;;19873:94:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19978:18;:43:::0;;;::::2;;::::0;;::::2;::::0;;::::2;::::0;;;20067:18;;::::2;-1:-1:-1::0;20053:33:0;;;-1:-1:-1;20053:33:0::2;::::0;;;;;;;;;20032:54;;;::::2;20053:33;::::0;;::::2;20032:54:::0;::::2;::::0;;;::::2;::::0;;;20102:45;;;;;;;::::2;::::0;;;;;;;;;::::2;11406:1:::1;19744:411:::0;:::o;27849:243::-;27999:26;;;27955:4;27999:26;;;:13;:26;;;;;;:39;;27955:4;;27999:26;28026:11;;;;27999:39;28026:11;;;;27999:39;;;;;;;;;-1:-1:-1;;27999:39:0;;;;;;;;;;;28056:14;;;:28;;;-1:-1:-1;;;;27849:243:0;;;;;:::o;22212:456::-;15432:13;;22290:11;;15432:13;;;;;;;15420:25;;;;;;:54;;-1:-1:-1;12611:5:0;15449:25;;;;15420:54;15412:111;;;;-1:-1:-1;;;15412:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22392:10:::1;22344:30;22377:26:::0;;;:14:::1;:26;::::0;;;;;;;22414:37;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;22573:26;;;-1:-1:-1;22573:26:0;;;;;;;22532:68;;;::::1;22377:26;22573::::0;;::::1;22532:68:::0;::::1;::::0;;;::::1;::::0;;22616:44;;;;;;;::::1;::::0;;;;;;22377:26;;22616:44:::1;::::0;;;;;;;::::1;15534:1;22212:456:::0;;:::o;19200:461::-;11346:12;:10;:12::i;:::-;11335:23;;:7;:5;:7::i;:::-;:23;;;11327:68;;;;;-1:-1:-1;;;11327:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19295:43:::1;::::0;::::1;19287:101;;;;-1:-1:-1::0;;;19287:101:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19407:13;::::0;19423:5:::1;19407:13:::0;;;::::1;::::0;::::1;:21;19399:78;;;;-1:-1:-1::0;;;19399:78:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19488:13;:15:::0;;::::1;;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;19528:13;;::::1;::::0;::::1;19514:28:::0;;::::1;::::0;;;;;;;:86;;::::1;::::0;::::1;::::0;;;::::1;;::::0;;19639:13;;19616:37;;19639:13;;::::1;;19616:37:::0;;;;::::1;::::0;;;;;;;;;::::1;19200:461:::0;:::o;12623:42::-;12664:1;12623:42;:::o;26584:95::-;26664:7;26584:95;:::o;23466:514::-;23711:32;;;23638:14;23711:32;;;:14;:32;;;;;23787:20;;23638:14;;23711:32;23638:14;;23787:39;:20;:39;:83;;23850:20;;;;;;23787:83;;;23829:18;;;;;;;23787:83;23754:116;;23888:3;:16;;;23905:11;23918:16;23936:8;;23946:9;23957:14;;23888:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23888:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23888:84:0;;;;;;;;;;;-1:-1:-1;23466:514:0;-1:-1:-1;;;;;;;;;;23466:514:0:o;22676:668::-;22808:26;;;22781:24;22808:26;;;:13;:26;;;;;;:39;;22835:11;;;;22808:39;22835:11;;;;22808:39;;;;;;;;;-1:-1:-1;;22808:39:0;;;;;;;;;;;22945:14;;;;22808:39;;-1:-1:-1;22945:28:0;;;-1:-1:-1;22937:69:0;;-1:-1:-1;22937:69:0;;;;-1:-1:-1;;;22937:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23025:13;;;;;:27;:13;23042:10;23025:27;23017:65;;;;;-1:-1:-1;;;23017:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23131:20;;23162:26;;;;23150:1;23131:20;23199:14;;:27;23290:46;;;;;;;;;;;;;;;;;;;;;;23311:11;;23324;;;;23290:46;;;;23324:11;;;;23290:46;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23290:46:0;;-1:-1:-1;;;;;23290:46:0;22676:668;;;;:::o;12941:52::-;;;;;;;;;:::o;12860:32::-;;;;;;:::o;11766:148::-;11346:12;:10;:12::i;:::-;11335:23;;:7;:5;:7::i;:::-;:23;;;11327:68;;;;;-1:-1:-1;;;11327:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11873:1:::1;11857:6:::0;;11836:40:::1;::::0;::::1;11857:6:::0;;::::1;::::0;11836:40:::1;::::0;11873:1;;11836:40:::1;11904:1;11887:19:::0;;;::::1;::::0;;11766:148::o;25247:697::-;25414:32;;;25339:29;25414:32;;;:14;:32;;;;;25481:23;;;;;;;;;;25523:31;;;25515:87;;;;-1:-1:-1;;;25515:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25617:33;;;25613:324;;25675:21;;;;;12611:5;25675:21;;;:38;;25667:104;;;;-1:-1:-1;;;25667:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25810:28;;;;;-1:-1:-1;25613:324:0;;;25895:30;;;;;;;;-1:-1:-1;25613:324:0;25247:697;;;;;:::o;13757:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26404:172::-;26529:26;;;26503:6;26529:26;;;:13;:26;;;;;;;;:39;;;;;;;;;;;;;26404:172;;;;:::o;11115:87::-;11161:7;11188:6;;;11115:87;:::o;13515:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12482:31::-;;;:::o;24577:662::-;24738:32;;;24666:26;24738:32;;;:14;:32;;;;;24802:20;;;;;;;24841:28;;;24833:81;;;;-1:-1:-1;;;24833:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24929:30;;;24925:307;;24984:18;;12611:5;24984:18;;;:35;;24976:98;;;;-1:-1:-1;;;24976:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25118:18;;;;;;;;-1:-1:-1;24925:307:0;;;-1:-1:-1;25199:20:0;;;;;;24577:662;-1:-1:-1;;24577:662:0:o;12572:44::-;12611:5;12572:44;:::o;18047:850::-;15121:22;;;;;:38;:22;14697:1;15121:38;15113:83;;;;;-1:-1:-1;;;15113:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15207:22;:33;;;;;;;;18218:26:::1;::::0;::::1;-1:-1:-1::0;18218:26:0;;;:13:::1;:26;::::0;;;;;:39;;18245:11;;;;18218:39;18245:11;;;;18218:39;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;18218:39:0::1;::::0;;;;;::::1;::::0;;;;18276:14:::1;::::0;::::1;::::0;18218:39;;-1:-1:-1;18276:28:0;::::1;::::0;-1:-1:-1;18268:69:0::1;::::0;-1:-1:-1;18268:69:0::1;;::::0;;-1:-1:-1;;;18268:69:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;18375:16:::0;;::::1;;18356:35:::0;::::1;:76:::0;::::1;;;;18418:2;:14;;;18405:8;;18395:19;;;;;;;;;;;;;;;;;;;;;;;;;;;:37;18356:76;18348:115;;;::::0;;-1:-1:-1;;;18348:115:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;18497:13:::0;;18588:26;;;;;-1:-1:-1;;18625:14:0;::::1;:27:::0;;;18680:25:::1;::::0;::::1;::::0;;:12:::1;:25;::::0;;;;;:38;;18497:13;;;::::1;;;::::0;18706:11;;;;18680:38;18706:11;;;;18680:38;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;18680:38:0::1;::::0;;;;;::::1;::::0;;;;18731:83;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;18680:38:::1;::::0;;::::1;18731:83:::0;;;;;;;;;;;;;;;;;;;18680:38;;-1:-1:-1;18731:40:0::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;18772:11:0;;-1:-1:-1;18785:11:0;;;;18680:38;;18805:8;;;;18731:83;;;;;;;;18785:11;;;;18731:83;::::1;;::::0;;::::1;::::0;::::1;;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;;::::0;-1:-1:-1;18731:83:0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18830:59;18845:11;18858;;18871:5;18878:10;18830:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;18830:59:0;;-1:-1:-1;;;;;;;18830:59:0::1;-1:-1:-1::0;;15263:22:0;:37;;;;;;;;-1:-1:-1;;;;;;18047:850:0:o;13635:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20240:460::-;11346:12;:10;:12::i;:::-;11335:23;;:7;:5;:7::i;:::-;:23;;;11327:68;;;;;-1:-1:-1;;;11327:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15432:13:::1;::::0;20340:25;;15432:13:::1;::::0;;;::::1;::::0;::::1;15420:25:::0;;::::1;;;::::0;:54:::1;;-1:-1:-1::0;12611:5:0::1;15449:25:::0;;::::1;;15420:54;15412:111;;;;-1:-1:-1::0;;;15412:111:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20386:44:::2;::::0;::::2;20378:100;;;;-1:-1:-1::0;;;20378:100:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20489:21;:49:::0;;;::::2;::::0;::::2;::::0;;::::2;::::0;;::::2;::::0;;;::::2;::::0;;;;20602:21;::::2;::::0;;::::2;-1:-1:-1::0;20588:36:0;;;-1:-1:-1;20588:36:0::2;::::0;;;;;;;;;20549:28:::2;:76:::0;;20588:36:::2;::::0;;::::2;20549:76:::0;;;::::2;::::0;;;::::2;::::0;;20641:51;;;;;;;::::2;::::0;;;;;;;;::::2;11406:1:::1;20240:460:::0;:::o;12672:27::-;;;;;;;;;:::o;16405:1634::-;15121:22;;;;;:38;:22;14697:1;15121:38;15113:83;;;;;-1:-1:-1;;;15113:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15207:22;:33;;;;;;;;16688:25:::1;::::0;::::1;-1:-1:-1::0;16688:25:0;;;:12:::1;:25;::::0;;;;;;:38;;16714:11;;;;16688:38;16714:11;;;;16688:38;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;16688:38:0::1;::::0;;;;;::::1;::::0;;;;16686:40;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;16676:50;;::::1;;::::0;-1:-1:-1;16668:85:0::1;::::0;-1:-1:-1;16668:85:0::1;;::::0;;-1:-1:-1;;;16668:85:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;16799:27;::::0;::::1;16766:30;16799:27:::0;;;:14:::1;:27;::::0;;;;16991:23;;;;::::1;:42;:23;16987:280;;17058:28;::::0;:42:::1;:28;17090:10;17058:42;17050:89;;;;-1:-1:-1::0;;;17050:89:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16987:280;;;17180:30:::0;;;;::::1;:44;:30;17214:10;17180:44;17172:83;;;::::0;;-1:-1:-1;;;17172:83:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17348:26;::::0;::::1;17321:24;17348:26:::0;;;:13:::1;:26;::::0;;;;;:39;;17375:11;;;;17348:39;17375:11;;;;17348:39;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;17348:39:0::1;::::0;;;;;::::1;::::0;;;;17406:14:::1;::::0;::::1;::::0;17348:39;;-1:-1:-1;17406:28:0;;-1:-1:-1;17398:71:0::1;::::0;-1:-1:-1;17398:71:0::1;;::::0;;-1:-1:-1;;;17398:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17505:11;17486:41;;;17533:9;17544:11;17557;;17570:6;17578:8;;17486:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;;::::0;-1:-1:-1;17486:101:0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;17482:550;;;::::0;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17850:72;;;;;;;;17871:8;;:15;;17850:72;;;;;;17889:11;17850:72;;;;;;17912:8;;17902:19;;;;;;;;;;;;;;;;;;;;;;;;;;;17850:72;;::::0;17808:13:::1;:26;17822:11;17808:26;;;;;;;;;;;;;;;17835:11;;17808:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17942:78;17956:11;17969;;17982;17995:6;18003:8;;18013:6;17942:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;;::::0;-1:-1:-1;17942:78:0;;;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;-1:-1:-1;17942:78:0;;;;;;;::::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17666:366;17482:550;-1:-1:-1::0;;15263:22:0;:37;;;;;;;;-1:-1:-1;;;;;;;;16405:1634:0:o;15688:533::-;14890:19;;:35;:19;14697:1;14890:35;14882:77;;;;;-1:-1:-1;;;14882:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14970:19;:30;;14740:1;14970:30;;;;;;;15969:10:::1;-1:-1:-1::0;15954:26:0;;;:14:::1;:26;::::0;;;;;;;16008::::1;::::0;::::1;::::0;;:13:::1;:26:::0;;;;;:38;;;;;;;;;16006:40;;;;::::1;;::::0;;::::1;-1:-1:-1::0;16006:40:0::1;::::0;;::::1;;::::0;;;16057:25:::1;15954:26:::0;16057:15:::1;:25::i;:::-;:30;;;16095:9;16106:10;16118:5;16125:11;16138:12;;16152:8;;16162:14;16178:18;16198:14;;16057:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;;::::0;-1:-1:-1;16057:156:0;;;;;::::1;;::::0;;::::1;::::0;::::1;;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;;::::0;-1:-1:-1;16057:156:0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15023:19:0;:34;;;;14697:1;15023:34;;;-1:-1:-1;;;;;;;;;;;;;;15688:533:0:o;12706:66::-;;;;;;;;;;;;;;;:::o;26083:128::-;26169:22;;;;;:34;:22;14740:1;26169:34;26083:128;:::o;20847:552::-;15432:13;;20973:8;;15432:13;;;;;;;15420:25;;;;;;:54;;-1:-1:-1;12611:5:0;15449:25;;;;15420:54;15412:111;;;;-1:-1:-1;;;15412:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20998:27:::1;::::0;::::1;20994:214;;21072:21;::::0;::::1;21050:18:::0;;::::1;21072:21:::0;;;::::1;;21050:43;21042:110;;;;-1:-1:-1::0;;;21042:110:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21178:18;::::0;::::1;;::::0;-1:-1:-1;20994:214:0::1;12611:5;21226:25:::0;;::::1;;;21218:85;;;;-1:-1:-1::0;;;21218:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21314:23;::::0;;::::1;;::::0;;;:13:::1;:23;::::0;;;;;;;:77;;;;;;;::::1;;::::0;::::1;::::0;;;21358:10:::1;21314:77:::0;;;;;;;;;;;;;;;;;;;;;;;;;:23:::1;::::0;;::::1;::::0;:33:::1;::::0;21348:8;;21370:11;;21383:7;;;;21314:77;;;21383:7;;;;21314:77;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20847:552:::0;;;;;;:::o;26970:287::-;27107:32;;;27055:6;27107:32;;;:14;:32;;;;;27157:23;;;;;:42;:23;:42;:92;;27226:23;;;;;;;27157:92;;;-1:-1:-1;;27202:21:0;;;;;;;;26970:287;-1:-1:-1;26970:287:0:o;25952:123::-;26036:19;;:31;:19;14740:1;26036:31;25952:123;:::o;13000:43::-;;;;;;:::o;12069:244::-;11346:12;:10;:12::i;:::-;11335:23;;:7;:5;:7::i;:::-;:23;;;11327:68;;;;;-1:-1:-1;;;11327:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12158:22:::1;::::0;::::1;12150:73;;;;-1:-1:-1::0;;;12150:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12260:6;::::0;;12239:38:::1;::::0;::::1;::::0;;::::1;::::0;12260:6;::::1;::::0;12239:38:::1;::::0;::::1;12288:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;12069:244::o;13404:55::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27265:576::-;15432:13;;27417:12;;27398:8;;15432:13;;;;;;;15420:25;;;;;;:54;;-1:-1:-1;12611:5:0;15449:25;;;;15420:54;15412:111;;;;-1:-1:-1;;;15412:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27446:27:::1;::::0;::::1;27442:204;;27520:21;::::0;::::1;27498:18:::0;;::::1;27520:21:::0;;;::::1;;27498:43;27490:100;;;;-1:-1:-1::0;;;27490:100:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27616:18;::::0;::::1;;::::0;-1:-1:-1;27442:204:0::1;12611:5;27664:25:::0;;::::1;;;27656:85;;;;-1:-1:-1::0;;;27656:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27759:23;::::0;;::::1;;::::0;;;:13:::1;:23;::::0;;;;;;:74;;;;;;;::::1;;::::0;::::1;::::0;:23:::1;:74:::0;;::::1;::::0;;;;;;;;;;;;:23;::::1;::::0;:33:::1;::::0;:74;;;;;:23;;:74;;;;;:23;:74;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;::::1;;::::0;::::1;::::0;::::1;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;;;;;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;-1:-1:-1;27759:74:0::1;;;;;::::0;::::1;;::::0;;-1:-1:-1;27759:74:0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;;::::1;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;27752:81;;27265:576:::0;;;;;;;:::o;12899:35::-;;;;;;;;;:::o;26219:177::-;26350:25;;;26324:6;26350:25;;;:12;:25;;;;;;:38;;26376:11;;;;26350:38;26376:11;;;;26350:38;;;;;;;;;-1:-1:-1;;26350:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;26219:177:0;;;;;:::o;9650:106::-;9738:10;9650:106;:::o;23988:581::-;24111:20;;24068:26;;24111:39;:20;24107:455;;24229:18;;12611:5;24229:18;;;:35;;24221:83;;;;-1:-1:-1;;;24221:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24326:18:0;;;;;;;24319:25;;24107:455;24439:20;;12611:5;24439:20;;;:37;;24431:77;;;;;-1:-1:-1;;;24431:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24530:20:0;;;;;;24523:27;

Swarm Source

ipfs://e6b5d21c6f8c2c9877013db38439d495d6ef7349de08e614e2356e88b774c06c
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading