ETH Price: $3,173.63 (-7.66%)
Gas: 9 Gwei

Contract

0x52965798050fe9E75309069Cc7bCaF58123128B8
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw ETH203138172024-07-15 18:51:479 days ago1721069507IN
0x52965798...8123128B8
0 ETH0.000546317.83109443
Un Stake198055062024-05-05 17:53:3580 days ago1714931615IN
0x52965798...8123128B8
0 ETH0.001102317.29454424
Claim Eth198054982024-05-05 17:51:5980 days ago1714931519IN
0x52965798...8123128B8
0 ETH0.002766227.27894639
Claim Eth197635572024-04-29 21:10:4786 days ago1714425047IN
0x52965798...8123128B8
0 ETH0.000720816.49739039
Claim Eth197175322024-04-23 10:35:2393 days ago1713868523IN
0x52965798...8123128B8
0 ETH0.0019217110.88303906
Claim Eth196795752024-04-18 3:11:5998 days ago1713409919IN
0x52965798...8123128B8
0 ETH0.0015510710.23536355
Claim Eth196730152024-04-17 5:10:1199 days ago1713330611IN
0x52965798...8123128B8
0 ETH0.000812066.96170014
Claim Eth196684722024-04-16 13:54:35100 days ago1713275675IN
0x52965798...8123128B8
0 ETH0.0019452413.4660666
Claim Eth196684692024-04-16 13:53:59100 days ago1713275639IN
0x52965798...8123128B8
0 ETH0.0019048513.1864631
Claim Eth196684242024-04-16 13:44:59100 days ago1713275099IN
0x52965798...8123128B8
0 ETH0.0016131913.50889515
Claim Eth196630892024-04-15 19:47:35100 days ago1713210455IN
0x52965798...8123128B8
0 ETH0.0013239215.16641167
Stake196624882024-04-15 17:46:23100 days ago1713203183IN
0x52965798...8123128B8
0 ETH0.009835320.74726394
Claim Eth196603442024-04-15 10:34:35101 days ago1713177275IN
0x52965798...8123128B8
0 ETH0.0030938317.1029129
Claim Eth196599772024-04-15 9:19:35101 days ago1713172775IN
0x52965798...8123128B8
0 ETH0.0021155511.29580628
Claim Eth196571202024-04-14 23:43:47101 days ago1713138227IN
0x52965798...8123128B8
0 ETH0.000201247.86408245
Claim Eth196338892024-04-11 17:32:59104 days ago1712856779IN
0x52965798...8123128B8
0 ETH0.0064658726.84753296
Claim Eth196313102024-04-11 8:52:35105 days ago1712825555IN
0x52965798...8123128B8
0 ETH0.0029404817.06872693
Claim Eth196300312024-04-11 4:34:11105 days ago1712810051IN
0x52965798...8123128B8
0 ETH0.0010852911.23503754
Claim Eth196287462024-04-11 0:15:47105 days ago1712794547IN
0x52965798...8123128B8
0 ETH0.0010487812.01454596
Claim Eth196274992024-04-10 20:04:59105 days ago1712779499IN
0x52965798...8123128B8
0 ETH0.0083220821.667298
Claim Eth196266712024-04-10 17:18:47105 days ago1712769527IN
0x52965798...8123128B8
0 ETH0.0024685424.62857507
Claim Eth196244642024-04-10 9:53:35106 days ago1712742815IN
0x52965798...8123128B8
0 ETH0.001446214.42869956
Claim Eth196226342024-04-10 3:45:35106 days ago1712720735IN
0x52965798...8123128B8
0 ETH0.0020232814.00633642
Claim Eth196225492024-04-10 3:28:35106 days ago1712719715IN
0x52965798...8123128B8
0 ETH0.0013871414.3598462
Claim Eth196221072024-04-10 1:59:47106 days ago1712714387IN
0x52965798...8123128B8
0 ETH0.0021462613.8323277
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
203138172024-07-15 18:51:479 days ago1721069507
0x52965798...8123128B8
3.08457185 ETH
198054982024-05-05 17:51:5980 days ago1714931519
0x52965798...8123128B8
0.088587 ETH
198054982024-05-05 17:51:5980 days ago1714931519
0x52965798...8123128B8
0.088587 ETH
197635572024-04-29 21:10:4786 days ago1714425047
0x52965798...8123128B8
0.0066732 ETH
197635572024-04-29 21:10:4786 days ago1714425047
0x52965798...8123128B8
0.02669283 ETH
197175322024-04-23 10:35:2393 days ago1713868523
0x52965798...8123128B8
0.02113698 ETH
197175322024-04-23 10:35:2393 days ago1713868523
0x52965798...8123128B8
0.02113698 ETH
196795752024-04-18 3:11:5998 days ago1713409919
0x52965798...8123128B8
0.34875355 ETH
196730152024-04-17 5:10:1199 days ago1713330611
0x52965798...8123128B8
0.01134465 ETH
196730152024-04-17 5:10:1199 days ago1713330611
0x52965798...8123128B8
0.01134465 ETH
196684722024-04-16 13:54:35100 days ago1713275675
0x52965798...8123128B8
0.04532551 ETH
196684722024-04-16 13:54:35100 days ago1713275675
0x52965798...8123128B8
0.04532551 ETH
196684692024-04-16 13:53:59100 days ago1713275639
0x52965798...8123128B8
0.08081051 ETH
196684692024-04-16 13:53:59100 days ago1713275639
0x52965798...8123128B8
0.08081051 ETH
196684242024-04-16 13:44:59100 days ago1713275099
0x52965798...8123128B8
0.48411686 ETH
196630892024-04-15 19:47:35100 days ago1713210455
0x52965798...8123128B8
0.19969561 ETH
196603442024-04-15 10:34:35101 days ago1713177275
0x52965798...8123128B8
0.07212672 ETH
196603442024-04-15 10:34:35101 days ago1713177275
0x52965798...8123128B8
0.07212672 ETH
196599772024-04-15 9:19:35101 days ago1713172775
0x52965798...8123128B8
0.02942284 ETH
196599772024-04-15 9:19:35101 days ago1713172775
0x52965798...8123128B8
0.02942284 ETH
196338892024-04-11 17:32:59104 days ago1712856779
0x52965798...8123128B8
0.02204398 ETH
196338892024-04-11 17:32:59104 days ago1712856779
0x52965798...8123128B8
0.08817593 ETH
196313102024-04-11 8:52:35105 days ago1712825555
0x52965798...8123128B8
0.019589 ETH
196313102024-04-11 8:52:35105 days ago1712825555
0x52965798...8123128B8
0.07835603 ETH
196300312024-04-11 4:34:11105 days ago1712810051
0x52965798...8123128B8
0.26788353 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ShieldStaking

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-06
*/

// File: @openzeppelin/contracts/security/ReentrancyGuard.sol


// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == _ENTERED;
    }
}

// File: @openzeppelin/contracts/utils/introspection/IERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

// File: @openzeppelin/contracts/token/ERC721/IERC721.sol


// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)

pragma solidity ^0.8.0;


/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721
     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must
     * understand this adds an external call which potentially creates a reentrancy vulnerability.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^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 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) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.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() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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 {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: ShieldStakingMainnet.sol

//SPDX-License-Identifier: MIT  

pragma solidity ^0.8.0;




    
contract ShieldStaking is Ownable {

    IERC20 public token;
    IERC721 public nft;

    constructor( address _token, address _nft, address _treasury) {
        token = IERC20(_token);
        nft = IERC721(_nft);
        treasury = _treasury;
    }

    bool public stakingPaused = true;

    address treasury;
   
    uint256 public tokensStaked = 0;//total tokens staked

    uint256 public stakers = 0;//total wallets staking 

    uint256 public totalEthPaid = 0;//total eth paid out

    uint256 public rate1 = 50;//No NFTs

    uint256 public rate2 = 80;//1 NFT

    uint256 public rate3 = 90;//2 NFTs

    uint256 public rate4 = 100;//3 NFTs

    uint256 public stakeTime1 = 3888000;//45 Days

    uint256 public nftFund = 0;//The amount of rewards not sent from people not having 3 Shield NFTs
 
    uint256 public earlyClaimFee1 = 10;

    uint256 public minStake = (1000 * 10**18);

    uint256 public lastUpdateTime = block.timestamp;

    uint256 public tokensXseconds = 0;

    uint256 public ethDeposits = 0;

    function setStakingPaused(bool _state) public onlyOwner{     
        stakingPaused = _state;
    }

    function setRate1(uint256 _rate1) public onlyOwner{    
        rate1 = _rate1;    
    }

    function setRate2(uint256 _rate2) public onlyOwner{    
        rate2 = _rate2;    
    }

    function setRate3(uint256 _rate3) public onlyOwner{    
        rate3 = _rate3;    
    }

    function setRate4(uint256 _rate4) public onlyOwner{    
        rate4 = _rate4;    
    }

    function setStakeTime1(uint256 _stakeTime1) public onlyOwner{    
        stakeTime1 = _stakeTime1;    
    }

    function setTreasury(address _treasury) public onlyOwner{     
        treasury = _treasury;   
    }

    function setEarlyClaimFee1(uint256 _earlyClaimFee1) public onlyOwner {
        require(_earlyClaimFee1 <= 30, "fee to high try again, 30% max");     
        earlyClaimFee1 = _earlyClaimFee1;   
    }

    function setMinStake(uint256 _minStake) public onlyOwner{     
        minStake = _minStake;   
    }

    function withdrawETH() public onlyOwner {
        payable(owner()).transfer(address(this).balance);
    }

    function withdrawERC20(address _tokenAddress, uint256 _tokenAmount) public virtual onlyOwner {
        IERC20(_tokenAddress).transfer(msg.sender, _tokenAmount);
    }

    struct StakerVault {
        uint256 tokensStaked;
        uint256 shields;
        uint256 stakeDuration;
        uint256 tokensXseconds;
        uint256 rewardsRate;
        uint256 stakedSince;
        uint256 stakedTill;
        uint256 lastClaimTime;
        uint256 lastClaimNumber;
        uint256 ethClaimed;
        bool isStaked;
    }

    struct EthDeposit {
        uint256 timestamp;
        uint256 ethAmt;
        uint256 tokensXseconds;
    }

    mapping(address => StakerVault) public stakerVaults;
    mapping(uint256 => EthDeposit) public EthDeposits;

    //The following is going to be a function that will keep track of the tokensXseconds for the contract as a whole
    //This function will need to be called each time tokens come in or leave the contract such as stake / unstake

    function updateGlobalTokensXseconds() internal {
        uint256 addAmt = 0; 
        addAmt += (block.timestamp - lastUpdateTime) * tokensStaked;
        tokensXseconds += addAmt;
        lastUpdateTime = block.timestamp;
    }

    function updateUserTokensXseconds() internal {
        uint256 addAmt = 0;
        addAmt += (block.timestamp - stakerVaults[msg.sender].lastClaimTime) * stakerVaults[msg.sender].tokensStaked;
        stakerVaults[msg.sender].tokensXseconds += addAmt;
        stakerVaults[msg.sender].lastClaimTime = block.timestamp;
    }

    function calculateRewardsRate () internal {
        stakerVaults[msg.sender].shields = IERC721(nft).balanceOf(msg.sender);

        if (stakerVaults[msg.sender].shields == 0 && stakerVaults[msg.sender].stakeDuration == stakeTime1) { 
            stakerVaults[msg.sender].rewardsRate = rate1;
        }

        if (stakerVaults[msg.sender].shields == 1) { 
            stakerVaults[msg.sender].rewardsRate = rate2;
        }

        if (stakerVaults[msg.sender].shields == 2) { 
            stakerVaults[msg.sender].rewardsRate = rate3;
        }

        if (stakerVaults[msg.sender].shields >= 3) { 
            stakerVaults[msg.sender].rewardsRate = rate4;
        }
    }

    function stake(uint256 _amount) public {
        require(stakingPaused == false, "STAKING IS PAUSED");
        uint256 userBalance = IERC20(token).balanceOf(msg.sender);

        require(userBalance >= _amount, "Insufficient Balance");
        require((_amount + stakerVaults[msg.sender].tokensStaked) >= minStake, "You Need More Tokens To Stake");
        
        updateGlobalTokensXseconds();
        uint256 claimableEth = viewClaimableEth(msg.sender); 
 
        if (claimableEth > 0) {   
            claimEth(); 
        }

        token.approve(address(this), _amount);
        token.approve(treasury, _amount);
        token.transferFrom(msg.sender, treasury, _amount);
        
        if (stakerVaults[msg.sender].isStaked == true) {
            updateUserTokensXseconds();
            stakerVaults[msg.sender].tokensStaked += _amount;
            tokensStaked += _amount;
        }

        if (stakerVaults[msg.sender].isStaked == false) {
            uint256 nftBalance = IERC721(nft).balanceOf(msg.sender);
            stakerVaults[msg.sender].stakeDuration = stakeTime1;
            stakerVaults[msg.sender].stakedTill = block.timestamp + stakeTime1;
            stakerVaults[msg.sender].tokensStaked += _amount;
            stakerVaults[msg.sender].stakedSince = block.timestamp;
            stakerVaults[msg.sender].isStaked = true;
            stakerVaults[msg.sender].tokensXseconds = 0;
            stakerVaults[msg.sender].shields = nftBalance;
            stakerVaults[msg.sender].lastClaimTime = block.timestamp;
            stakerVaults[msg.sender].ethClaimed = 0;
            stakerVaults[msg.sender].lastClaimNumber = ethDeposits;

            calculateRewardsRate();
        
            tokensStaked += _amount;
            stakers += 1;    
        }
    }

    function unStake(uint256 _tokens) public {
        require(stakerVaults[msg.sender].tokensStaked >= _tokens, "You don't have that many tokens");
        require(token.balanceOf(treasury) >= _tokens, "Not Enough Funds In Treasury");
        require(!stakingPaused, "Staking is paused"); 
        require(stakerVaults[msg.sender].isStaked == true);

        uint256 claimableEth = viewClaimableEth(msg.sender); 
 
        if (claimableEth > 0) {   
            claimEth(); 
        }

        updateGlobalTokensXseconds();

        uint256 remainingStake = stakerVaults[msg.sender].tokensStaked - _tokens;
        uint256 unstakedTokens = 0;
        uint256 penalizedTokens = 0;
        uint256 claimedTokens = 0;

        if (remainingStake < minStake) {
            unstakedTokens = stakerVaults[msg.sender].tokensStaked;

            if (stakerVaults[msg.sender].stakedTill > block.timestamp && stakerVaults[msg.sender].stakeDuration == stakeTime1) {
                penalizedTokens = earlyClaimFee1 * unstakedTokens / 100;
                claimedTokens = unstakedTokens - penalizedTokens;
                require(token.transferFrom(treasury, msg.sender, claimedTokens), "Tokens could not be sent to Staker");
            }

            if (stakerVaults[msg.sender].stakedTill <= block.timestamp) {
                require(token.transferFrom(treasury, msg.sender, unstakedTokens), "Tokens could not be sent to Staker");
            }

            stakerVaults[msg.sender].tokensStaked = 0;
            stakerVaults[msg.sender].shields = 0;
            stakerVaults[msg.sender].stakeDuration = 0;
            stakerVaults[msg.sender].tokensXseconds = 0;
            stakerVaults[msg.sender].rewardsRate = 0;
            stakerVaults[msg.sender].stakedSince = 0;
            stakerVaults[msg.sender].stakedTill = 0;
            stakerVaults[msg.sender].lastClaimTime = 0;
            stakerVaults[msg.sender].lastClaimNumber = 0;
            stakerVaults[msg.sender].ethClaimed = 0;
            stakerVaults[msg.sender].isStaked = false;

            tokensStaked -= unstakedTokens;
            stakers --;
        }

        if (remainingStake >= minStake) {
            unstakedTokens = _tokens;

            if (stakerVaults[msg.sender].stakedTill > block.timestamp && stakerVaults[msg.sender].stakeDuration == stakeTime1) {
                penalizedTokens = earlyClaimFee1 * unstakedTokens / 100;
                claimedTokens = unstakedTokens - penalizedTokens;
                require(token.transferFrom(treasury, msg.sender, claimedTokens), "Tokens could not be sent to Staker");
            }

            if (stakerVaults[msg.sender].stakedTill <= block.timestamp) {
                require(token.transferFrom(treasury, msg.sender, unstakedTokens), "Tokens could not be sent to Staker");
            }

            updateUserTokensXseconds();
            stakerVaults[msg.sender].tokensStaked -= unstakedTokens;

            tokensStaked -= unstakedTokens;
        }
    }

    function claimEth() public { 
        require(stakerVaults[msg.sender].lastClaimNumber < ethDeposits);
        require(stakerVaults[msg.sender].isStaked == true);
        calculateRewardsRate();
            
        uint256 claimableEth = 0;

            for (uint256 i = stakerVaults[msg.sender].lastClaimNumber; i < ethDeposits; i++) {
                 if (stakerVaults[msg.sender].tokensXseconds == 0) {
                    uint256 time = EthDeposits[i+1].timestamp - stakerVaults[msg.sender].lastClaimTime;
                    uint256 stakerTokensXseconds = (time * stakerVaults[msg.sender].tokensStaked);
                    uint256 claimablePercentage = ((stakerTokensXseconds * 10**18) / EthDeposits[i+1].tokensXseconds);
                    claimableEth += (claimablePercentage * EthDeposits[i+1].ethAmt) / 10**18;
                    stakerVaults[msg.sender].lastClaimTime = EthDeposits[i+1].timestamp;
                    stakerVaults[msg.sender].lastClaimNumber ++;
                }
                
                if (stakerVaults[msg.sender].tokensXseconds > 0) {
                    uint256 time = EthDeposits[i+1].timestamp - stakerVaults[msg.sender].lastClaimTime;//this needs correcting
                    uint256 stakerTokensXseconds = ((time * stakerVaults[msg.sender].tokensStaked) + stakerVaults[msg.sender].tokensXseconds);
                    uint256 claimablePercentage = ((stakerTokensXseconds * 10**18) / EthDeposits[i+1].tokensXseconds);
                    claimableEth += (claimablePercentage * EthDeposits[i+1].ethAmt) / 10**18;
                    stakerVaults[msg.sender].tokensXseconds = 0;
                    stakerVaults[msg.sender].lastClaimTime = EthDeposits[i+1].timestamp;
                    stakerVaults[msg.sender].lastClaimNumber ++;
                }      
            }

        uint256 ethSentToStaker = (claimableEth * stakerVaults[msg.sender].rewardsRate) / 100;
        payable(msg.sender).transfer(ethSentToStaker); 
        uint256 ethToNftFund = claimableEth - ethSentToStaker;

        if (ethToNftFund > 0) {
            payable(treasury).transfer(ethToNftFund);
        }
        
        stakerVaults[msg.sender].ethClaimed += ethSentToStaker;
        totalEthPaid += ethSentToStaker;
        nftFund += ethToNftFund;
    }

    function viewRewardsRate (address user) public view returns (uint256) { 
       
        uint256 shield = IERC721(nft).balanceOf(user); 
        uint256 rate = 0;
 
        if (shield == 0 && stakerVaults[user].stakeDuration == stakeTime1) {  
            rate = rate1; 
        } 
 
        if (shield == 1) {  
            rate = rate2; 
        } 
 
        if (shield == 2) {  
            rate = rate3; 
        } 
 
        if (shield >= 3) {  
            rate = rate4; 
        } 
        return rate; 
    } 
 
    function viewClaimableEth(address user) public view returns(uint256 amount) {
        uint256 rate = viewRewardsRate(user);
        uint256 claimTime = stakerVaults[user].lastClaimTime;
        uint256 claimNumber = stakerVaults[user].lastClaimNumber;
        uint256 ethSentToStaker = 0;
        uint256 claimableEth = 0;
        uint256 stakerTokensXseconds = stakerVaults[user].tokensXseconds;

        for (uint256 i = claimNumber; i < ethDeposits; i++) { // Changed ethDeposits to ethDeposits.length
            if (stakerVaults[user].tokensXseconds == 0) {
                uint256 time = EthDeposits[i+1].timestamp - claimTime; // Changed stakerVaults[user].lastClaimTime to claimTime
                stakerTokensXseconds = time * stakerVaults[user].tokensStaked;
                uint256 claimablePercentage = (stakerTokensXseconds * 10**18) / EthDeposits[i+1].tokensXseconds;
                claimableEth += (claimablePercentage * EthDeposits[i+1].ethAmt) / 10**18;
                ethSentToStaker = claimableEth * rate / 100;
                claimTime = EthDeposits[i+1].timestamp;
                claimNumber++;
            }

            if (stakerVaults[user].tokensXseconds > 0) {
                uint256 time = EthDeposits[i+1].timestamp - stakerVaults[user].lastClaimTime;
                uint256 claimableTokensXseconds = (time * stakerVaults[user].tokensStaked) + stakerTokensXseconds;
                uint256 claimablePercentage = (claimableTokensXseconds * 10**18) / EthDeposits[i+1].tokensXseconds;
                claimableEth += (claimablePercentage * EthDeposits[i+1].ethAmt) / 10**18;
                ethSentToStaker = claimableEth * rate / 100;
                stakerTokensXseconds = 0;
                claimTime = EthDeposits[i+1].timestamp;
                claimNumber++;
            }
        }

        return ethSentToStaker;
    }

    function DepositEth(uint256 _weiAmt) external payable onlyOwner { 
        require(_weiAmt > 0, "Amount sent must be greater than zero"); 
        updateGlobalTokensXseconds(); 
        payable(address(this)).transfer(_weiAmt); 
        uint256 index = (ethDeposits + 1); 
        EthDeposits[index] = EthDeposit(block.timestamp, _weiAmt, tokensXseconds); 
        tokensXseconds = 0; 
        lastUpdateTime = block.timestamp; 
        ethDeposits ++; 
    }

    receive() external payable {
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_nft","type":"address"},{"internalType":"address","name":"_treasury","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"_weiAmt","type":"uint256"}],"name":"DepositEth","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"EthDeposits","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"ethAmt","type":"uint256"},{"internalType":"uint256","name":"tokensXseconds","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyClaimFee1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nft","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftFund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate4","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_earlyClaimFee1","type":"uint256"}],"name":"setEarlyClaimFee1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minStake","type":"uint256"}],"name":"setMinStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rate1","type":"uint256"}],"name":"setRate1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rate2","type":"uint256"}],"name":"setRate2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rate3","type":"uint256"}],"name":"setRate3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rate4","type":"uint256"}],"name":"setRate4","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stakeTime1","type":"uint256"}],"name":"setStakeTime1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setStakingPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakeTime1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakerVaults","outputs":[{"internalType":"uint256","name":"tokensStaked","type":"uint256"},{"internalType":"uint256","name":"shields","type":"uint256"},{"internalType":"uint256","name":"stakeDuration","type":"uint256"},{"internalType":"uint256","name":"tokensXseconds","type":"uint256"},{"internalType":"uint256","name":"rewardsRate","type":"uint256"},{"internalType":"uint256","name":"stakedSince","type":"uint256"},{"internalType":"uint256","name":"stakedTill","type":"uint256"},{"internalType":"uint256","name":"lastClaimTime","type":"uint256"},{"internalType":"uint256","name":"lastClaimNumber","type":"uint256"},{"internalType":"uint256","name":"ethClaimed","type":"uint256"},{"internalType":"bool","name":"isStaked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensXseconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalEthPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"unStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"viewClaimableEth","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"viewRewardsRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600260146101000a81548160ff02191690831515021790555060006004556000600555600060065560326007556050600855605a6009556064600a55623b5380600b556000600c55600a600d55683635c9adc5dea00000600e5542600f55600060105560006011553480156200007b57600080fd5b506040516200489c3803806200489c8339818101604052810190620000a1919062000270565b620000c1620000b56200018d60201b60201c565b6200019560201b60201c565b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506200031f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000815190506200026a8162000305565b92915050565b6000806000606084860312156200028c576200028b62000300565b5b60006200029c8682870162000259565b9350506020620002af8682870162000259565b9250506040620002c28682870162000259565b9150509250925092565b6000620002d982620002e0565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200031081620002cc565b81146200031c57600080fd5b50565b61456d806200032f6000396000f3fe6080604052600436106102345760003560e01c8063aff1f15f1161012e578063cf99770d116100ab578063f2fde38b1161006f578063f2fde38b146107e9578063f3728b6714610812578063f555b8151461083b578063fc0c546a14610866578063fed1252a146108915761023b565b8063cf99770d1461072a578063dbe9a18114610755578063e086e5ec1461077e578063f0d3d31814610795578063f0f44260146107c05761023b565b8063c361d71e116100f2578063c361d71e14610655578063c577191414610680578063c8f33c91146106ab578063ce6d88f4146106d6578063cf854969146106ff5761023b565b8063aff1f15f14610582578063b7cdddcb146105ad578063b86b14cd146105c4578063b9617b9a146105ed578063bbb781cc1461062a5761023b565b806361a99c4b116101bc5780638c80fd90116101805780638c80fd90146104b15780638da5cb5b146104da57806399a0331614610505578063a1db978214610530578063a694fc3a146105595761023b565b806361a99c4b146103f2578063715018a61461041d57806371b207f71461043457806379e32a621461045f57806384e4191e146104885761023b565b80634410764511610203578063441076451461031857806347ccca02146103575780634839e169146103825780635d3eea911461039e5780635dd8eb50146103c75761023b565b806305b217781461024057806315b31bbb1461027d578063199464c6146102a6578063375b3c0a146102ed5761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061026760048036038101906102629190613a1b565b6108bc565b6040516102749190613f34565b60405180910390f35b34801561028957600080fd5b506102a4600480360381019061029f9190613a88565b610d88565b005b3480156102b257600080fd5b506102cd60048036038101906102c89190613a1b565b610dad565b6040516102e49b9a99989796959493929190613f86565b60405180910390f35b3480156102f957600080fd5b50610302610e14565b60405161030f9190613f34565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a9190613ae2565b610e1a565b60405161034e93929190613f4f565b60405180910390f35b34801561036357600080fd5b5061036c610e44565b6040516103799190613db9565b60405180910390f35b61039c60048036038101906103979190613ae2565b610e6a565b005b3480156103aa57600080fd5b506103c560048036038101906103c09190613ae2565b610f93565b005b3480156103d357600080fd5b506103dc611cf4565b6040516103e99190613f34565b60405180910390f35b3480156103fe57600080fd5b50610407611cfa565b6040516104149190613f34565b60405180910390f35b34801561042957600080fd5b50610432611d00565b005b34801561044057600080fd5b50610449611d14565b6040516104569190613f34565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190613ae2565b611d1a565b005b34801561049457600080fd5b506104af60048036038101906104aa9190613ae2565b611d2c565b005b3480156104bd57600080fd5b506104d860048036038101906104d39190613ae2565b611d3e565b005b3480156104e657600080fd5b506104ef611d50565b6040516104fc9190613d08565b60405180910390f35b34801561051157600080fd5b5061051a611d79565b6040516105279190613f34565b60405180910390f35b34801561053c57600080fd5b5061055760048036038101906105529190613a48565b611d7f565b005b34801561056557600080fd5b50610580600480360381019061057b9190613ae2565b611e19565b005b34801561058e57600080fd5b50610597612793565b6040516105a49190613f34565b60405180910390f35b3480156105b957600080fd5b506105c2612799565b005b3480156105d057600080fd5b506105eb60048036038101906105e69190613ae2565b612fd7565b005b3480156105f957600080fd5b50610614600480360381019061060f9190613a1b565b612fe9565b6040516106219190613f34565b60405180910390f35b34801561063657600080fd5b5061063f61312e565b60405161064c9190613d83565b60405180910390f35b34801561066157600080fd5b5061066a613141565b6040516106779190613f34565b60405180910390f35b34801561068c57600080fd5b50610695613147565b6040516106a29190613f34565b60405180910390f35b3480156106b757600080fd5b506106c061314d565b6040516106cd9190613f34565b60405180910390f35b3480156106e257600080fd5b506106fd60048036038101906106f89190613ae2565b613153565b005b34801561070b57600080fd5b50610714613165565b6040516107219190613f34565b60405180910390f35b34801561073657600080fd5b5061073f61316b565b60405161074c9190613f34565b60405180910390f35b34801561076157600080fd5b5061077c60048036038101906107779190613ae2565b613171565b005b34801561078a57600080fd5b506107936131c7565b005b3480156107a157600080fd5b506107aa61321f565b6040516107b79190613f34565b60405180910390f35b3480156107cc57600080fd5b506107e760048036038101906107e29190613a1b565b613225565b005b3480156107f557600080fd5b50610810600480360381019061080b9190613a1b565b613271565b005b34801561081e57600080fd5b5061083960048036038101906108349190613ae2565b6132f5565b005b34801561084757600080fd5b50610850613307565b60405161085d9190613f34565b60405180910390f35b34801561087257600080fd5b5061087b61330d565b6040516108889190613d9e565b60405180910390f35b34801561089d57600080fd5b506108a6613333565b6040516108b39190613f34565b60405180910390f35b6000806108c883612fe9565b90506000601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015490506000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008015490506000806000601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154905060008490505b601154811015610d79576000601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541415610b625760008660136000600185610a119190614042565b815260200190815260200160002060000154610a2d9190614123565b9050601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015481610a7d91906140c9565b9250600060136000600185610a929190614042565b815260200190815260200160002060020154670de0b6b3a764000085610ab891906140c9565b610ac29190614098565b9050670de0b6b3a764000060136000600186610ade9190614042565b81526020019081526020016000206001015482610afb91906140c9565b610b059190614098565b85610b109190614042565b945060648986610b2091906140c9565b610b2a9190614098565b955060136000600185610b3d9190614042565b81526020019081526020016000206000015497508680610b5c90614211565b97505050505b6000601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541115610d66576000601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015460136000600185610c039190614042565b815260200190815260200160002060000154610c1f9190614123565b9050600083601260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015483610c7291906140c9565b610c7c9190614042565b9050600060136000600186610c919190614042565b815260200190815260200160002060020154670de0b6b3a764000083610cb791906140c9565b610cc19190614098565b9050670de0b6b3a764000060136000600187610cdd9190614042565b81526020019081526020016000206001015482610cfa91906140c9565b610d049190614098565b86610d0f9190614042565b955060648a87610d1f91906140c9565b610d299190614098565b96506000945060136000600186610d409190614042565b81526020019081526020016000206000015498508780610d5f90614211565b9850505050505b8080610d7190614211565b9150506109a8565b50829650505050505050919050565b610d90613339565b80600260146101000a81548160ff02191690831515021790555050565b601260205280600052604060002060009150905080600001549080600101549080600201549080600301549080600401549080600501549080600601549080600701549080600801549080600901549080600a0160009054906101000a900460ff1690508b565b600e5481565b60136020528060005260406000206000915090508060000154908060010154908060020154905083565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e72613339565b60008111610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac90613df4565b60405180910390fd5b610ebd6133b7565b3073ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610f03573d6000803e3d6000fd5b5060006001601154610f159190614042565b9050604051806060016040528042815260200183815260200160105481525060136000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050600060108190555042600f8190555060116000815480929190610f8a90614211565b91905055505050565b80601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541015611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100f90613e94565b60405180910390fd5b80600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016110969190613d08565b60206040518083038186803b1580156110ae57600080fd5b505afa1580156110c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e69190613b0f565b1015611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e90613e54565b60405180910390fd5b600260149054906101000a900460ff1615611177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116e90613f14565b60405180910390fd5b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160009054906101000a900460ff161515146111d757600080fd5b60006111e2336108bc565b905060008111156111f6576111f5612799565b5b6111fe6133b7565b600082601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461124e9190614123565b90506000806000600e5484101561193357601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154925042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601541180156113385750600b54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b1561147a57606483600d5461134d91906140c9565b6113579190614098565b915081836113659190614123565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b81526004016113e893929190613d23565b602060405180830381600087803b15801561140257600080fd5b505af1158015611416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143a9190613ab5565b611479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147090613e74565b60405180910390fd5b5b42601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154116115d657600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633866040518463ffffffff1660e01b815260040161154493929190613d23565b602060405180830381600087803b15801561155e57600080fd5b505af1158015611572573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115969190613ab5565b6115d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cc90613e74565b60405180910390fd5b5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600801819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600901819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160006101000a81548160ff02191690831515021790555082600460008282546119139190614123565b925050819055506005600081548092919061192d906141e7565b91905055505b600e548410611cec5785925042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601541180156119d35750600b54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b15611b1557606483600d546119e891906140c9565b6119f29190614098565b91508183611a009190614123565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b8152600401611a8393929190613d23565b602060405180830381600087803b158015611a9d57600080fd5b505af1158015611ab1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad59190613ab5565b611b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0b90613e74565b60405180910390fd5b5b42601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015411611c7157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633866040518463ffffffff1660e01b8152600401611bdf93929190613d23565b602060405180830381600087803b158015611bf957600080fd5b505af1158015611c0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c319190613ab5565b611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790613e74565b60405180910390fd5b5b611c79613404565b82601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254611ccb9190614123565b925050819055508260046000828254611ce49190614123565b925050819055505b505050505050565b600a5481565b60115481565b611d08613339565b611d126000613551565b565b60065481565b611d22613339565b8060088190555050565b611d34613339565b80600a8190555050565b611d46613339565b80600e8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b611d87613339565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611dc2929190613d5a565b602060405180830381600087803b158015611ddc57600080fd5b505af1158015611df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e149190613ab5565b505050565b60001515600260149054906101000a900460ff16151514611e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6690613ef4565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611ecc9190613d08565b60206040518083038186803b158015611ee457600080fd5b505afa158015611ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1c9190613b0f565b905081811015611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5890613ed4565b60405180910390fd5b600e54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015483611fb29190614042565b1015611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea90613e34565b60405180910390fd5b611ffb6133b7565b6000612006336108bc565b9050600081111561201a57612019612799565b5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b330856040518363ffffffff1660e01b8152600401612077929190613d5a565b602060405180830381600087803b15801561209157600080fd5b505af11580156120a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c99190613ab5565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401612149929190613d5a565b602060405180830381600087803b15801561216357600080fd5b505af1158015612177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219b9190613ab5565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518463ffffffff1660e01b815260040161221d93929190613d23565b602060405180830381600087803b15801561223757600080fd5b505af115801561224b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226f9190613ab5565b5060011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160009054906101000a900460ff1615151415612347576122d4613404565b82601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546123269190614042565b92505081905550826004600082825461233f9190614042565b925050819055505b60001515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160009054906101000a900460ff161515141561278e576000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016124009190613d08565b60206040518083038186803b15801561241857600080fd5b505afa15801561242c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124509190613b0f565b9050600b54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550600b54426124a99190614042565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555083601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546125419190614042565b9250508190555042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055506001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160006101000a81548160ff0219169083151502179055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555080601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090181905550601154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080181905550612759613615565b836004600082825461276b9190614042565b925050819055506001600560008282546127859190614042565b92505081905550505b505050565b60095481565b601154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154106127e957600080fd5b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160009054906101000a900460ff1615151461284957600080fd5b612851613615565b600080601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008015490505b601154811015612e1e576000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541415612b0d576000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154601360006001856129459190614042565b8152602001908152602001600020600001546129619190614123565b90506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154826129b391906140c9565b90506000601360006001866129c89190614042565b815260200190815260200160002060020154670de0b6b3a7640000836129ee91906140c9565b6129f89190614098565b9050670de0b6b3a764000060136000600187612a149190614042565b81526020019081526020016000206001015482612a3191906140c9565b612a3b9190614098565b85612a469190614042565b945060136000600186612a599190614042565b815260200190815260200160002060000154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070181905550601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008016000815480929190612b0490614211565b91905055505050505b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541115612e0b576000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015460136000600185612bae9190614042565b815260200190815260200160002060000154612bca9190614123565b90506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015483612c5f91906140c9565b612c699190614042565b9050600060136000600186612c7e9190614042565b815260200190815260200160002060020154670de0b6b3a764000083612ca491906140c9565b612cae9190614098565b9050670de0b6b3a764000060136000600187612cca9190614042565b81526020019081526020016000206001015482612ce791906140c9565b612cf19190614098565b85612cfc9190614042565b94506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555060136000600186612d579190614042565b815260200190815260200160002060000154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070181905550601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008016000815480929190612e0290614211565b91905055505050505b8080612e1690614211565b91505061289a565b5060006064601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015483612e7191906140c9565b612e7b9190614098565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ec3573d6000803e3d6000fd5b5060008183612ed29190614123565b90506000811115612f4757600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f45573d6000803e3d6000fd5b505b81601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206009016000828254612f999190614042565b925050819055508160066000828254612fb29190614042565b9250508190555080600c6000828254612fcb9190614042565b92505081905550505050565b612fdf613339565b8060078190555050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b81526004016130479190613d08565b60206040518083038186803b15801561305f57600080fd5b505afa158015613073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130979190613b0f565b9050600080821480156130ed5750600b54601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b156130f85760075490505b60018214156131075760085490505b60028214156131165760095490505b6003821061312457600a5490505b8092505050919050565b600260149054906101000a900460ff1681565b600d5481565b600c5481565b600f5481565b61315b613339565b80600b8190555050565b60075481565b60105481565b613179613339565b601e8111156131bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b490613e14565b60405180910390fd5b80600d8190555050565b6131cf613339565b6131d7611d50565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561321c573d6000803e3d6000fd5b50565b600b5481565b61322d613339565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613279613339565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156132e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e090613dd4565b60405180910390fd5b6132f281613551565b50565b6132fd613339565b8060098190555050565b60085481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b6133416139aa565b73ffffffffffffffffffffffffffffffffffffffff1661335f611d50565b73ffffffffffffffffffffffffffffffffffffffff16146133b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ac90613eb4565b60405180910390fd5b565b6000600454600f54426133ca9190614123565b6133d491906140c9565b816133df9190614042565b905080601060008282546133f39190614042565b9250508190555042600f8190555050565b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154426134979190614123565b6134a191906140c9565b816134ac9190614042565b905080601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008282546135009190614042565b9250508190555042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016136709190613d08565b60206040518083038186803b15801561368857600080fd5b505afa15801561369c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c09190613b0f565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015414801561379b5750600b54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b156137ea57600754601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b6001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154141561387f57600854601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b6002601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154141561391457600954601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b6003601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154106139a857600a54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b565b600033905090565b6000813590506139c1816144f2565b92915050565b6000813590506139d681614509565b92915050565b6000815190506139eb81614509565b92915050565b600081359050613a0081614520565b92915050565b600081519050613a1581614520565b92915050565b600060208284031215613a3157613a306142b8565b5b6000613a3f848285016139b2565b91505092915050565b60008060408385031215613a5f57613a5e6142b8565b5b6000613a6d858286016139b2565b9250506020613a7e858286016139f1565b9150509250929050565b600060208284031215613a9e57613a9d6142b8565b5b6000613aac848285016139c7565b91505092915050565b600060208284031215613acb57613aca6142b8565b5b6000613ad9848285016139dc565b91505092915050565b600060208284031215613af857613af76142b8565b5b6000613b06848285016139f1565b91505092915050565b600060208284031215613b2557613b246142b8565b5b6000613b3384828501613a06565b91505092915050565b613b4581614157565b82525050565b613b5481614169565b82525050565b613b638161419f565b82525050565b613b72816141b1565b82525050565b6000613b85602683614031565b9150613b90826142bd565b604082019050919050565b6000613ba8602583614031565b9150613bb38261430c565b604082019050919050565b6000613bcb601e83614031565b9150613bd68261435b565b602082019050919050565b6000613bee601d83614031565b9150613bf982614384565b602082019050919050565b6000613c11601c83614031565b9150613c1c826143ad565b602082019050919050565b6000613c34602283614031565b9150613c3f826143d6565b604082019050919050565b6000613c57601f83614031565b9150613c6282614425565b602082019050919050565b6000613c7a602083614031565b9150613c858261444e565b602082019050919050565b6000613c9d601483614031565b9150613ca882614477565b602082019050919050565b6000613cc0601183614031565b9150613ccb826144a0565b602082019050919050565b6000613ce3601183614031565b9150613cee826144c9565b602082019050919050565b613d0281614195565b82525050565b6000602082019050613d1d6000830184613b3c565b92915050565b6000606082019050613d386000830186613b3c565b613d456020830185613b3c565b613d526040830184613cf9565b949350505050565b6000604082019050613d6f6000830185613b3c565b613d7c6020830184613cf9565b9392505050565b6000602082019050613d986000830184613b4b565b92915050565b6000602082019050613db36000830184613b5a565b92915050565b6000602082019050613dce6000830184613b69565b92915050565b60006020820190508181036000830152613ded81613b78565b9050919050565b60006020820190508181036000830152613e0d81613b9b565b9050919050565b60006020820190508181036000830152613e2d81613bbe565b9050919050565b60006020820190508181036000830152613e4d81613be1565b9050919050565b60006020820190508181036000830152613e6d81613c04565b9050919050565b60006020820190508181036000830152613e8d81613c27565b9050919050565b60006020820190508181036000830152613ead81613c4a565b9050919050565b60006020820190508181036000830152613ecd81613c6d565b9050919050565b60006020820190508181036000830152613eed81613c90565b9050919050565b60006020820190508181036000830152613f0d81613cb3565b9050919050565b60006020820190508181036000830152613f2d81613cd6565b9050919050565b6000602082019050613f496000830184613cf9565b92915050565b6000606082019050613f646000830186613cf9565b613f716020830185613cf9565b613f7e6040830184613cf9565b949350505050565b600061016082019050613f9c600083018e613cf9565b613fa9602083018d613cf9565b613fb6604083018c613cf9565b613fc3606083018b613cf9565b613fd0608083018a613cf9565b613fdd60a0830189613cf9565b613fea60c0830188613cf9565b613ff760e0830187613cf9565b614005610100830186613cf9565b614013610120830185613cf9565b614021610140830184613b4b565b9c9b505050505050505050505050565b600082825260208201905092915050565b600061404d82614195565b915061405883614195565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561408d5761408c61425a565b5b828201905092915050565b60006140a382614195565b91506140ae83614195565b9250826140be576140bd614289565b5b828204905092915050565b60006140d482614195565b91506140df83614195565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141185761411761425a565b5b828202905092915050565b600061412e82614195565b915061413983614195565b92508282101561414c5761414b61425a565b5b828203905092915050565b600061416282614175565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006141aa826141c3565b9050919050565b60006141bc826141c3565b9050919050565b60006141ce826141d5565b9050919050565b60006141e082614175565b9050919050565b60006141f282614195565b915060008214156142065761420561425a565b5b600182039050919050565b600061421c82614195565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561424f5761424e61425a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e742073656e74206d7573742062652067726561746572207468616e60008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f66656520746f20686967682074727920616761696e2c20333025206d61780000600082015250565b7f596f75204e656564204d6f726520546f6b656e7320546f205374616b65000000600082015250565b7f4e6f7420456e6f7567682046756e647320496e20547265617375727900000000600082015250565b7f546f6b656e7320636f756c64206e6f742062652073656e7420746f205374616b60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f7520646f6e277420686176652074686174206d616e7920746f6b656e7300600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b7f5354414b494e4720495320504155534544000000000000000000000000000000600082015250565b7f5374616b696e6720697320706175736564000000000000000000000000000000600082015250565b6144fb81614157565b811461450657600080fd5b50565b61451281614169565b811461451d57600080fd5b50565b61452981614195565b811461453457600080fd5b5056fea2646970667358221220dbedd15994e80f90091206990dc3b7d2e55203183463a174cce9f1907ee904d964736f6c63430008070033000000000000000000000000d8b90d2e680ea535eacce1b025c998b347892f6800000000000000000000000009d535b5ceb3a447bebd3b415281299b60a437e5000000000000000000000000a3448c405b665503163053f8caec2595b7f415bd

Deployed Bytecode

0x6080604052600436106102345760003560e01c8063aff1f15f1161012e578063cf99770d116100ab578063f2fde38b1161006f578063f2fde38b146107e9578063f3728b6714610812578063f555b8151461083b578063fc0c546a14610866578063fed1252a146108915761023b565b8063cf99770d1461072a578063dbe9a18114610755578063e086e5ec1461077e578063f0d3d31814610795578063f0f44260146107c05761023b565b8063c361d71e116100f2578063c361d71e14610655578063c577191414610680578063c8f33c91146106ab578063ce6d88f4146106d6578063cf854969146106ff5761023b565b8063aff1f15f14610582578063b7cdddcb146105ad578063b86b14cd146105c4578063b9617b9a146105ed578063bbb781cc1461062a5761023b565b806361a99c4b116101bc5780638c80fd90116101805780638c80fd90146104b15780638da5cb5b146104da57806399a0331614610505578063a1db978214610530578063a694fc3a146105595761023b565b806361a99c4b146103f2578063715018a61461041d57806371b207f71461043457806379e32a621461045f57806384e4191e146104885761023b565b80634410764511610203578063441076451461031857806347ccca02146103575780634839e169146103825780635d3eea911461039e5780635dd8eb50146103c75761023b565b806305b217781461024057806315b31bbb1461027d578063199464c6146102a6578063375b3c0a146102ed5761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061026760048036038101906102629190613a1b565b6108bc565b6040516102749190613f34565b60405180910390f35b34801561028957600080fd5b506102a4600480360381019061029f9190613a88565b610d88565b005b3480156102b257600080fd5b506102cd60048036038101906102c89190613a1b565b610dad565b6040516102e49b9a99989796959493929190613f86565b60405180910390f35b3480156102f957600080fd5b50610302610e14565b60405161030f9190613f34565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a9190613ae2565b610e1a565b60405161034e93929190613f4f565b60405180910390f35b34801561036357600080fd5b5061036c610e44565b6040516103799190613db9565b60405180910390f35b61039c60048036038101906103979190613ae2565b610e6a565b005b3480156103aa57600080fd5b506103c560048036038101906103c09190613ae2565b610f93565b005b3480156103d357600080fd5b506103dc611cf4565b6040516103e99190613f34565b60405180910390f35b3480156103fe57600080fd5b50610407611cfa565b6040516104149190613f34565b60405180910390f35b34801561042957600080fd5b50610432611d00565b005b34801561044057600080fd5b50610449611d14565b6040516104569190613f34565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190613ae2565b611d1a565b005b34801561049457600080fd5b506104af60048036038101906104aa9190613ae2565b611d2c565b005b3480156104bd57600080fd5b506104d860048036038101906104d39190613ae2565b611d3e565b005b3480156104e657600080fd5b506104ef611d50565b6040516104fc9190613d08565b60405180910390f35b34801561051157600080fd5b5061051a611d79565b6040516105279190613f34565b60405180910390f35b34801561053c57600080fd5b5061055760048036038101906105529190613a48565b611d7f565b005b34801561056557600080fd5b50610580600480360381019061057b9190613ae2565b611e19565b005b34801561058e57600080fd5b50610597612793565b6040516105a49190613f34565b60405180910390f35b3480156105b957600080fd5b506105c2612799565b005b3480156105d057600080fd5b506105eb60048036038101906105e69190613ae2565b612fd7565b005b3480156105f957600080fd5b50610614600480360381019061060f9190613a1b565b612fe9565b6040516106219190613f34565b60405180910390f35b34801561063657600080fd5b5061063f61312e565b60405161064c9190613d83565b60405180910390f35b34801561066157600080fd5b5061066a613141565b6040516106779190613f34565b60405180910390f35b34801561068c57600080fd5b50610695613147565b6040516106a29190613f34565b60405180910390f35b3480156106b757600080fd5b506106c061314d565b6040516106cd9190613f34565b60405180910390f35b3480156106e257600080fd5b506106fd60048036038101906106f89190613ae2565b613153565b005b34801561070b57600080fd5b50610714613165565b6040516107219190613f34565b60405180910390f35b34801561073657600080fd5b5061073f61316b565b60405161074c9190613f34565b60405180910390f35b34801561076157600080fd5b5061077c60048036038101906107779190613ae2565b613171565b005b34801561078a57600080fd5b506107936131c7565b005b3480156107a157600080fd5b506107aa61321f565b6040516107b79190613f34565b60405180910390f35b3480156107cc57600080fd5b506107e760048036038101906107e29190613a1b565b613225565b005b3480156107f557600080fd5b50610810600480360381019061080b9190613a1b565b613271565b005b34801561081e57600080fd5b5061083960048036038101906108349190613ae2565b6132f5565b005b34801561084757600080fd5b50610850613307565b60405161085d9190613f34565b60405180910390f35b34801561087257600080fd5b5061087b61330d565b6040516108889190613d9e565b60405180910390f35b34801561089d57600080fd5b506108a6613333565b6040516108b39190613f34565b60405180910390f35b6000806108c883612fe9565b90506000601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015490506000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008015490506000806000601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154905060008490505b601154811015610d79576000601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541415610b625760008660136000600185610a119190614042565b815260200190815260200160002060000154610a2d9190614123565b9050601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015481610a7d91906140c9565b9250600060136000600185610a929190614042565b815260200190815260200160002060020154670de0b6b3a764000085610ab891906140c9565b610ac29190614098565b9050670de0b6b3a764000060136000600186610ade9190614042565b81526020019081526020016000206001015482610afb91906140c9565b610b059190614098565b85610b109190614042565b945060648986610b2091906140c9565b610b2a9190614098565b955060136000600185610b3d9190614042565b81526020019081526020016000206000015497508680610b5c90614211565b97505050505b6000601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541115610d66576000601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015460136000600185610c039190614042565b815260200190815260200160002060000154610c1f9190614123565b9050600083601260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015483610c7291906140c9565b610c7c9190614042565b9050600060136000600186610c919190614042565b815260200190815260200160002060020154670de0b6b3a764000083610cb791906140c9565b610cc19190614098565b9050670de0b6b3a764000060136000600187610cdd9190614042565b81526020019081526020016000206001015482610cfa91906140c9565b610d049190614098565b86610d0f9190614042565b955060648a87610d1f91906140c9565b610d299190614098565b96506000945060136000600186610d409190614042565b81526020019081526020016000206000015498508780610d5f90614211565b9850505050505b8080610d7190614211565b9150506109a8565b50829650505050505050919050565b610d90613339565b80600260146101000a81548160ff02191690831515021790555050565b601260205280600052604060002060009150905080600001549080600101549080600201549080600301549080600401549080600501549080600601549080600701549080600801549080600901549080600a0160009054906101000a900460ff1690508b565b600e5481565b60136020528060005260406000206000915090508060000154908060010154908060020154905083565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e72613339565b60008111610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac90613df4565b60405180910390fd5b610ebd6133b7565b3073ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610f03573d6000803e3d6000fd5b5060006001601154610f159190614042565b9050604051806060016040528042815260200183815260200160105481525060136000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050600060108190555042600f8190555060116000815480929190610f8a90614211565b91905055505050565b80601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541015611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100f90613e94565b60405180910390fd5b80600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016110969190613d08565b60206040518083038186803b1580156110ae57600080fd5b505afa1580156110c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e69190613b0f565b1015611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e90613e54565b60405180910390fd5b600260149054906101000a900460ff1615611177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116e90613f14565b60405180910390fd5b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160009054906101000a900460ff161515146111d757600080fd5b60006111e2336108bc565b905060008111156111f6576111f5612799565b5b6111fe6133b7565b600082601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461124e9190614123565b90506000806000600e5484101561193357601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154925042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601541180156113385750600b54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b1561147a57606483600d5461134d91906140c9565b6113579190614098565b915081836113659190614123565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b81526004016113e893929190613d23565b602060405180830381600087803b15801561140257600080fd5b505af1158015611416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143a9190613ab5565b611479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147090613e74565b60405180910390fd5b5b42601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154116115d657600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633866040518463ffffffff1660e01b815260040161154493929190613d23565b602060405180830381600087803b15801561155e57600080fd5b505af1158015611572573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115969190613ab5565b6115d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cc90613e74565b60405180910390fd5b5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600801819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600901819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160006101000a81548160ff02191690831515021790555082600460008282546119139190614123565b925050819055506005600081548092919061192d906141e7565b91905055505b600e548410611cec5785925042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601541180156119d35750600b54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b15611b1557606483600d546119e891906140c9565b6119f29190614098565b91508183611a009190614123565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633846040518463ffffffff1660e01b8152600401611a8393929190613d23565b602060405180830381600087803b158015611a9d57600080fd5b505af1158015611ab1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad59190613ab5565b611b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0b90613e74565b60405180910390fd5b5b42601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015411611c7157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633866040518463ffffffff1660e01b8152600401611bdf93929190613d23565b602060405180830381600087803b158015611bf957600080fd5b505af1158015611c0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c319190613ab5565b611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790613e74565b60405180910390fd5b5b611c79613404565b82601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254611ccb9190614123565b925050819055508260046000828254611ce49190614123565b925050819055505b505050505050565b600a5481565b60115481565b611d08613339565b611d126000613551565b565b60065481565b611d22613339565b8060088190555050565b611d34613339565b80600a8190555050565b611d46613339565b80600e8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b611d87613339565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611dc2929190613d5a565b602060405180830381600087803b158015611ddc57600080fd5b505af1158015611df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e149190613ab5565b505050565b60001515600260149054906101000a900460ff16151514611e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6690613ef4565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611ecc9190613d08565b60206040518083038186803b158015611ee457600080fd5b505afa158015611ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1c9190613b0f565b905081811015611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5890613ed4565b60405180910390fd5b600e54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015483611fb29190614042565b1015611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea90613e34565b60405180910390fd5b611ffb6133b7565b6000612006336108bc565b9050600081111561201a57612019612799565b5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b330856040518363ffffffff1660e01b8152600401612077929190613d5a565b602060405180830381600087803b15801561209157600080fd5b505af11580156120a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c99190613ab5565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401612149929190613d5a565b602060405180830381600087803b15801561216357600080fd5b505af1158015612177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219b9190613ab5565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518463ffffffff1660e01b815260040161221d93929190613d23565b602060405180830381600087803b15801561223757600080fd5b505af115801561224b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226f9190613ab5565b5060011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160009054906101000a900460ff1615151415612347576122d4613404565b82601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546123269190614042565b92505081905550826004600082825461233f9190614042565b925050819055505b60001515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160009054906101000a900460ff161515141561278e576000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016124009190613d08565b60206040518083038186803b15801561241857600080fd5b505afa15801561242c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124509190613b0f565b9050600b54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550600b54426124a99190614042565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555083601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546125419190614042565b9250508190555042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055506001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160006101000a81548160ff0219169083151502179055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555080601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090181905550601154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080181905550612759613615565b836004600082825461276b9190614042565b925050819055506001600560008282546127859190614042565b92505081905550505b505050565b60095481565b601154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154106127e957600080fd5b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160009054906101000a900460ff1615151461284957600080fd5b612851613615565b600080601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008015490505b601154811015612e1e576000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541415612b0d576000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154601360006001856129459190614042565b8152602001908152602001600020600001546129619190614123565b90506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154826129b391906140c9565b90506000601360006001866129c89190614042565b815260200190815260200160002060020154670de0b6b3a7640000836129ee91906140c9565b6129f89190614098565b9050670de0b6b3a764000060136000600187612a149190614042565b81526020019081526020016000206001015482612a3191906140c9565b612a3b9190614098565b85612a469190614042565b945060136000600186612a599190614042565b815260200190815260200160002060000154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070181905550601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008016000815480929190612b0490614211565b91905055505050505b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301541115612e0b576000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015460136000600185612bae9190614042565b815260200190815260200160002060000154612bca9190614123565b90506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015483612c5f91906140c9565b612c699190614042565b9050600060136000600186612c7e9190614042565b815260200190815260200160002060020154670de0b6b3a764000083612ca491906140c9565b612cae9190614098565b9050670de0b6b3a764000060136000600187612cca9190614042565b81526020019081526020016000206001015482612ce791906140c9565b612cf19190614098565b85612cfc9190614042565b94506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555060136000600186612d579190614042565b815260200190815260200160002060000154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070181905550601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008016000815480929190612e0290614211565b91905055505050505b8080612e1690614211565b91505061289a565b5060006064601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015483612e7191906140c9565b612e7b9190614098565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612ec3573d6000803e3d6000fd5b5060008183612ed29190614123565b90506000811115612f4757600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f45573d6000803e3d6000fd5b505b81601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206009016000828254612f999190614042565b925050819055508160066000828254612fb29190614042565b9250508190555080600c6000828254612fcb9190614042565b92505081905550505050565b612fdf613339565b8060078190555050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b81526004016130479190613d08565b60206040518083038186803b15801561305f57600080fd5b505afa158015613073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130979190613b0f565b9050600080821480156130ed5750600b54601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b156130f85760075490505b60018214156131075760085490505b60028214156131165760095490505b6003821061312457600a5490505b8092505050919050565b600260149054906101000a900460ff1681565b600d5481565b600c5481565b600f5481565b61315b613339565b80600b8190555050565b60075481565b60105481565b613179613339565b601e8111156131bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b490613e14565b60405180910390fd5b80600d8190555050565b6131cf613339565b6131d7611d50565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561321c573d6000803e3d6000fd5b50565b600b5481565b61322d613339565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613279613339565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156132e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132e090613dd4565b60405180910390fd5b6132f281613551565b50565b6132fd613339565b8060098190555050565b60085481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b6133416139aa565b73ffffffffffffffffffffffffffffffffffffffff1661335f611d50565b73ffffffffffffffffffffffffffffffffffffffff16146133b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ac90613eb4565b60405180910390fd5b565b6000600454600f54426133ca9190614123565b6133d491906140c9565b816133df9190614042565b905080601060008282546133f39190614042565b9250508190555042600f8190555050565b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154426134979190614123565b6134a191906140c9565b816134ac9190614042565b905080601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008282546135009190614042565b9250508190555042601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016136709190613d08565b60206040518083038186803b15801561368857600080fd5b505afa15801561369c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c09190613b0f565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015414801561379b5750600b54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b156137ea57600754601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b6001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154141561387f57600854601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b6002601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154141561391457600954601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b6003601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154106139a857600a54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055505b565b600033905090565b6000813590506139c1816144f2565b92915050565b6000813590506139d681614509565b92915050565b6000815190506139eb81614509565b92915050565b600081359050613a0081614520565b92915050565b600081519050613a1581614520565b92915050565b600060208284031215613a3157613a306142b8565b5b6000613a3f848285016139b2565b91505092915050565b60008060408385031215613a5f57613a5e6142b8565b5b6000613a6d858286016139b2565b9250506020613a7e858286016139f1565b9150509250929050565b600060208284031215613a9e57613a9d6142b8565b5b6000613aac848285016139c7565b91505092915050565b600060208284031215613acb57613aca6142b8565b5b6000613ad9848285016139dc565b91505092915050565b600060208284031215613af857613af76142b8565b5b6000613b06848285016139f1565b91505092915050565b600060208284031215613b2557613b246142b8565b5b6000613b3384828501613a06565b91505092915050565b613b4581614157565b82525050565b613b5481614169565b82525050565b613b638161419f565b82525050565b613b72816141b1565b82525050565b6000613b85602683614031565b9150613b90826142bd565b604082019050919050565b6000613ba8602583614031565b9150613bb38261430c565b604082019050919050565b6000613bcb601e83614031565b9150613bd68261435b565b602082019050919050565b6000613bee601d83614031565b9150613bf982614384565b602082019050919050565b6000613c11601c83614031565b9150613c1c826143ad565b602082019050919050565b6000613c34602283614031565b9150613c3f826143d6565b604082019050919050565b6000613c57601f83614031565b9150613c6282614425565b602082019050919050565b6000613c7a602083614031565b9150613c858261444e565b602082019050919050565b6000613c9d601483614031565b9150613ca882614477565b602082019050919050565b6000613cc0601183614031565b9150613ccb826144a0565b602082019050919050565b6000613ce3601183614031565b9150613cee826144c9565b602082019050919050565b613d0281614195565b82525050565b6000602082019050613d1d6000830184613b3c565b92915050565b6000606082019050613d386000830186613b3c565b613d456020830185613b3c565b613d526040830184613cf9565b949350505050565b6000604082019050613d6f6000830185613b3c565b613d7c6020830184613cf9565b9392505050565b6000602082019050613d986000830184613b4b565b92915050565b6000602082019050613db36000830184613b5a565b92915050565b6000602082019050613dce6000830184613b69565b92915050565b60006020820190508181036000830152613ded81613b78565b9050919050565b60006020820190508181036000830152613e0d81613b9b565b9050919050565b60006020820190508181036000830152613e2d81613bbe565b9050919050565b60006020820190508181036000830152613e4d81613be1565b9050919050565b60006020820190508181036000830152613e6d81613c04565b9050919050565b60006020820190508181036000830152613e8d81613c27565b9050919050565b60006020820190508181036000830152613ead81613c4a565b9050919050565b60006020820190508181036000830152613ecd81613c6d565b9050919050565b60006020820190508181036000830152613eed81613c90565b9050919050565b60006020820190508181036000830152613f0d81613cb3565b9050919050565b60006020820190508181036000830152613f2d81613cd6565b9050919050565b6000602082019050613f496000830184613cf9565b92915050565b6000606082019050613f646000830186613cf9565b613f716020830185613cf9565b613f7e6040830184613cf9565b949350505050565b600061016082019050613f9c600083018e613cf9565b613fa9602083018d613cf9565b613fb6604083018c613cf9565b613fc3606083018b613cf9565b613fd0608083018a613cf9565b613fdd60a0830189613cf9565b613fea60c0830188613cf9565b613ff760e0830187613cf9565b614005610100830186613cf9565b614013610120830185613cf9565b614021610140830184613b4b565b9c9b505050505050505050505050565b600082825260208201905092915050565b600061404d82614195565b915061405883614195565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561408d5761408c61425a565b5b828201905092915050565b60006140a382614195565b91506140ae83614195565b9250826140be576140bd614289565b5b828204905092915050565b60006140d482614195565b91506140df83614195565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141185761411761425a565b5b828202905092915050565b600061412e82614195565b915061413983614195565b92508282101561414c5761414b61425a565b5b828203905092915050565b600061416282614175565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006141aa826141c3565b9050919050565b60006141bc826141c3565b9050919050565b60006141ce826141d5565b9050919050565b60006141e082614175565b9050919050565b60006141f282614195565b915060008214156142065761420561425a565b5b600182039050919050565b600061421c82614195565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561424f5761424e61425a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e742073656e74206d7573742062652067726561746572207468616e60008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f66656520746f20686967682074727920616761696e2c20333025206d61780000600082015250565b7f596f75204e656564204d6f726520546f6b656e7320546f205374616b65000000600082015250565b7f4e6f7420456e6f7567682046756e647320496e20547265617375727900000000600082015250565b7f546f6b656e7320636f756c64206e6f742062652073656e7420746f205374616b60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f7520646f6e277420686176652074686174206d616e7920746f6b656e7300600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b7f5354414b494e4720495320504155534544000000000000000000000000000000600082015250565b7f5374616b696e6720697320706175736564000000000000000000000000000000600082015250565b6144fb81614157565b811461450657600080fd5b50565b61451281614169565b811461451d57600080fd5b50565b61452981614195565b811461453457600080fd5b5056fea2646970667358221220dbedd15994e80f90091206990dc3b7d2e55203183463a174cce9f1907ee904d964736f6c63430008070033

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

000000000000000000000000d8b90d2e680ea535eacce1b025c998b347892f6800000000000000000000000009d535b5ceb3a447bebd3b415281299b60a437e5000000000000000000000000a3448c405b665503163053f8caec2595b7f415bd

-----Decoded View---------------
Arg [0] : _token (address): 0xd8B90D2e680ea535eAcCe1b025c998B347892f68
Arg [1] : _nft (address): 0x09D535b5ceb3a447bEBD3b415281299B60a437e5
Arg [2] : _treasury (address): 0xA3448C405b665503163053F8caEC2595B7f415Bd

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000d8b90d2e680ea535eacce1b025c998b347892f68
Arg [1] : 00000000000000000000000009d535b5ceb3a447bebd3b415281299b60a437e5
Arg [2] : 000000000000000000000000a3448c405b665503163053f8caec2595b7f415bd


Deployed Bytecode Sourcemap

15845:14718:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28149:1892;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16919:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18752:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;16732:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18810:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;15914:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30049:468;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22218:3046;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16488:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16880:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14916:103;;;;;;;;;;;;;:::i;:::-;;16302:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17127:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17865:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14268:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16182:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18091:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20382:1828;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16446:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25272:2322;;;;;;;;;;;;;:::i;:::-;;17028:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27602:537;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16113:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16689:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16584:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16782:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17424:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16362:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16838:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17654:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17976:107;;;;;;;;;;;;;:::i;:::-;;16531:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17543:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15174:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17226:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16405:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15888:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16243:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28149:1892;28209:14;28236:12;28251:21;28267:4;28251:15;:21::i;:::-;28236:36;;28283:17;28303:12;:18;28316:4;28303:18;;;;;;;;;;;;;;;:32;;;28283:52;;28346:19;28368:12;:18;28381:4;28368:18;;;;;;;;;;;;;;;:34;;;28346:56;;28413:23;28451:20;28486:28;28517:12;:18;28530:4;28517:18;;;;;;;;;;;;;;;:33;;;28486:64;;28568:9;28580:11;28568:23;;28563:1436;28597:11;;28593:1;:15;28563:1436;;;28716:1;28679:12;:18;28692:4;28679:18;;;;;;;;;;;;;;;:33;;;:38;28675:625;;;28738:12;28782:9;28753:11;:16;28767:1;28765;:3;;;;:::i;:::-;28753:16;;;;;;;;;;;:26;;;:38;;;;:::i;:::-;28738:53;;28897:12;:18;28910:4;28897:18;;;;;;;;;;;;;;;:31;;;28890:4;:38;;;;:::i;:::-;28867:61;;28947:27;29011:11;:16;29025:1;29023;:3;;;;:::i;:::-;29011:16;;;;;;;;;;;:31;;;29001:6;28978:20;:29;;;;:::i;:::-;28977:65;;;;:::i;:::-;28947:95;;29127:6;29100:11;:16;29114:1;29112;:3;;;;:::i;:::-;29100:16;;;;;;;;;;;:23;;;29078:19;:45;;;;:::i;:::-;29077:56;;;;:::i;:::-;29061:72;;;;;:::i;:::-;;;29192:3;29185:4;29170:12;:19;;;;:::i;:::-;:25;;;;:::i;:::-;29152:43;;29226:11;:16;29240:1;29238;:3;;;;:::i;:::-;29226:16;;;;;;;;;;;:26;;;29214:38;;29271:13;;;;;:::i;:::-;;;;28719:581;;28675:625;29356:1;29320:12;:18;29333:4;29320:18;;;;;;;;;;;;;;;:33;;;:37;29316:672;;;29378:12;29422;:18;29435:4;29422:18;;;;;;;;;;;;;;;:32;;;29393:11;:16;29407:1;29405;:3;;;;:::i;:::-;29393:16;;;;;;;;;;;:26;;;:61;;;;:::i;:::-;29378:76;;29473:31;29550:20;29515:12;:18;29528:4;29515:18;;;;;;;;;;;;;;;:31;;;29508:4;:38;;;;:::i;:::-;29507:63;;;;:::i;:::-;29473:97;;29589:27;29656:11;:16;29670:1;29668;:3;;;;:::i;:::-;29656:16;;;;;;;;;;;:31;;;29646:6;29620:23;:32;;;;:::i;:::-;29619:68;;;;:::i;:::-;29589:98;;29772:6;29745:11;:16;29759:1;29757;:3;;;;:::i;:::-;29745:16;;;;;;;;;;;:23;;;29723:19;:45;;;;:::i;:::-;29722:56;;;;:::i;:::-;29706:72;;;;;:::i;:::-;;;29837:3;29830:4;29815:12;:19;;;;:::i;:::-;:25;;;;:::i;:::-;29797:43;;29882:1;29859:24;;29914:11;:16;29928:1;29926;:3;;;;:::i;:::-;29914:16;;;;;;;;;;;:26;;;29902:38;;29959:13;;;;;:::i;:::-;;;;29359:629;;;29316:672;28610:3;;;;;:::i;:::-;;;;28563:1436;;;;30018:15;30011:22;;;;;;;;28149:1892;;;:::o;16919:101::-;14154:13;:11;:13::i;:::-;17006:6:::1;16990:13;;:22;;;;;;;;;;;;;;;;;;16919:101:::0;:::o;18752:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16732:41::-;;;;:::o;18810:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15914:18::-;;;;;;;;;;;;;:::o;30049:468::-;14154:13;:11;:13::i;:::-;30143:1:::1;30133:7;:11;30125:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;30198:28;:26;:28::i;:::-;30254:4;30238:31;;:40;30270:7;30238:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;30290:13;30321:1;30307:11;;:15;;;;:::i;:::-;30290:33;;30356:52;;;;;;;;30367:15;30356:52;;;;30384:7;30356:52;;;;30393:14;;30356:52;;::::0;30335:11:::1;:18;30347:5;30335:18;;;;;;;;;;;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;30437:1;30420:14;:18;;;;30467:15;30450:14;:32;;;;30494:11;;:14;;;;;;;;;:::i;:::-;;;;;;30113:404;30049:468:::0;:::o;22218:3046::-;22319:7;22278:12;:24;22291:10;22278:24;;;;;;;;;;;;;;;:37;;;:48;;22270:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;22410:7;22381:5;;;;;;;;;;;:15;;;22397:8;;;;;;;;;;;22381:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;22373:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;22470:13;;;;;;;;;;;22469:14;22461:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;22562:4;22525:41;;:12;:24;22538:10;22525:24;;;;;;;;;;;;;;;:33;;;;;;;;;;;;:41;;;22517:50;;;;;;22580:20;22603:28;22620:10;22603:16;:28::i;:::-;22580:51;;22665:1;22650:12;:16;22646:63;;;22686:10;:8;:10::i;:::-;22646:63;22721:28;:26;:28::i;:::-;22762:22;22827:7;22787:12;:24;22800:10;22787:24;;;;;;;;;;;;;;;:37;;;:47;;;;:::i;:::-;22762:72;;22845:22;22882:23;22920:21;22979:8;;22962:14;:25;22958:1421;;;23021:12;:24;23034:10;23021:24;;;;;;;;;;;;;;;:37;;;23004:54;;23117:15;23079:12;:24;23092:10;23079:24;;;;;;;;;;;;;;;:35;;;:53;:109;;;;;23178:10;;23136:12;:24;23149:10;23136:24;;;;;;;;;;;;;;;:38;;;:52;23079:109;23075:393;;;23261:3;23244:14;23227;;:31;;;;:::i;:::-;:37;;;;:::i;:::-;23209:55;;23316:15;23299:14;:32;;;;:::i;:::-;23283:48;;23358:5;;;;;;;;;;;:18;;;23377:8;;;;;;;;;;;23387:10;23399:13;23358:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23350:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;23075:393;23527:15;23488:12;:24;23501:10;23488:24;;;;;;;;;;;;;;;:35;;;:54;23484:198;;23571:5;;;;;;;;;;;:18;;;23590:8;;;;;;;;;;;23600:10;23612:14;23571:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23563:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;23484:198;23738:1;23698:12;:24;23711:10;23698:24;;;;;;;;;;;;;;;:37;;:41;;;;23789:1;23754:12;:24;23767:10;23754:24;;;;;;;;;;;;;;;:32;;:36;;;;23846:1;23805:12;:24;23818:10;23805:24;;;;;;;;;;;;;;;:38;;:42;;;;23904:1;23862:12;:24;23875:10;23862:24;;;;;;;;;;;;;;;:39;;:43;;;;23959:1;23920:12;:24;23933:10;23920:24;;;;;;;;;;;;;;;:36;;:40;;;;24014:1;23975:12;:24;23988:10;23975:24;;;;;;;;;;;;;;;:36;;:40;;;;24068:1;24030:12;:24;24043:10;24030:24;;;;;;;;;;;;;;;:35;;:39;;;;24125:1;24084:12;:24;24097:10;24084:24;;;;;;;;;;;;;;;:38;;:42;;;;24184:1;24141:12;:24;24154:10;24141:24;;;;;;;;;;;;;;;:40;;:44;;;;24238:1;24200:12;:24;24213:10;24200:24;;;;;;;;;;;;;;;:35;;:39;;;;24290:5;24254:12;:24;24267:10;24254:24;;;;;;;;;;;;;;;:33;;;:41;;;;;;;;;;;;;;;;;;24328:14;24312:12;;:30;;;;;;;:::i;:::-;;;;;;;;24357:7;;:10;;;;;;;;;:::i;:::-;;;;;;22958:1421;24413:8;;24395:14;:26;24391:866;;24455:7;24438:24;;24521:15;24483:12;:24;24496:10;24483:24;;;;;;;;;;;;;;;:35;;;:53;:109;;;;;24582:10;;24540:12;:24;24553:10;24540:24;;;;;;;;;;;;;;;:38;;;:52;24483:109;24479:393;;;24665:3;24648:14;24631;;:31;;;;:::i;:::-;:37;;;;:::i;:::-;24613:55;;24720:15;24703:14;:32;;;;:::i;:::-;24687:48;;24762:5;;;;;;;;;;;:18;;;24781:8;;;;;;;;;;;24791:10;24803:13;24762:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24754:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;24479:393;24931:15;24892:12;:24;24905:10;24892:24;;;;;;;;;;;;;;;:35;;;:54;24888:198;;24975:5;;;;;;;;;;;:18;;;24994:8;;;;;;;;;;;25004:10;25016:14;24975:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24967:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24888:198;25102:26;:24;:26::i;:::-;25184:14;25143:12;:24;25156:10;25143:24;;;;;;;;;;;;;;;:37;;;:55;;;;;;;:::i;:::-;;;;;;;;25231:14;25215:12;;:30;;;;;;;:::i;:::-;;;;;;;;24391:866;22259:3005;;;;;22218:3046;:::o;16488:26::-;;;;:::o;16880:30::-;;;;:::o;14916:103::-;14154:13;:11;:13::i;:::-;14981:30:::1;15008:1;14981:18;:30::i;:::-;14916:103::o:0;16302:31::-;;;;:::o;17127:91::-;14154:13;:11;:13::i;:::-;17200:6:::1;17192:5;:14;;;;17127:91:::0;:::o;17325:::-;14154:13;:11;:13::i;:::-;17398:6:::1;17390:5;:14;;;;17325:91:::0;:::o;17865:103::-;14154:13;:11;:13::i;:::-;17948:9:::1;17937:8;:20;;;;17865:103:::0;:::o;14268:87::-;14314:7;14341:6;;;;;;;;;;;14334:13;;14268:87;:::o;16182:31::-;;;;:::o;18091:168::-;14154:13;:11;:13::i;:::-;18202::::1;18195:30;;;18226:10;18238:12;18195:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18091:168:::0;;:::o;20382:1828::-;20457:5;20440:22;;:13;;;;;;;;;;;:22;;;20432:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;20495:19;20524:5;;;;;;;;;;;20517:23;;;20541:10;20517:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20495:57;;20588:7;20573:11;:22;;20565:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;20692:8;;20650:12;:24;20663:10;20650:24;;;;;;;;;;;;;;;:37;;;20640:7;:47;;;;:::i;:::-;20639:61;;20631:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;20755:28;:26;:28::i;:::-;20794:20;20817:28;20834:10;20817:16;:28::i;:::-;20794:51;;20879:1;20864:12;:16;20860:63;;;20900:10;:8;:10::i;:::-;20860:63;20935:5;;;;;;;;;;;:13;;;20957:4;20964:7;20935:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20983:5;;;;;;;;;;;:13;;;20997:8;;;;;;;;;;;21007:7;20983:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21026:5;;;;;;;;;;;:18;;;21045:10;21057:8;;;;;;;;;;;21067:7;21026:49;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21137:4;21100:41;;:12;:24;21113:10;21100:24;;;;;;;;;;;;;;;:33;;;;;;;;;;;;:41;;;21096:201;;;21158:26;:24;:26::i;:::-;21240:7;21199:12;:24;21212:10;21199:24;;;;;;;;;;;;;;;:37;;;:48;;;;;;;:::i;:::-;;;;;;;;21278:7;21262:12;;:23;;;;;;;:::i;:::-;;;;;;;;21096:201;21350:5;21313:42;;:12;:24;21326:10;21313:24;;;;;;;;;;;;;;;:33;;;;;;;;;;;;:42;;;21309:894;;;21372:18;21401:3;;;;;;;;;;;21393:22;;;21416:10;21393:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21372:55;;21483:10;;21442:12;:24;21455:10;21442:24;;;;;;;;;;;;;;;:38;;:51;;;;21564:10;;21546:15;:28;;;;:::i;:::-;21508:12;:24;21521:10;21508:24;;;;;;;;;;;;;;;:35;;:66;;;;21630:7;21589:12;:24;21602:10;21589:24;;;;;;;;;;;;;;;:37;;;:48;;;;;;;:::i;:::-;;;;;;;;21691:15;21652:12;:24;21665:10;21652:24;;;;;;;;;;;;;;;:36;;:54;;;;21757:4;21721:12;:24;21734:10;21721:24;;;;;;;;;;;;;;;:33;;;:40;;;;;;;;;;;;;;;;;;21818:1;21776:12;:24;21789:10;21776:24;;;;;;;;;;;;;;;:39;;:43;;;;21869:10;21834:12;:24;21847:10;21834:24;;;;;;;;;;;;;;;:32;;:45;;;;21935:15;21894:12;:24;21907:10;21894:24;;;;;;;;;;;;;;;:38;;:56;;;;22003:1;21965:12;:24;21978:10;21965:24;;;;;;;;;;;;;;;:35;;:39;;;;22062:11;;22019:12;:24;22032:10;22019:24;;;;;;;;;;;;;;;:40;;:54;;;;22090:22;:20;:22::i;:::-;22153:7;22137:12;;:23;;;;;;;:::i;:::-;;;;;;;;22186:1;22175:7;;:12;;;;;;;:::i;:::-;;;;;;;;21357:846;21309:894;20421:1789;;20382:1828;:::o;16446:25::-;;;;:::o;25272:2322::-;25362:11;;25319:12;:24;25332:10;25319:24;;;;;;;;;;;;;;;:40;;;:54;25311:63;;;;;;25430:4;25393:41;;:12;:24;25406:10;25393:24;;;;;;;;;;;;;;;:33;;;;;;;;;;;;:41;;;25385:50;;;;;;25446:22;:20;:22::i;:::-;25493:20;25539:9;25551:12;:24;25564:10;25551:24;;;;;;;;;;;;;;;:40;;;25539:52;;25534:1582;25597:11;;25593:1;:15;25534:1582;;;25682:1;25639:12;:24;25652:10;25639:24;;;;;;;;;;;;;;;:39;;;:44;25635:646;;;25708:12;25752;:24;25765:10;25752:24;;;;;;;;;;;;;;;:38;;;25723:11;:16;25737:1;25735;:3;;;;:::i;:::-;25723:16;;;;;;;;;;;:26;;;:67;;;;:::i;:::-;25708:82;;25813:28;25852:12;:24;25865:10;25852:24;;;;;;;;;;;;;;;:37;;;25845:4;:44;;;;:::i;:::-;25813:77;;25913:27;25978:11;:16;25992:1;25990;:3;;;;:::i;:::-;25978:16;;;;;;;;;;;:31;;;25968:6;25945:20;:29;;;;:::i;:::-;25944:65;;;;:::i;:::-;25913:97;;26099:6;26072:11;:16;26086:1;26084;:3;;;;:::i;:::-;26072:16;;;;;;;;;;;:23;;;26050:19;:45;;;;:::i;:::-;26049:56;;;;:::i;:::-;26033:72;;;;;:::i;:::-;;;26169:11;:16;26183:1;26181;:3;;;;:::i;:::-;26169:16;;;;;;;;;;;:26;;;26128:12;:24;26141:10;26128:24;;;;;;;;;;;;;;;:38;;:67;;;;26218:12;:24;26231:10;26218:24;;;;;;;;;;;;;;;:40;;;:43;;;;;;;;;:::i;:::-;;;;;;25685:596;;;25635:646;26363:1;26321:12;:24;26334:10;26321:24;;;;;;;;;;;;;;;:39;;;:43;26317:778;;;26389:12;26433;:24;26446:10;26433:24;;;;;;;;;;;;;;;:38;;;26404:11;:16;26418:1;26416;:3;;;;:::i;:::-;26404:16;;;;;;;;;;;:26;;;:67;;;;:::i;:::-;26389:82;;26517:28;26598:12;:24;26611:10;26598:24;;;;;;;;;;;;;;;:39;;;26557:12;:24;26570:10;26557:24;;;;;;;;;;;;;;;:37;;;26550:4;:44;;;;:::i;:::-;26549:88;;;;:::i;:::-;26517:121;;26661:27;26726:11;:16;26740:1;26738;:3;;;;:::i;:::-;26726:16;;;;;;;;;;;:31;;;26716:6;26693:20;:29;;;;:::i;:::-;26692:65;;;;:::i;:::-;26661:97;;26847:6;26820:11;:16;26834:1;26832;:3;;;;:::i;:::-;26820:16;;;;;;;;;;;:23;;;26798:19;:45;;;;:::i;:::-;26797:56;;;;:::i;:::-;26781:72;;;;;:::i;:::-;;;26918:1;26876:12;:24;26889:10;26876:24;;;;;;;;;;;;;;;:39;;:43;;;;26983:11;:16;26997:1;26995;:3;;;;:::i;:::-;26983:16;;;;;;;;;;;:26;;;26942:12;:24;26955:10;26942:24;;;;;;;;;;;;;;;:38;;:67;;;;27032:12;:24;27045:10;27032:24;;;;;;;;;;;;;;;:40;;;:43;;;;;;;;;:::i;:::-;;;;;;26366:729;;;26317:778;25610:3;;;;;:::i;:::-;;;;25534:1582;;;;27128:23;27210:3;27170:12;:24;27183:10;27170:24;;;;;;;;;;;;;;;:36;;;27155:12;:51;;;;:::i;:::-;27154:59;;;;:::i;:::-;27128:85;;27232:10;27224:28;;:45;27253:15;27224:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27281:20;27319:15;27304:12;:30;;;;:::i;:::-;27281:53;;27366:1;27351:12;:16;27347:89;;;27392:8;;;;;;;;;;;27384:26;;:40;27411:12;27384:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27347:89;27495:15;27456:12;:24;27469:10;27456:24;;;;;;;;;;;;;;;:35;;;:54;;;;;;;:::i;:::-;;;;;;;;27537:15;27521:12;;:31;;;;;;;:::i;:::-;;;;;;;;27574:12;27563:7;;:23;;;;;;;:::i;:::-;;;;;;;;25299:2295;;;25272:2322::o;17028:91::-;14154:13;:11;:13::i;:::-;17101:6:::1;17093:5;:14;;;;17028:91:::0;:::o;27602:537::-;27663:7;27693:14;27718:3;;;;;;;;;;;27710:22;;;27733:4;27710:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27693:45;;27750:12;27794:1;27784:6;:11;:61;;;;;27835:10;;27799:12;:18;27812:4;27799:18;;;;;;;;;;;;;;;:32;;;:46;27784:61;27780:109;;;27871:5;;27864:12;;27780:109;27917:1;27907:6;:11;27903:59;;;27944:5;;27937:12;;27903:59;27990:1;27980:6;:11;27976:59;;;28017:5;;28010:12;;27976:59;28063:1;28053:6;:11;28049:59;;28090:5;;28083:12;;28049:59;28126:4;28119:11;;;;27602:537;;;:::o;16113:32::-;;;;;;;;;;;;;:::o;16689:34::-;;;;:::o;16584:26::-;;;;:::o;16782:47::-;;;;:::o;17424:111::-;14154:13;:11;:13::i;:::-;17512:11:::1;17499:10;:24;;;;17424:111:::0;:::o;16362:25::-;;;;:::o;16838:33::-;;;;:::o;17654:203::-;14154:13;:11;:13::i;:::-;17761:2:::1;17742:15;:21;;17734:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17831:15;17814:14;:32;;;;17654:203:::0;:::o;17976:107::-;14154:13;:11;:13::i;:::-;18035:7:::1;:5;:7::i;:::-;18027:25;;:48;18053:21;18027:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17976:107::o:0;16531:35::-;;;;:::o;17543:103::-;14154:13;:11;:13::i;:::-;17626:9:::1;17615:8;;:20;;;;;;;;;;;;;;;;;;17543:103:::0;:::o;15174:201::-;14154:13;:11;:13::i;:::-;15283:1:::1;15263:22;;:8;:22;;;;15255:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15339:28;15358:8;15339:18;:28::i;:::-;15174:201:::0;:::o;17226:91::-;14154:13;:11;:13::i;:::-;17299:6:::1;17291:5;:14;;;;17226:91:::0;:::o;16405:25::-;;;;:::o;15888:19::-;;;;;;;;;;;;;:::o;16243:26::-;;;;:::o;14433:132::-;14508:12;:10;:12::i;:::-;14497:23;;:7;:5;:7::i;:::-;:23;;;14489:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14433:132::o;19103:233::-;19161:14;19238:12;;19220:14;;19202:15;:32;;;;:::i;:::-;19201:49;;;;:::i;:::-;19191:59;;;;;:::i;:::-;;;19279:6;19261:14;;:24;;;;;;;:::i;:::-;;;;;;;;19313:15;19296:14;:32;;;;19150:186;19103:233::o;19344:328::-;19400:14;19500:12;:24;19513:10;19500:24;;;;;;;;;;;;;;;:37;;;19458:12;:24;19471:10;19458:24;;;;;;;;;;;;;;;:38;;;19440:15;:56;;;;:::i;:::-;19439:98;;;;:::i;:::-;19429:108;;;;;:::i;:::-;;;19591:6;19548:12;:24;19561:10;19548:24;;;;;;;;;;;;;;;:39;;;:49;;;;;;;:::i;:::-;;;;;;;;19649:15;19608:12;:24;19621:10;19608:24;;;;;;;;;;;;;;;:38;;:56;;;;19389:283;19344:328::o;15535:191::-;15609:16;15628:6;;;;;;;;;;;15609:25;;15654:8;15645:6;;:17;;;;;;;;;;;;;;;;;;15709:8;15678:40;;15699:8;15678:40;;;;;;;;;;;;15598:128;15535:191;:::o;19680:694::-;19776:3;;;;;;;;;;;19768:22;;;19791:10;19768:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19733:12;:24;19746:10;19733:24;;;;;;;;;;;;;;;:32;;:69;;;;19855:1;19819:12;:24;19832:10;19819:24;;;;;;;;;;;;;;;:32;;;:37;:93;;;;;19902:10;;19860:12;:24;19873:10;19860:24;;;;;;;;;;;;;;;:38;;;:52;19819:93;19815:171;;;19969:5;;19930:12;:24;19943:10;19930:24;;;;;;;;;;;;;;;:36;;:44;;;;19815:171;20038:1;20002:12;:24;20015:10;20002:24;;;;;;;;;;;;;;;:32;;;:37;19998:115;;;20096:5;;20057:12;:24;20070:10;20057:24;;;;;;;;;;;;;;;:36;;:44;;;;19998:115;20165:1;20129:12;:24;20142:10;20129:24;;;;;;;;;;;;;;;:32;;;:37;20125:115;;;20223:5;;20184:12;:24;20197:10;20184:24;;;;;;;;;;;;;;;:36;;:44;;;;20125:115;20292:1;20256:12;:24;20269:10;20256:24;;;;;;;;;;;;;;;:32;;;:37;20252:115;;20350:5;;20311:12;:24;20324:10;20311:24;;;;;;;;;;;;;;;:36;;:44;;;;20252:115;19680:694::o;12819:98::-;12872:7;12899:10;12892:17;;12819:98;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:133::-;195:5;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;152:133;;;;:::o;291:137::-;345:5;376:6;370:13;361:22;;392:30;416:5;392:30;:::i;:::-;291:137;;;;:::o;434:139::-;480:5;518:6;505:20;496:29;;534:33;561:5;534:33;:::i;:::-;434:139;;;;:::o;579:143::-;636:5;667:6;661:13;652:22;;683:33;710:5;683:33;:::i;:::-;579:143;;;;:::o;728:329::-;787:6;836:2;824:9;815:7;811:23;807:32;804:119;;;842:79;;:::i;:::-;804:119;962:1;987:53;1032:7;1023:6;1012:9;1008:22;987:53;:::i;:::-;977:63;;933:117;728:329;;;;:::o;1063:474::-;1131:6;1139;1188:2;1176:9;1167:7;1163:23;1159:32;1156:119;;;1194:79;;:::i;:::-;1156:119;1314:1;1339:53;1384:7;1375:6;1364:9;1360:22;1339:53;:::i;:::-;1329:63;;1285:117;1441:2;1467:53;1512:7;1503:6;1492:9;1488:22;1467:53;:::i;:::-;1457:63;;1412:118;1063:474;;;;;:::o;1543:323::-;1599:6;1648:2;1636:9;1627:7;1623:23;1619:32;1616:119;;;1654:79;;:::i;:::-;1616:119;1774:1;1799:50;1841:7;1832:6;1821:9;1817:22;1799:50;:::i;:::-;1789:60;;1745:114;1543:323;;;;:::o;1872:345::-;1939:6;1988:2;1976:9;1967:7;1963:23;1959:32;1956:119;;;1994:79;;:::i;:::-;1956:119;2114:1;2139:61;2192:7;2183:6;2172:9;2168:22;2139:61;:::i;:::-;2129:71;;2085:125;1872:345;;;;:::o;2223:329::-;2282:6;2331:2;2319:9;2310:7;2306:23;2302:32;2299:119;;;2337:79;;:::i;:::-;2299:119;2457:1;2482:53;2527:7;2518:6;2507:9;2503:22;2482:53;:::i;:::-;2472:63;;2428:117;2223:329;;;;:::o;2558:351::-;2628:6;2677:2;2665:9;2656:7;2652:23;2648:32;2645:119;;;2683:79;;:::i;:::-;2645:119;2803:1;2828:64;2884:7;2875:6;2864:9;2860:22;2828:64;:::i;:::-;2818:74;;2774:128;2558:351;;;;:::o;2915:118::-;3002:24;3020:5;3002:24;:::i;:::-;2997:3;2990:37;2915:118;;:::o;3039:109::-;3120:21;3135:5;3120:21;:::i;:::-;3115:3;3108:34;3039:109;;:::o;3154:159::-;3255:51;3300:5;3255:51;:::i;:::-;3250:3;3243:64;3154:159;;:::o;3319:161::-;3421:52;3467:5;3421:52;:::i;:::-;3416:3;3409:65;3319:161;;:::o;3486:366::-;3628:3;3649:67;3713:2;3708:3;3649:67;:::i;:::-;3642:74;;3725:93;3814:3;3725:93;:::i;:::-;3843:2;3838:3;3834:12;3827:19;;3486:366;;;:::o;3858:::-;4000:3;4021:67;4085:2;4080:3;4021:67;:::i;:::-;4014:74;;4097:93;4186:3;4097:93;:::i;:::-;4215:2;4210:3;4206:12;4199:19;;3858:366;;;:::o;4230:::-;4372:3;4393:67;4457:2;4452:3;4393:67;:::i;:::-;4386:74;;4469:93;4558:3;4469:93;:::i;:::-;4587:2;4582:3;4578:12;4571:19;;4230:366;;;:::o;4602:::-;4744:3;4765:67;4829:2;4824:3;4765:67;:::i;:::-;4758:74;;4841:93;4930:3;4841:93;:::i;:::-;4959:2;4954:3;4950:12;4943:19;;4602:366;;;:::o;4974:::-;5116:3;5137:67;5201:2;5196:3;5137:67;:::i;:::-;5130:74;;5213:93;5302:3;5213:93;:::i;:::-;5331:2;5326:3;5322:12;5315:19;;4974:366;;;:::o;5346:::-;5488:3;5509:67;5573:2;5568:3;5509:67;:::i;:::-;5502:74;;5585:93;5674:3;5585:93;:::i;:::-;5703:2;5698:3;5694:12;5687:19;;5346:366;;;:::o;5718:::-;5860:3;5881:67;5945:2;5940:3;5881:67;:::i;:::-;5874:74;;5957:93;6046:3;5957:93;:::i;:::-;6075:2;6070:3;6066:12;6059:19;;5718:366;;;:::o;6090:::-;6232:3;6253:67;6317:2;6312:3;6253:67;:::i;:::-;6246:74;;6329:93;6418:3;6329:93;:::i;:::-;6447:2;6442:3;6438:12;6431:19;;6090:366;;;:::o;6462:::-;6604:3;6625:67;6689:2;6684:3;6625:67;:::i;:::-;6618:74;;6701:93;6790:3;6701:93;:::i;:::-;6819:2;6814:3;6810:12;6803:19;;6462:366;;;:::o;6834:::-;6976:3;6997:67;7061:2;7056:3;6997:67;:::i;:::-;6990:74;;7073:93;7162:3;7073:93;:::i;:::-;7191:2;7186:3;7182:12;7175:19;;6834:366;;;:::o;7206:::-;7348:3;7369:67;7433:2;7428:3;7369:67;:::i;:::-;7362:74;;7445:93;7534:3;7445:93;:::i;:::-;7563:2;7558:3;7554:12;7547:19;;7206:366;;;:::o;7578:118::-;7665:24;7683:5;7665:24;:::i;:::-;7660:3;7653:37;7578:118;;:::o;7702:222::-;7795:4;7833:2;7822:9;7818:18;7810:26;;7846:71;7914:1;7903:9;7899:17;7890:6;7846:71;:::i;:::-;7702:222;;;;:::o;7930:442::-;8079:4;8117:2;8106:9;8102:18;8094:26;;8130:71;8198:1;8187:9;8183:17;8174:6;8130:71;:::i;:::-;8211:72;8279:2;8268:9;8264:18;8255:6;8211:72;:::i;:::-;8293;8361:2;8350:9;8346:18;8337:6;8293:72;:::i;:::-;7930:442;;;;;;:::o;8378:332::-;8499:4;8537:2;8526:9;8522:18;8514:26;;8550:71;8618:1;8607:9;8603:17;8594:6;8550:71;:::i;:::-;8631:72;8699:2;8688:9;8684:18;8675:6;8631:72;:::i;:::-;8378:332;;;;;:::o;8716:210::-;8803:4;8841:2;8830:9;8826:18;8818:26;;8854:65;8916:1;8905:9;8901:17;8892:6;8854:65;:::i;:::-;8716:210;;;;:::o;8932:250::-;9039:4;9077:2;9066:9;9062:18;9054:26;;9090:85;9172:1;9161:9;9157:17;9148:6;9090:85;:::i;:::-;8932:250;;;;:::o;9188:252::-;9296:4;9334:2;9323:9;9319:18;9311:26;;9347:86;9430:1;9419:9;9415:17;9406:6;9347:86;:::i;:::-;9188:252;;;;:::o;9446:419::-;9612:4;9650:2;9639:9;9635:18;9627:26;;9699:9;9693:4;9689:20;9685:1;9674:9;9670:17;9663:47;9727:131;9853:4;9727:131;:::i;:::-;9719:139;;9446:419;;;:::o;9871:::-;10037:4;10075:2;10064:9;10060:18;10052:26;;10124:9;10118:4;10114:20;10110:1;10099:9;10095:17;10088:47;10152:131;10278:4;10152:131;:::i;:::-;10144:139;;9871:419;;;:::o;10296:::-;10462:4;10500:2;10489:9;10485:18;10477:26;;10549:9;10543:4;10539:20;10535:1;10524:9;10520:17;10513:47;10577:131;10703:4;10577:131;:::i;:::-;10569:139;;10296:419;;;:::o;10721:::-;10887:4;10925:2;10914:9;10910:18;10902:26;;10974:9;10968:4;10964:20;10960:1;10949:9;10945:17;10938:47;11002:131;11128:4;11002:131;:::i;:::-;10994:139;;10721:419;;;:::o;11146:::-;11312:4;11350:2;11339:9;11335:18;11327:26;;11399:9;11393:4;11389:20;11385:1;11374:9;11370:17;11363:47;11427:131;11553:4;11427:131;:::i;:::-;11419:139;;11146:419;;;:::o;11571:::-;11737:4;11775:2;11764:9;11760:18;11752:26;;11824:9;11818:4;11814:20;11810:1;11799:9;11795:17;11788:47;11852:131;11978:4;11852:131;:::i;:::-;11844:139;;11571:419;;;:::o;11996:::-;12162:4;12200:2;12189:9;12185:18;12177:26;;12249:9;12243:4;12239:20;12235:1;12224:9;12220:17;12213:47;12277:131;12403:4;12277:131;:::i;:::-;12269:139;;11996:419;;;:::o;12421:::-;12587:4;12625:2;12614:9;12610:18;12602:26;;12674:9;12668:4;12664:20;12660:1;12649:9;12645:17;12638:47;12702:131;12828:4;12702:131;:::i;:::-;12694:139;;12421:419;;;:::o;12846:::-;13012:4;13050:2;13039:9;13035:18;13027:26;;13099:9;13093:4;13089:20;13085:1;13074:9;13070:17;13063:47;13127:131;13253:4;13127:131;:::i;:::-;13119:139;;12846:419;;;:::o;13271:::-;13437:4;13475:2;13464:9;13460:18;13452:26;;13524:9;13518:4;13514:20;13510:1;13499:9;13495:17;13488:47;13552:131;13678:4;13552:131;:::i;:::-;13544:139;;13271:419;;;:::o;13696:::-;13862:4;13900:2;13889:9;13885:18;13877:26;;13949:9;13943:4;13939:20;13935:1;13924:9;13920:17;13913:47;13977:131;14103:4;13977:131;:::i;:::-;13969:139;;13696:419;;;:::o;14121:222::-;14214:4;14252:2;14241:9;14237:18;14229:26;;14265:71;14333:1;14322:9;14318:17;14309:6;14265:71;:::i;:::-;14121:222;;;;:::o;14349:442::-;14498:4;14536:2;14525:9;14521:18;14513:26;;14549:71;14617:1;14606:9;14602:17;14593:6;14549:71;:::i;:::-;14630:72;14698:2;14687:9;14683:18;14674:6;14630:72;:::i;:::-;14712;14780:2;14769:9;14765:18;14756:6;14712:72;:::i;:::-;14349:442;;;;;;:::o;14797:1320::-;15165:4;15203:3;15192:9;15188:19;15180:27;;15217:71;15285:1;15274:9;15270:17;15261:6;15217:71;:::i;:::-;15298:72;15366:2;15355:9;15351:18;15342:6;15298:72;:::i;:::-;15380;15448:2;15437:9;15433:18;15424:6;15380:72;:::i;:::-;15462;15530:2;15519:9;15515:18;15506:6;15462:72;:::i;:::-;15544:73;15612:3;15601:9;15597:19;15588:6;15544:73;:::i;:::-;15627;15695:3;15684:9;15680:19;15671:6;15627:73;:::i;:::-;15710;15778:3;15767:9;15763:19;15754:6;15710:73;:::i;:::-;15793;15861:3;15850:9;15846:19;15837:6;15793:73;:::i;:::-;15876;15944:3;15933:9;15929:19;15920:6;15876:73;:::i;:::-;15959;16027:3;16016:9;16012:19;16003:6;15959:73;:::i;:::-;16042:68;16105:3;16094:9;16090:19;16080:7;16042:68;:::i;:::-;14797:1320;;;;;;;;;;;;;;:::o;16204:169::-;16288:11;16322:6;16317:3;16310:19;16362:4;16357:3;16353:14;16338:29;;16204:169;;;;:::o;16379:305::-;16419:3;16438:20;16456:1;16438:20;:::i;:::-;16433:25;;16472:20;16490:1;16472:20;:::i;:::-;16467:25;;16626:1;16558:66;16554:74;16551:1;16548:81;16545:107;;;16632:18;;:::i;:::-;16545:107;16676:1;16673;16669:9;16662:16;;16379:305;;;;:::o;16690:185::-;16730:1;16747:20;16765:1;16747:20;:::i;:::-;16742:25;;16781:20;16799:1;16781:20;:::i;:::-;16776:25;;16820:1;16810:35;;16825:18;;:::i;:::-;16810:35;16867:1;16864;16860:9;16855:14;;16690:185;;;;:::o;16881:348::-;16921:7;16944:20;16962:1;16944:20;:::i;:::-;16939:25;;16978:20;16996:1;16978:20;:::i;:::-;16973:25;;17166:1;17098:66;17094:74;17091:1;17088:81;17083:1;17076:9;17069:17;17065:105;17062:131;;;17173:18;;:::i;:::-;17062:131;17221:1;17218;17214:9;17203:20;;16881:348;;;;:::o;17235:191::-;17275:4;17295:20;17313:1;17295:20;:::i;:::-;17290:25;;17329:20;17347:1;17329:20;:::i;:::-;17324:25;;17368:1;17365;17362:8;17359:34;;;17373:18;;:::i;:::-;17359:34;17418:1;17415;17411:9;17403:17;;17235:191;;;;:::o;17432:96::-;17469:7;17498:24;17516:5;17498:24;:::i;:::-;17487:35;;17432:96;;;:::o;17534:90::-;17568:7;17611:5;17604:13;17597:21;17586:32;;17534:90;;;:::o;17630:126::-;17667:7;17707:42;17700:5;17696:54;17685:65;;17630:126;;;:::o;17762:77::-;17799:7;17828:5;17817:16;;17762:77;;;:::o;17845:140::-;17909:9;17942:37;17973:5;17942:37;:::i;:::-;17929:50;;17845:140;;;:::o;17991:141::-;18056:9;18089:37;18120:5;18089:37;:::i;:::-;18076:50;;17991:141;;;:::o;18138:126::-;18188:9;18221:37;18252:5;18221:37;:::i;:::-;18208:50;;18138:126;;;:::o;18270:113::-;18320:9;18353:24;18371:5;18353:24;:::i;:::-;18340:37;;18270:113;;;:::o;18389:171::-;18428:3;18451:24;18469:5;18451:24;:::i;:::-;18442:33;;18497:4;18490:5;18487:15;18484:41;;;18505:18;;:::i;:::-;18484:41;18552:1;18545:5;18541:13;18534:20;;18389:171;;;:::o;18566:233::-;18605:3;18628:24;18646:5;18628:24;:::i;:::-;18619:33;;18674:66;18667:5;18664:77;18661:103;;;18744:18;;:::i;:::-;18661:103;18791:1;18784:5;18780:13;18773:20;;18566:233;;;:::o;18805:180::-;18853:77;18850:1;18843:88;18950:4;18947:1;18940:15;18974:4;18971:1;18964:15;18991:180;19039:77;19036:1;19029:88;19136:4;19133:1;19126:15;19160:4;19157:1;19150:15;19300:117;19409:1;19406;19399:12;19423:225;19563:34;19559:1;19551:6;19547:14;19540:58;19632:8;19627:2;19619:6;19615:15;19608:33;19423:225;:::o;19654:224::-;19794:34;19790:1;19782:6;19778:14;19771:58;19863:7;19858:2;19850:6;19846:15;19839:32;19654:224;:::o;19884:180::-;20024:32;20020:1;20012:6;20008:14;20001:56;19884:180;:::o;20070:179::-;20210:31;20206:1;20198:6;20194:14;20187:55;20070:179;:::o;20255:178::-;20395:30;20391:1;20383:6;20379:14;20372:54;20255:178;:::o;20439:221::-;20579:34;20575:1;20567:6;20563:14;20556:58;20648:4;20643:2;20635:6;20631:15;20624:29;20439:221;:::o;20666:181::-;20806:33;20802:1;20794:6;20790:14;20783:57;20666:181;:::o;20853:182::-;20993:34;20989:1;20981:6;20977:14;20970:58;20853:182;:::o;21041:170::-;21181:22;21177:1;21169:6;21165:14;21158:46;21041:170;:::o;21217:167::-;21357:19;21353:1;21345:6;21341:14;21334:43;21217:167;:::o;21390:::-;21530:19;21526:1;21518:6;21514:14;21507:43;21390:167;:::o;21563:122::-;21636:24;21654:5;21636:24;:::i;:::-;21629:5;21626:35;21616:63;;21675:1;21672;21665:12;21616:63;21563:122;:::o;21691:116::-;21761:21;21776:5;21761:21;:::i;:::-;21754:5;21751:32;21741:60;;21797:1;21794;21787:12;21741:60;21691:116;:::o;21813:122::-;21886:24;21904:5;21886:24;:::i;:::-;21879:5;21876:35;21866:63;;21925:1;21922;21915:12;21866:63;21813:122;:::o

Swarm Source

ipfs://dbedd15994e80f90091206990dc3b7d2e55203183463a174cce9f1907ee904d9

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.