ETH Price: $3,619.62 (+4.88%)
 
Transaction Hash
Method
Block
From
To
Set Approval For...215255282024-12-31 22:46:592 days ago1735685219IN
0xc0c9c701...9ec324adF
0 ETH0.000272855.87084491
Set Approval For...215214152024-12-31 8:58:473 days ago1735635527IN
0xc0c9c701...9ec324adF
0 ETH0.0004151416.9
Set Approval For...215213722024-12-31 8:50:113 days ago1735635011IN
0xc0c9c701...9ec324adF
0 ETH0.0008100617.42928231
Transfer From215155742024-12-30 13:25:114 days ago1735565111IN
0xc0c9c701...9ec324adF
0 ETH0.000234226.15308672
Set Approval For...214535792024-12-21 21:31:2313 days ago1734816683IN
0xc0c9c701...9ec324adF
0 ETH0.000366597.88766725
Set Approval For...214468792024-12-20 23:00:4713 days ago1734735647IN
0xc0c9c701...9ec324adF
0 ETH0.0005273711.34698202
Set Approval For...214398582024-12-19 23:29:4714 days ago1734650987IN
0xc0c9c701...9ec324adF
0 ETH0.0007105715.28881253
Safe Transfer Fr...214120742024-12-16 2:24:1118 days ago1734315851IN
0xc0c9c701...9ec324adF
0 ETH0.0007317212.63912844
Set Approval For...214096362024-12-15 18:14:3519 days ago1734286475IN
0xc0c9c701...9ec324adF
0 ETH0.0005547511.91465588
Set Approval For...213449872024-12-06 17:36:1128 days ago1733506571IN
0xc0c9c701...9ec324adF
0 ETH0.0013710729.5
Set Approval For...213197362024-12-03 4:57:5931 days ago1733201879IN
0xc0c9c701...9ec324adF
0 ETH0.0007269715.64150175
Set Approval For...213160842024-12-02 16:42:1132 days ago1733157731IN
0xc0c9c701...9ec324adF
0 ETH0.0019288141.50038397
Set Approval For...210872102024-10-31 17:47:1164 days ago1730396831IN
0xc0c9c701...9ec324adF
0 ETH0.0007000215.06170142
Safe Transfer Fr...210872062024-10-31 17:46:2364 days ago1730396783IN
0xc0c9c701...9ec324adF
0 ETH0.0009129414.5618751
Set Approval For...210871882024-10-31 17:42:4764 days ago1730396567IN
0xc0c9c701...9ec324adF
0 ETH0.0003751615.27244166
Set Approval For...210663782024-10-28 20:00:1167 days ago1730145611IN
0xc0c9c701...9ec324adF
0 ETH0.0006835214.7067336
Set Approval For...210604892024-10-28 0:15:2367 days ago1730074523IN
0xc0c9c701...9ec324adF
0 ETH0.000305626.57582729
Set Approval For...210563152024-10-27 10:17:4768 days ago1730024267IN
0xc0c9c701...9ec324adF
0 ETH0.000458869.87303577
Set Approval For...209426192024-10-11 13:16:4784 days ago1728652607IN
0xc0c9c701...9ec324adF
0 ETH0.0022108447.56850515
Set Approval For...208933392024-10-04 16:24:4791 days ago1728059087IN
0xc0c9c701...9ec324adF
0 ETH0.0007140115.3627687
Set Approval For...208933112024-10-04 16:19:1191 days ago1728058751IN
0xc0c9c701...9ec324adF
0 ETH0.0007644316.44767623
Set Approval For...208147452024-09-23 17:22:23102 days ago1727112143IN
0xc0c9c701...9ec324adF
0 ETH0.0011265124.23807893
Set Approval For...208095282024-09-22 23:53:11102 days ago1727049191IN
0xc0c9c701...9ec324adF
0 ETH0.000278866
Set Approval For...207203572024-09-10 12:57:11115 days ago1725973031IN
0xc0c9c701...9ec324adF
0 ETH0.000340117.31785893
Set Approval For...206844862024-09-05 12:48:35120 days ago1725540515IN
0xc0c9c701...9ec324adF
0 ETH0.000154043.31439141
View all transactions

Latest 12 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
194830712024-03-21 12:34:47288 days ago1711024487
0xc0c9c701...9ec324adF
68 ETH
194780272024-03-20 19:35:59289 days ago1710963359
0xc0c9c701...9ec324adF
100 ETH
194766282024-03-20 14:52:59289 days ago1710946379
0xc0c9c701...9ec324adF
100 ETH
194711732024-03-19 20:28:23290 days ago1710880103
0xc0c9c701...9ec324adF
100 ETH
194615492024-03-18 12:01:23291 days ago1710763283
0xc0c9c701...9ec324adF
100 ETH
194405292024-03-15 13:04:35294 days ago1710507875
0xc0c9c701...9ec324adF
40 ETH
194282352024-03-13 19:32:23296 days ago1710358343
0xc0c9c701...9ec324adF
10 ETH
193844392024-03-07 16:18:23302 days ago1709828303
0xc0c9c701...9ec324adF
30 ETH
189868172024-01-11 23:01:35357 days ago1705014095
0xc0c9c701...9ec324adF
54 ETH
179417012023-08-18 12:34:23504 days ago1692362063
0xc0c9c701...9ec324adF
80 ETH
168225512023-03-14 0:12:11661 days ago1678752731
0xc0c9c701...9ec324adF
87 ETH
142323272022-02-18 20:51:001050 days ago1645217460
0xc0c9c701...9ec324adF
99.5 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TuringKey

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU AGPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-13
*/

// File: interfaces/IBottoStaking.sol


pragma solidity 0.8.11;

interface IBottoStaking {
    function botto() external view returns (address);
    function owner() external view returns (address);
    function totalStaked() external view returns (uint256);
    function userStakes(address user) external view returns (uint256);
}

// File: interfaces/IERC20.sol


pragma solidity 0.8.11;

/// @title ERC20 Interface
/// @dev https://eips.ethereum.org/EIPS/eip-20
/// @author Andreas Bigger <[email protected]>
interface IERC20 {
    /// @dev The circulating supply of tokens
    function totalSupply() external view returns (uint256);

    /// @dev The number of tokens owned by the account
    /// @param account The address to get the balance for
    function balanceOf(address account) external view returns (uint256);

    /// @dev Transfers the specified amount of tokens to the recipient from the sender
    function transfer(address recipient, uint256 amount) external returns (bool);

    /// @dev The amount of tokens the spender is permitted to transfer from the owner
    function allowance(address owner, address spender) external view returns (uint256);

    /// @dev Permits a spender to transfer an amount of tokens
    function approve(address spender, uint256 amount) external returns (bool);

    /// @dev Transfers tokens from the sender using the caller's allowance
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /// @dev Emitted when tokens are transfered
    /// @param from The address that is sending the tokens
    /// @param to The token recipient
    /// @param value The number of tokens
    event Transfer(address indexed from, address indexed to, uint256 value);

    /// @dev Emitted when an owner permits a spender
    /// @param owner The token owner
    /// @param spender The permitted spender
    /// @param value The number of tokens
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: @rari-capital/solmate/src/tokens/ERC721.sol


pragma solidity >=0.8.0;

/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)
/// @dev Note that balanceOf does not revert if passed the zero address, in defiance of the ERC.
abstract contract ERC721 {
    /*///////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 indexed id);

    event Approval(address indexed owner, address indexed spender, uint256 indexed id);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /*///////////////////////////////////////////////////////////////
                          METADATA STORAGE/LOGIC
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    function tokenURI(uint256 id) public view virtual returns (string memory);

    /*///////////////////////////////////////////////////////////////
                            ERC721 STORAGE                        
    //////////////////////////////////////////////////////////////*/

    mapping(address => uint256) public balanceOf;

    mapping(uint256 => address) public ownerOf;

    mapping(uint256 => address) public getApproved;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /*///////////////////////////////////////////////////////////////
                              CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(string memory _name, string memory _symbol) {
        name = _name;
        symbol = _symbol;
    }

    /*///////////////////////////////////////////////////////////////
                              ERC721 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 id) public virtual {
        address owner = ownerOf[id];

        require(msg.sender == owner || isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED");

        getApproved[id] = spender;

        emit Approval(owner, spender, id);
    }

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function transferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        require(from == ownerOf[id], "WRONG_FROM");

        require(to != address(0), "INVALID_RECIPIENT");

        require(
            msg.sender == from || msg.sender == getApproved[id] || isApprovedForAll[from][msg.sender],
            "NOT_AUTHORIZED"
        );

        // Underflow of the sender's balance is impossible because we check for
        // ownership above and the recipient's balance can't realistically overflow.
        unchecked {
            balanceOf[from]--;

            balanceOf[to]++;
        }

        ownerOf[id] = to;

        delete getApproved[id];

        emit Transfer(from, to, id);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, "") ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes memory data
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    /*///////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721
            interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata
    }

    /*///////////////////////////////////////////////////////////////
                       INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 id) internal virtual {
        require(to != address(0), "INVALID_RECIPIENT");

        require(ownerOf[id] == address(0), "ALREADY_MINTED");

        // Counter overflow is incredibly unrealistic.
        unchecked {
            balanceOf[to]++;
        }

        ownerOf[id] = to;

        emit Transfer(address(0), to, id);
    }

    function _burn(uint256 id) internal virtual {
        address owner = ownerOf[id];

        require(ownerOf[id] != address(0), "NOT_MINTED");

        // Ownership check above ensures no underflow.
        unchecked {
            balanceOf[owner]--;
        }

        delete ownerOf[id];

        delete getApproved[id];

        emit Transfer(owner, address(0), id);
    }

    /*///////////////////////////////////////////////////////////////
                       INTERNAL SAFE MINT LOGIC
    //////////////////////////////////////////////////////////////*/

    function _safeMint(address to, uint256 id) internal virtual {
        _mint(to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, "") ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _safeMint(
        address to,
        uint256 id,
        bytes memory data
    ) internal virtual {
        _mint(to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }
}

/// @notice A generic interface for a contract which properly accepts ERC721 tokens.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)
interface ERC721TokenReceiver {
    function onERC721Received(
        address operator,
        address from,
        uint256 id,
        bytes calldata data
    ) external returns (bytes4);
}

// 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 v4.4.1 (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 Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _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: TuringKey.sol


pragma solidity ^0.8.11;





/// @notice Too few tokens remain
error InsufficientTokensRemain();

/// @notice Balance of sender is or would be over token limit per holder
// @param balance Token balance
// @param limit Token limit per holder
error SenderBalanceOverTokenLimit(uint256 balance, uint8 limit);

/// @notice Not enough ether sent to mint
/// @param cost The minimum amount of ether required to mint
/// @param sent The amount of ether sent to this contract
error InsufficientFunds(uint256 cost, uint256 sent);

/// @notice Supply send to update is lower than the current mints count
/// @param supply Amount sent to update
/// @param tokenCount Current minst amount
error SupplyLowerThanTokenCount(uint256 supply, uint256 tokenCount);

/// @notice Supply send to update is lower than the current mints count
/// @param supply Amount sent to update
/// @param absoluteMaximumTokens hardcoded maximum number of tokens
error SupplyHigherThanAbsoluteMaximumTokens(uint256 supply, uint256 absoluteMaximumTokens);

/// @notice Account trying to mint the token is not a botto staker
/// @param user account sending the transaction
error UserIsNotAStaker(address user);


/// @title Turing Key
/// @author GoldmanDAO
/// @dev Note that mint price and Token URI are updateable
contract TuringKey is ERC721, Ownable {
    /// @dev BottoStaking contract
    IBottoStaking private bottoStaking;

    ///  @dev amount of time when the contract is going to be locked
    uint256 public timelock; 

    /// @dev Base URI
    string private internalTokenURI;

    /// @dev Number of tokens
    uint256 public tokenCount;

    /// @notice Limit of tokens per holder
    uint8 public constant HOLDER_TOKEN_LIMIT = 10;

    /// @notice The maximum number of nfts to mint, not updateable
    uint256 public constant ABSOLUTE_MAXIMUM_TOKENS = 969;

    /// @notice The actual supply of nfts. Can be updated by the owner
    uint256 public currentSupply = 200;

    /// @notice Cost to mint a token
    uint256 public publicSalePrice = 0.5 ether;

    //////////////////////////////////////////////////
    //                  MODIFIER                    //
    //////////////////////////////////////////////////

    /// @dev Checks mint requirements
    /// -> Mint in time or pre-release authorized sender
    /// -> Enough supply
    /// -> Balance of target address in limits
    /// -> Value sended matches price
    modifier canMint(address to, uint8 amount) {
        if (block.timestamp < timelock) {
            if(bottoStaking.userStakes(msg.sender) == 0 || bottoStaking.userStakes(to) == 0) {
                revert UserIsNotAStaker(msg.sender);
            }
        }
        if (tokenCount + amount >= currentSupply) {
            revert InsufficientTokensRemain();
        }
        if (balanceOf[to] + amount > HOLDER_TOKEN_LIMIT) {
            revert SenderBalanceOverTokenLimit(balanceOf[to] + amount, HOLDER_TOKEN_LIMIT);
        }
        if (publicSalePrice * amount > msg.value) {
            revert InsufficientFunds(publicSalePrice * amount, msg.value);
        }
        _;
    }

    //////////////////////////////////////////////////
    //                 CONSTRUCTOR                  //
    //////////////////////////////////////////////////

    /// @dev Sets the ERC721 Metadata and OpenSea Proxy Registry Address
    constructor(string memory _tokenURI, IBottoStaking _bottoStaking) ERC721("Turing Key", "TKEY") {
      internalTokenURI = _tokenURI;
      bottoStaking = _bottoStaking;
      timelock = block.timestamp + 2 days;
    }

    //////////////////////////////////////////////////
    //                  METADATA                    //
    //////////////////////////////////////////////////

    /// @dev Returns the URI for the given token
    function tokenURI(uint256 tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        return internalTokenURI;
    }

    /////////////////////////////////////////////////
    //                MINTING LOGIC                 //
    //////////////////////////////////////////////////

    /// @notice Mint one or more tokens
    /// @param to whom the token is being sent to
    /// @param amount the amount of tokens to mint
    function mint(address to, uint8 amount)
        public
        virtual
        payable
        canMint(to, amount) 
    {
        for (uint8 i=0; i < amount; i++) {
            tokenCount++;
            _mint(to, tokenCount);
        }
    }

    /// @notice Safe mint one or mont tokens
    /// @param to whom the token is being sent to
    /// @param amount the amount of tokens to mint
    function safeMint(address to, uint8 amount)
        public
        virtual
        payable
        canMint(to, amount)
    {
        for (uint8 i=0; i < amount; i++) {
            tokenCount++;
            _safeMint(to, tokenCount);
        }
    }

    /// @notice Safe mint a token
    /// @param to whom the token is being sent to
    /// @param data needed for the contract to be call
    function safeMint(
        address to,
        uint8 amount,
        bytes memory data
    )
        public
        virtual
        payable
        canMint(to, amount)
    {
        for (uint8 i=0; i < amount; i++) {
            tokenCount++;
            _safeMint(to, tokenCount, data);
        }
    }

     //////////////////////////////////////////////////
    //                BURNING LOGIC                 //
    //////////////////////////////////////////////////

    function burn(uint256 tokenId) public virtual {
        _burn(tokenId);
    }

    //////////////////////////////////////////////////
    //                 ADMIN LOGIC                  //
    //////////////////////////////////////////////////

    /// @notice Sets the tokenURI for the membership
    function setInternalTokenURI(string memory _internalTokenURI) external onlyOwner {
        internalTokenURI = _internalTokenURI;
    }

    /// @dev Allows the owner to update the amount of memberships to be minted
    function updateCurrentSupply(uint256 _supply) public onlyOwner {
        if (_supply > ABSOLUTE_MAXIMUM_TOKENS) {
            revert SupplyHigherThanAbsoluteMaximumTokens(_supply, ABSOLUTE_MAXIMUM_TOKENS);
        } 
        if (_supply < tokenCount) {
            revert SupplyLowerThanTokenCount(_supply, tokenCount);
        }
        currentSupply = _supply;
    }

    /// @dev Allows the owner to change the prize of the membership 
    function setPublicSalePrice(uint256 _publicSalePrice) public onlyOwner {
      publicSalePrice = _publicSalePrice;
    }

    /// @dev Allows the owner to withdraw eth
    function withdraw() public onlyOwner {
        uint256 balance = address(this).balance;
        payable(msg.sender).transfer(balance);
    }

    /// @dev Allows the owner to withdraw any erc20 tokens sent to this contract
    function withdrawTokens(IERC20 token) public onlyOwner {
        uint256 balance = token.balanceOf(address(this));
        token.transfer(msg.sender, balance);
    }

    //////////////////////////////////////////////////
    //                 ROYALTIES                    //
    //////////////////////////////////////////////////
    // @dev Support for EIP 2981 Interface by overriding erc165 supportsInterface
    // function supportsInterface(bytes4 interfaceId) public pure virtual override returns (bool) {
    //     return
    //         interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
    //         interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721
    //         interfaceId == 0x5b5e139f || // ERC165 Interface ID for ERC721Metadata
    //         interfaceId == 0x2a55205a;  // ERC165 Interface ID for ERC2981
    // }

    /// @dev Royalter information
    // function royaltyInfo(uint256 tokenId, uint256 salePrice)
    //     external
    //     view
    //     returns (address receiver, uint256 royaltyAmount)
    // {
    //     receiver = address(this);
    //     royaltyAmount = (salePrice * 5) / 100;
    // }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"},{"internalType":"contract IBottoStaking","name":"_bottoStaking","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"cost","type":"uint256"},{"internalType":"uint256","name":"sent","type":"uint256"}],"name":"InsufficientFunds","type":"error"},{"inputs":[],"name":"InsufficientTokensRemain","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint8","name":"limit","type":"uint8"}],"name":"SenderBalanceOverTokenLimit","type":"error"},{"inputs":[{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"absoluteMaximumTokens","type":"uint256"}],"name":"SupplyHigherThanAbsoluteMaximumTokens","type":"error"},{"inputs":[{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"tokenCount","type":"uint256"}],"name":"SupplyLowerThanTokenCount","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"UserIsNotAStaker","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ABSOLUTE_MAXIMUM_TOKENS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HOLDER_TOKEN_LIMIT","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint8","name":"amount","type":"uint8"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint8","name":"amount","type":"uint8"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint8","name":"amount","type":"uint8"}],"name":"safeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_internalTokenURI","type":"string"}],"name":"setInternalTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_publicSalePrice","type":"uint256"}],"name":"setPublicSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timelock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"}],"name":"updateCurrentSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260c8600b556706f05b59d3b20000600c553480156200002257600080fd5b506040516200428438038062004284833981810160405281019062000048919062000515565b6040518060400160405280600a81526020017f547572696e67204b6579000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f544b4559000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000cc9291906200024f565b508060019080519060200190620000e59291906200024f565b50505062000108620000fc6200018160201b60201c565b6200018960201b60201c565b8160099080519060200190620001209291906200024f565b5080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506202a30042620001739190620005b4565b600881905550505062000676565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200025d9062000640565b90600052602060002090601f016020900481019282620002815760008555620002cd565b82601f106200029c57805160ff1916838001178555620002cd565b82800160010185558215620002cd579182015b82811115620002cc578251825591602001919060010190620002af565b5b509050620002dc9190620002e0565b5090565b5b80821115620002fb576000816000905550600101620002e1565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000368826200031d565b810181811067ffffffffffffffff821117156200038a57620003896200032e565b5b80604052505050565b60006200039f620002ff565b9050620003ad82826200035d565b919050565b600067ffffffffffffffff821115620003d057620003cf6200032e565b5b620003db826200031d565b9050602081019050919050565b60005b8381101562000408578082015181840152602081019050620003eb565b8381111562000418576000848401525b50505050565b6000620004356200042f84620003b2565b62000393565b90508281526020810184848401111562000454576200045362000318565b5b62000461848285620003e8565b509392505050565b600082601f83011262000481576200048062000313565b5b8151620004938482602086016200041e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004c9826200049c565b9050919050565b6000620004dd82620004bc565b9050919050565b620004ef81620004d0565b8114620004fb57600080fd5b50565b6000815190506200050f81620004e4565b92915050565b600080604083850312156200052f576200052e62000309565b5b600083015167ffffffffffffffff81111562000550576200054f6200030e565b5b6200055e8582860162000469565b92505060206200057185828601620004fe565b9150509250929050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620005c1826200057b565b9150620005ce836200057b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000606576200060562000585565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200065957607f821691505b6020821081141562000670576200066f62000611565b5b50919050565b613bfe80620006866000396000f3fe6080604052600436106101d85760003560e01c8063761c4c4011610102578063a22cb46511610095578063d33219b411610064578063d33219b414610659578063e985e9c514610684578063f2fde38b146106c1578063fb980a9c146106ea576101d8565b8063a22cb4651461059f578063b88d4fde146105c8578063c87b56dd146105f1578063cb70db9e1461062e576101d8565b806395d89b41116100d157806395d89b41146104f35780639b6860c81461051e5780639d5fa571146105495780639f181b5e14610574576101d8565b8063761c4c4014610458578063771282f614610474578063791a25191461049f5780638da5cb5b146104c8576101d8565b806342842e0e1161017a5780636352211e116101495780636352211e146103ab578063691562a0146103e857806370a0823114610404578063715018a614610441576101d8565b806342842e0e1461030757806342966c681461033057806349df728c14610359578063577255de14610382576101d8565b8063095ea7b3116101b6578063095ea7b31461028257806323b872dd146102ab5780633ccfd60b146102d457806341b66e43146102eb576101d8565b806301ffc9a7146101dd57806306fdde031461021a578063081812fc14610245575b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff9190612c7f565b610713565b6040516102119190612cc7565b60405180910390f35b34801561022657600080fd5b5061022f6107a5565b60405161023c9190612d7b565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190612dd3565b610833565b6040516102799190612e41565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a49190612e88565b610866565b005b3480156102b757600080fd5b506102d260048036038101906102cd9190612ec8565b610a4f565b005b3480156102e057600080fd5b506102e9610e4f565b005b61030560048036038101906103009190613089565b610f1a565b005b34801561031357600080fd5b5061032e60048036038101906103299190612ec8565b611297565b005b34801561033c57600080fd5b5061035760048036038101906103529190612dd3565b6113cf565b005b34801561036557600080fd5b50610380600480360381019061037b9190613136565b6113db565b005b34801561038e57600080fd5b506103a960048036038101906103a49190612dd3565b611558565b005b3480156103b757600080fd5b506103d260048036038101906103cd9190612dd3565b611674565b6040516103df9190612e41565b60405180910390f35b61040260048036038101906103fd9190613163565b6116a7565b005b34801561041057600080fd5b5061042b600480360381019061042691906131a3565b611a22565b60405161043891906131df565b60405180910390f35b34801561044d57600080fd5b50610456611a3a565b005b610472600480360381019061046d9190613163565b611ac2565b005b34801561048057600080fd5b50610489611e3d565b60405161049691906131df565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190612dd3565b611e43565b005b3480156104d457600080fd5b506104dd611ec9565b6040516104ea9190612e41565b60405180910390f35b3480156104ff57600080fd5b50610508611ef3565b6040516105159190612d7b565b60405180910390f35b34801561052a57600080fd5b50610533611f81565b60405161054091906131df565b60405180910390f35b34801561055557600080fd5b5061055e611f87565b60405161056b9190613209565b60405180910390f35b34801561058057600080fd5b50610589611f8c565b60405161059691906131df565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c19190613250565b611f92565b005b3480156105d457600080fd5b506105ef60048036038101906105ea9190613290565b61208f565b005b3480156105fd57600080fd5b5061061860048036038101906106139190612dd3565b6121ca565b6040516106259190612d7b565b60405180910390f35b34801561063a57600080fd5b5061064361225e565b60405161065091906131df565b60405180910390f35b34801561066557600080fd5b5061066e612264565b60405161067b91906131df565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a69190613313565b61226a565b6040516106b89190612cc7565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e391906131a3565b612299565b005b3480156106f657600080fd5b50610711600480360381019061070c91906133f4565b612391565b005b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061076e57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061079e5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600080546107b29061346c565b80601f01602080910402602001604051908101604052809291908181526020018280546107de9061346c565b801561082b5780601f106108005761010080835404028352916020019161082b565b820191906000526020600020905b81548152906001019060200180831161080e57829003601f168201915b505050505081565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061095e5750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61099d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610994906134ea565b60405180910390fd5b826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6003600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae790613556565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b57906135c2565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bf857506004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610c895750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbf906134ea565b60405180910390fd5b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b610e57612427565b73ffffffffffffffffffffffffffffffffffffffff16610e75611ec9565b73ffffffffffffffffffffffffffffffffffffffff1614610ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec29061362e565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610f16573d6000803e3d6000fd5b5050565b82826008544210156110ae576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da7ad23336040518263ffffffff1660e01b8152600401610f839190612e41565b602060405180830381865afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc49190613663565b148061106b57506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da7ad23846040518263ffffffff1660e01b81526004016110289190612e41565b602060405180830381865afa158015611045573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110699190613663565b145b156110ad57336040517f901a767e0000000000000000000000000000000000000000000000000000000081526004016110a49190612e41565b60405180910390fd5b5b600b548160ff16600a546110c291906136bf565b106110f9576040517fa2a40cc400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a60ff168160ff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114c91906136bf565b11156111df578060ff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a091906136bf565b600a6040517fc9cf6a000000000000000000000000000000000000000000000000000000000081526004016111d6929190613715565b60405180910390fd5b348160ff16600c546111f1919061373e565b1115611246578060ff16600c54611208919061373e565b346040517f03eb8b5400000000000000000000000000000000000000000000000000000000815260040161123d929190613798565b60405180910390fd5b60005b8460ff168160ff16101561128f57600a600081548092919061126a906137c1565b919050555061127c86600a548661242f565b80806112879061380a565b915050611249565b505050505050565b6112a2838383610a4f565b60008273ffffffffffffffffffffffffffffffffffffffff163b148061138b575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b81526004016113279392919061386b565b6020604051808303816000875af1158015611346573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136a91906138ca565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b6113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c190613943565b60405180910390fd5b505050565b6113d881612569565b50565b6113e3612427565b73ffffffffffffffffffffffffffffffffffffffff16611401611ec9565b73ffffffffffffffffffffffffffffffffffffffff1614611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144e9061362e565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114929190612e41565b602060405180830381865afa1580156114af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d39190613663565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611510929190613963565b6020604051808303816000875af115801561152f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155391906139a1565b505050565b611560612427565b73ffffffffffffffffffffffffffffffffffffffff1661157e611ec9565b73ffffffffffffffffffffffffffffffffffffffff16146115d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cb9061362e565b60405180910390fd5b6103c981111561161f57806103c96040517f66244271000000000000000000000000000000000000000000000000000000008152600401611616929190613798565b60405180910390fd5b600a5481101561166a5780600a546040517fbfc5a594000000000000000000000000000000000000000000000000000000008152600401611661929190613798565b60405180910390fd5b80600b8190555050565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b818160085442101561183b576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da7ad23336040518263ffffffff1660e01b81526004016117109190612e41565b602060405180830381865afa15801561172d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117519190613663565b14806117f857506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da7ad23846040518263ffffffff1660e01b81526004016117b59190612e41565b602060405180830381865afa1580156117d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f69190613663565b145b1561183a57336040517f901a767e0000000000000000000000000000000000000000000000000000000081526004016118319190612e41565b60405180910390fd5b5b600b548160ff16600a5461184f91906136bf565b10611886576040517fa2a40cc400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a60ff168160ff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d991906136bf565b111561196c578060ff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461192d91906136bf565b600a6040517fc9cf6a00000000000000000000000000000000000000000000000000000000008152600401611963929190613715565b60405180910390fd5b348160ff16600c5461197e919061373e565b11156119d3578060ff16600c54611995919061373e565b346040517f03eb8b540000000000000000000000000000000000000000000000000000000081526004016119ca929190613798565b60405180910390fd5b60005b8360ff168160ff161015611a1b57600a60008154809291906119f7906137c1565b9190505550611a0885600a54612760565b8080611a139061380a565b9150506119d6565b5050505050565b60026020528060005260406000206000915090505481565b611a42612427565b73ffffffffffffffffffffffffffffffffffffffff16611a60611ec9565b73ffffffffffffffffffffffffffffffffffffffff1614611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad9061362e565b60405180910390fd5b611ac06000612973565b565b8181600854421015611c56576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da7ad23336040518263ffffffff1660e01b8152600401611b2b9190612e41565b602060405180830381865afa158015611b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6c9190613663565b1480611c1357506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da7ad23846040518263ffffffff1660e01b8152600401611bd09190612e41565b602060405180830381865afa158015611bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c119190613663565b145b15611c5557336040517f901a767e000000000000000000000000000000000000000000000000000000008152600401611c4c9190612e41565b60405180910390fd5b5b600b548160ff16600a54611c6a91906136bf565b10611ca1576040517fa2a40cc400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a60ff168160ff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf491906136bf565b1115611d87578060ff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4891906136bf565b600a6040517fc9cf6a00000000000000000000000000000000000000000000000000000000008152600401611d7e929190613715565b60405180910390fd5b348160ff16600c54611d99919061373e565b1115611dee578060ff16600c54611db0919061373e565b346040517f03eb8b54000000000000000000000000000000000000000000000000000000008152600401611de5929190613798565b60405180910390fd5b60005b8360ff168160ff161015611e3657600a6000815480929190611e12906137c1565b9190505550611e2385600a54612a39565b8080611e2e9061380a565b915050611df1565b5050505050565b600b5481565b611e4b612427565b73ffffffffffffffffffffffffffffffffffffffff16611e69611ec9565b73ffffffffffffffffffffffffffffffffffffffff1614611ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb69061362e565b60405180910390fd5b80600c8190555050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60018054611f009061346c565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2c9061346c565b8015611f795780601f10611f4e57610100808354040283529160200191611f79565b820191906000526020600020905b815481529060010190602001808311611f5c57829003601f168201915b505050505081565b600c5481565b600a81565b600a5481565b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516120839190612cc7565b60405180910390a35050565b61209a848484610a4f565b60008373ffffffffffffffffffffffffffffffffffffffff163b1480612185575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b81526004016121219493929190613a12565b6020604051808303816000875af1158015612140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216491906138ca565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b6121c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bb90613943565b60405180910390fd5b50505050565b6060600980546121d99061346c565b80601f01602080910402602001604051908101604052809291908181526020018280546122059061346c565b80156122525780601f1061222757610100808354040283529160200191612252565b820191906000526020600020905b81548152906001019060200180831161223557829003601f168201915b50505050509050919050565b6103c981565b60085481565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6122a1612427565b73ffffffffffffffffffffffffffffffffffffffff166122bf611ec9565b73ffffffffffffffffffffffffffffffffffffffff1614612315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230c9061362e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237c90613ad0565b60405180910390fd5b61238e81612973565b50565b612399612427565b73ffffffffffffffffffffffffffffffffffffffff166123b7611ec9565b73ffffffffffffffffffffffffffffffffffffffff161461240d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124049061362e565b60405180910390fd5b8060099080519060200190612423929190612b70565b5050565b600033905090565b6124398383612760565b60008373ffffffffffffffffffffffffffffffffffffffff163b1480612525575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663150b7a0233600086866040518563ffffffff1660e01b81526004016124c19493929190613a12565b6020604051808303816000875af11580156124e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250491906138ca565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b612564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255b90613943565b60405180910390fd5b505050565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263b90613b3c565b60405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c7906135c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286990613ba8565b60405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612a438282612760565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480612b2d575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a02336000856040518463ffffffff1660e01b8152600401612ac99392919061386b565b6020604051808303816000875af1158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c91906138ca565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b612b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6390613943565b60405180910390fd5b5050565b828054612b7c9061346c565b90600052602060002090601f016020900481019282612b9e5760008555612be5565b82601f10612bb757805160ff1916838001178555612be5565b82800160010185558215612be5579182015b82811115612be4578251825591602001919060010190612bc9565b5b509050612bf29190612bf6565b5090565b5b80821115612c0f576000816000905550600101612bf7565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612c5c81612c27565b8114612c6757600080fd5b50565b600081359050612c7981612c53565b92915050565b600060208284031215612c9557612c94612c1d565b5b6000612ca384828501612c6a565b91505092915050565b60008115159050919050565b612cc181612cac565b82525050565b6000602082019050612cdc6000830184612cb8565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d1c578082015181840152602081019050612d01565b83811115612d2b576000848401525b50505050565b6000601f19601f8301169050919050565b6000612d4d82612ce2565b612d578185612ced565b9350612d67818560208601612cfe565b612d7081612d31565b840191505092915050565b60006020820190508181036000830152612d958184612d42565b905092915050565b6000819050919050565b612db081612d9d565b8114612dbb57600080fd5b50565b600081359050612dcd81612da7565b92915050565b600060208284031215612de957612de8612c1d565b5b6000612df784828501612dbe565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e2b82612e00565b9050919050565b612e3b81612e20565b82525050565b6000602082019050612e566000830184612e32565b92915050565b612e6581612e20565b8114612e7057600080fd5b50565b600081359050612e8281612e5c565b92915050565b60008060408385031215612e9f57612e9e612c1d565b5b6000612ead85828601612e73565b9250506020612ebe85828601612dbe565b9150509250929050565b600080600060608486031215612ee157612ee0612c1d565b5b6000612eef86828701612e73565b9350506020612f0086828701612e73565b9250506040612f1186828701612dbe565b9150509250925092565b600060ff82169050919050565b612f3181612f1b565b8114612f3c57600080fd5b50565b600081359050612f4e81612f28565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612f9682612d31565b810181811067ffffffffffffffff82111715612fb557612fb4612f5e565b5b80604052505050565b6000612fc8612c13565b9050612fd48282612f8d565b919050565b600067ffffffffffffffff821115612ff457612ff3612f5e565b5b612ffd82612d31565b9050602081019050919050565b82818337600083830152505050565b600061302c61302784612fd9565b612fbe565b90508281526020810184848401111561304857613047612f59565b5b61305384828561300a565b509392505050565b600082601f8301126130705761306f612f54565b5b8135613080848260208601613019565b91505092915050565b6000806000606084860312156130a2576130a1612c1d565b5b60006130b086828701612e73565b93505060206130c186828701612f3f565b925050604084013567ffffffffffffffff8111156130e2576130e1612c22565b5b6130ee8682870161305b565b9150509250925092565b600061310382612e20565b9050919050565b613113816130f8565b811461311e57600080fd5b50565b6000813590506131308161310a565b92915050565b60006020828403121561314c5761314b612c1d565b5b600061315a84828501613121565b91505092915050565b6000806040838503121561317a57613179612c1d565b5b600061318885828601612e73565b925050602061319985828601612f3f565b9150509250929050565b6000602082840312156131b9576131b8612c1d565b5b60006131c784828501612e73565b91505092915050565b6131d981612d9d565b82525050565b60006020820190506131f460008301846131d0565b92915050565b61320381612f1b565b82525050565b600060208201905061321e60008301846131fa565b92915050565b61322d81612cac565b811461323857600080fd5b50565b60008135905061324a81613224565b92915050565b6000806040838503121561326757613266612c1d565b5b600061327585828601612e73565b92505060206132868582860161323b565b9150509250929050565b600080600080608085870312156132aa576132a9612c1d565b5b60006132b887828801612e73565b94505060206132c987828801612e73565b93505060406132da87828801612dbe565b925050606085013567ffffffffffffffff8111156132fb576132fa612c22565b5b6133078782880161305b565b91505092959194509250565b6000806040838503121561332a57613329612c1d565b5b600061333885828601612e73565b925050602061334985828601612e73565b9150509250929050565b600067ffffffffffffffff82111561336e5761336d612f5e565b5b61337782612d31565b9050602081019050919050565b600061339761339284613353565b612fbe565b9050828152602081018484840111156133b3576133b2612f59565b5b6133be84828561300a565b509392505050565b600082601f8301126133db576133da612f54565b5b81356133eb848260208601613384565b91505092915050565b60006020828403121561340a57613409612c1d565b5b600082013567ffffffffffffffff81111561342857613427612c22565b5b613434848285016133c6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061348457607f821691505b602082108114156134985761349761343d565b5b50919050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b60006134d4600e83612ced565b91506134df8261349e565b602082019050919050565b60006020820190508181036000830152613503816134c7565b9050919050565b7f57524f4e475f46524f4d00000000000000000000000000000000000000000000600082015250565b6000613540600a83612ced565b915061354b8261350a565b602082019050919050565b6000602082019050818103600083015261356f81613533565b9050919050565b7f494e56414c49445f524543495049454e54000000000000000000000000000000600082015250565b60006135ac601183612ced565b91506135b782613576565b602082019050919050565b600060208201905081810360008301526135db8161359f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613618602083612ced565b9150613623826135e2565b602082019050919050565b600060208201905081810360008301526136478161360b565b9050919050565b60008151905061365d81612da7565b92915050565b60006020828403121561367957613678612c1d565b5b60006136878482850161364e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136ca82612d9d565b91506136d583612d9d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561370a57613709613690565b5b828201905092915050565b600060408201905061372a60008301856131d0565b61373760208301846131fa565b9392505050565b600061374982612d9d565b915061375483612d9d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561378d5761378c613690565b5b828202905092915050565b60006040820190506137ad60008301856131d0565b6137ba60208301846131d0565b9392505050565b60006137cc82612d9d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137ff576137fe613690565b5b600182019050919050565b600061381582612f1b565b915060ff82141561382957613828613690565b5b600182019050919050565b600082825260208201905092915050565b50565b6000613855600083613834565b915061386082613845565b600082019050919050565b60006080820190506138806000830186612e32565b61388d6020830185612e32565b61389a60408301846131d0565b81810360608301526138ab81613848565b9050949350505050565b6000815190506138c481612c53565b92915050565b6000602082840312156138e0576138df612c1d565b5b60006138ee848285016138b5565b91505092915050565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b600061392d601083612ced565b9150613938826138f7565b602082019050919050565b6000602082019050818103600083015261395c81613920565b9050919050565b60006040820190506139786000830185612e32565b61398560208301846131d0565b9392505050565b60008151905061399b81613224565b92915050565b6000602082840312156139b7576139b6612c1d565b5b60006139c58482850161398c565b91505092915050565b600081519050919050565b60006139e4826139ce565b6139ee8185613834565b93506139fe818560208601612cfe565b613a0781612d31565b840191505092915050565b6000608082019050613a276000830187612e32565b613a346020830186612e32565b613a4160408301856131d0565b8181036060830152613a5381846139d9565b905095945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613aba602683612ced565b9150613ac582613a5e565b604082019050919050565b60006020820190508181036000830152613ae981613aad565b9050919050565b7f4e4f545f4d494e54454400000000000000000000000000000000000000000000600082015250565b6000613b26600a83612ced565b9150613b3182613af0565b602082019050919050565b60006020820190508181036000830152613b5581613b19565b9050919050565b7f414c52454144595f4d494e544544000000000000000000000000000000000000600082015250565b6000613b92600e83612ced565b9150613b9d82613b5c565b602082019050919050565b60006020820190508181036000830152613bc181613b85565b905091905056fea2646970667358221220824a17b1d1adea2b7f76dfc48fb548e99f0b4d60a570036db9b09d464d800c0464736f6c634300080b0033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000019cd3998f106ecc40ee7668c19c47e18b491e8a6000000000000000000000000000000000000000000000000000000000000004368747470733a2f2f697066732e696f2f697066732f516d51624e7577705939624b4c4c5356716e47567050506135776363576144696566614c42585062424d6a32344c0000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101d85760003560e01c8063761c4c4011610102578063a22cb46511610095578063d33219b411610064578063d33219b414610659578063e985e9c514610684578063f2fde38b146106c1578063fb980a9c146106ea576101d8565b8063a22cb4651461059f578063b88d4fde146105c8578063c87b56dd146105f1578063cb70db9e1461062e576101d8565b806395d89b41116100d157806395d89b41146104f35780639b6860c81461051e5780639d5fa571146105495780639f181b5e14610574576101d8565b8063761c4c4014610458578063771282f614610474578063791a25191461049f5780638da5cb5b146104c8576101d8565b806342842e0e1161017a5780636352211e116101495780636352211e146103ab578063691562a0146103e857806370a0823114610404578063715018a614610441576101d8565b806342842e0e1461030757806342966c681461033057806349df728c14610359578063577255de14610382576101d8565b8063095ea7b3116101b6578063095ea7b31461028257806323b872dd146102ab5780633ccfd60b146102d457806341b66e43146102eb576101d8565b806301ffc9a7146101dd57806306fdde031461021a578063081812fc14610245575b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff9190612c7f565b610713565b6040516102119190612cc7565b60405180910390f35b34801561022657600080fd5b5061022f6107a5565b60405161023c9190612d7b565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190612dd3565b610833565b6040516102799190612e41565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a49190612e88565b610866565b005b3480156102b757600080fd5b506102d260048036038101906102cd9190612ec8565b610a4f565b005b3480156102e057600080fd5b506102e9610e4f565b005b61030560048036038101906103009190613089565b610f1a565b005b34801561031357600080fd5b5061032e60048036038101906103299190612ec8565b611297565b005b34801561033c57600080fd5b5061035760048036038101906103529190612dd3565b6113cf565b005b34801561036557600080fd5b50610380600480360381019061037b9190613136565b6113db565b005b34801561038e57600080fd5b506103a960048036038101906103a49190612dd3565b611558565b005b3480156103b757600080fd5b506103d260048036038101906103cd9190612dd3565b611674565b6040516103df9190612e41565b60405180910390f35b61040260048036038101906103fd9190613163565b6116a7565b005b34801561041057600080fd5b5061042b600480360381019061042691906131a3565b611a22565b60405161043891906131df565b60405180910390f35b34801561044d57600080fd5b50610456611a3a565b005b610472600480360381019061046d9190613163565b611ac2565b005b34801561048057600080fd5b50610489611e3d565b60405161049691906131df565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190612dd3565b611e43565b005b3480156104d457600080fd5b506104dd611ec9565b6040516104ea9190612e41565b60405180910390f35b3480156104ff57600080fd5b50610508611ef3565b6040516105159190612d7b565b60405180910390f35b34801561052a57600080fd5b50610533611f81565b60405161054091906131df565b60405180910390f35b34801561055557600080fd5b5061055e611f87565b60405161056b9190613209565b60405180910390f35b34801561058057600080fd5b50610589611f8c565b60405161059691906131df565b60405180910390f35b3480156105ab57600080fd5b506105c660048036038101906105c19190613250565b611f92565b005b3480156105d457600080fd5b506105ef60048036038101906105ea9190613290565b61208f565b005b3480156105fd57600080fd5b5061061860048036038101906106139190612dd3565b6121ca565b6040516106259190612d7b565b60405180910390f35b34801561063a57600080fd5b5061064361225e565b60405161065091906131df565b60405180910390f35b34801561066557600080fd5b5061066e612264565b60405161067b91906131df565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a69190613313565b61226a565b6040516106b89190612cc7565b60405180910390f35b3480156106cd57600080fd5b506106e860048036038101906106e391906131a3565b612299565b005b3480156106f657600080fd5b50610711600480360381019061070c91906133f4565b612391565b005b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061076e57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061079e5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600080546107b29061346c565b80601f01602080910402602001604051908101604052809291908181526020018280546107de9061346c565b801561082b5780601f106108005761010080835404028352916020019161082b565b820191906000526020600020905b81548152906001019060200180831161080e57829003601f168201915b505050505081565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061095e5750600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61099d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610994906134ea565b60405180910390fd5b826004600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6003600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae790613556565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b57906135c2565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bf857506004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610c895750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbf906134ea565b60405180910390fd5b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b610e57612427565b73ffffffffffffffffffffffffffffffffffffffff16610e75611ec9565b73ffffffffffffffffffffffffffffffffffffffff1614610ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec29061362e565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610f16573d6000803e3d6000fd5b5050565b82826008544210156110ae576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da7ad23336040518263ffffffff1660e01b8152600401610f839190612e41565b602060405180830381865afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc49190613663565b148061106b57506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da7ad23846040518263ffffffff1660e01b81526004016110289190612e41565b602060405180830381865afa158015611045573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110699190613663565b145b156110ad57336040517f901a767e0000000000000000000000000000000000000000000000000000000081526004016110a49190612e41565b60405180910390fd5b5b600b548160ff16600a546110c291906136bf565b106110f9576040517fa2a40cc400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a60ff168160ff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461114c91906136bf565b11156111df578060ff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a091906136bf565b600a6040517fc9cf6a000000000000000000000000000000000000000000000000000000000081526004016111d6929190613715565b60405180910390fd5b348160ff16600c546111f1919061373e565b1115611246578060ff16600c54611208919061373e565b346040517f03eb8b5400000000000000000000000000000000000000000000000000000000815260040161123d929190613798565b60405180910390fd5b60005b8460ff168160ff16101561128f57600a600081548092919061126a906137c1565b919050555061127c86600a548661242f565b80806112879061380a565b915050611249565b505050505050565b6112a2838383610a4f565b60008273ffffffffffffffffffffffffffffffffffffffff163b148061138b575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b81526004016113279392919061386b565b6020604051808303816000875af1158015611346573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136a91906138ca565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b6113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c190613943565b60405180910390fd5b505050565b6113d881612569565b50565b6113e3612427565b73ffffffffffffffffffffffffffffffffffffffff16611401611ec9565b73ffffffffffffffffffffffffffffffffffffffff1614611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144e9061362e565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114929190612e41565b602060405180830381865afa1580156114af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d39190613663565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611510929190613963565b6020604051808303816000875af115801561152f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155391906139a1565b505050565b611560612427565b73ffffffffffffffffffffffffffffffffffffffff1661157e611ec9565b73ffffffffffffffffffffffffffffffffffffffff16146115d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cb9061362e565b60405180910390fd5b6103c981111561161f57806103c96040517f66244271000000000000000000000000000000000000000000000000000000008152600401611616929190613798565b60405180910390fd5b600a5481101561166a5780600a546040517fbfc5a594000000000000000000000000000000000000000000000000000000008152600401611661929190613798565b60405180910390fd5b80600b8190555050565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b818160085442101561183b576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da7ad23336040518263ffffffff1660e01b81526004016117109190612e41565b602060405180830381865afa15801561172d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117519190613663565b14806117f857506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da7ad23846040518263ffffffff1660e01b81526004016117b59190612e41565b602060405180830381865afa1580156117d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f69190613663565b145b1561183a57336040517f901a767e0000000000000000000000000000000000000000000000000000000081526004016118319190612e41565b60405180910390fd5b5b600b548160ff16600a5461184f91906136bf565b10611886576040517fa2a40cc400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a60ff168160ff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118d991906136bf565b111561196c578060ff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461192d91906136bf565b600a6040517fc9cf6a00000000000000000000000000000000000000000000000000000000008152600401611963929190613715565b60405180910390fd5b348160ff16600c5461197e919061373e565b11156119d3578060ff16600c54611995919061373e565b346040517f03eb8b540000000000000000000000000000000000000000000000000000000081526004016119ca929190613798565b60405180910390fd5b60005b8360ff168160ff161015611a1b57600a60008154809291906119f7906137c1565b9190505550611a0885600a54612760565b8080611a139061380a565b9150506119d6565b5050505050565b60026020528060005260406000206000915090505481565b611a42612427565b73ffffffffffffffffffffffffffffffffffffffff16611a60611ec9565b73ffffffffffffffffffffffffffffffffffffffff1614611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad9061362e565b60405180910390fd5b611ac06000612973565b565b8181600854421015611c56576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da7ad23336040518263ffffffff1660e01b8152600401611b2b9190612e41565b602060405180830381865afa158015611b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6c9190613663565b1480611c1357506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da7ad23846040518263ffffffff1660e01b8152600401611bd09190612e41565b602060405180830381865afa158015611bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c119190613663565b145b15611c5557336040517f901a767e000000000000000000000000000000000000000000000000000000008152600401611c4c9190612e41565b60405180910390fd5b5b600b548160ff16600a54611c6a91906136bf565b10611ca1576040517fa2a40cc400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a60ff168160ff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cf491906136bf565b1115611d87578060ff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4891906136bf565b600a6040517fc9cf6a00000000000000000000000000000000000000000000000000000000008152600401611d7e929190613715565b60405180910390fd5b348160ff16600c54611d99919061373e565b1115611dee578060ff16600c54611db0919061373e565b346040517f03eb8b54000000000000000000000000000000000000000000000000000000008152600401611de5929190613798565b60405180910390fd5b60005b8360ff168160ff161015611e3657600a6000815480929190611e12906137c1565b9190505550611e2385600a54612a39565b8080611e2e9061380a565b915050611df1565b5050505050565b600b5481565b611e4b612427565b73ffffffffffffffffffffffffffffffffffffffff16611e69611ec9565b73ffffffffffffffffffffffffffffffffffffffff1614611ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb69061362e565b60405180910390fd5b80600c8190555050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60018054611f009061346c565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2c9061346c565b8015611f795780601f10611f4e57610100808354040283529160200191611f79565b820191906000526020600020905b815481529060010190602001808311611f5c57829003601f168201915b505050505081565b600c5481565b600a81565b600a5481565b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516120839190612cc7565b60405180910390a35050565b61209a848484610a4f565b60008373ffffffffffffffffffffffffffffffffffffffff163b1480612185575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b81526004016121219493929190613a12565b6020604051808303816000875af1158015612140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216491906138ca565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b6121c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bb90613943565b60405180910390fd5b50505050565b6060600980546121d99061346c565b80601f01602080910402602001604051908101604052809291908181526020018280546122059061346c565b80156122525780601f1061222757610100808354040283529160200191612252565b820191906000526020600020905b81548152906001019060200180831161223557829003601f168201915b50505050509050919050565b6103c981565b60085481565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6122a1612427565b73ffffffffffffffffffffffffffffffffffffffff166122bf611ec9565b73ffffffffffffffffffffffffffffffffffffffff1614612315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230c9061362e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237c90613ad0565b60405180910390fd5b61238e81612973565b50565b612399612427565b73ffffffffffffffffffffffffffffffffffffffff166123b7611ec9565b73ffffffffffffffffffffffffffffffffffffffff161461240d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124049061362e565b60405180910390fd5b8060099080519060200190612423929190612b70565b5050565b600033905090565b6124398383612760565b60008373ffffffffffffffffffffffffffffffffffffffff163b1480612525575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff1663150b7a0233600086866040518563ffffffff1660e01b81526004016124c19493929190613a12565b6020604051808303816000875af11580156124e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250491906138ca565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b612564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255b90613943565b60405180910390fd5b505050565b60006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263b90613b3c565b60405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001900391905055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c7906135c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286990613ba8565b60405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612a438282612760565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480612b2d575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a02336000856040518463ffffffff1660e01b8152600401612ac99392919061386b565b6020604051808303816000875af1158015612ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0c91906138ca565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b612b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6390613943565b60405180910390fd5b5050565b828054612b7c9061346c565b90600052602060002090601f016020900481019282612b9e5760008555612be5565b82601f10612bb757805160ff1916838001178555612be5565b82800160010185558215612be5579182015b82811115612be4578251825591602001919060010190612bc9565b5b509050612bf29190612bf6565b5090565b5b80821115612c0f576000816000905550600101612bf7565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612c5c81612c27565b8114612c6757600080fd5b50565b600081359050612c7981612c53565b92915050565b600060208284031215612c9557612c94612c1d565b5b6000612ca384828501612c6a565b91505092915050565b60008115159050919050565b612cc181612cac565b82525050565b6000602082019050612cdc6000830184612cb8565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d1c578082015181840152602081019050612d01565b83811115612d2b576000848401525b50505050565b6000601f19601f8301169050919050565b6000612d4d82612ce2565b612d578185612ced565b9350612d67818560208601612cfe565b612d7081612d31565b840191505092915050565b60006020820190508181036000830152612d958184612d42565b905092915050565b6000819050919050565b612db081612d9d565b8114612dbb57600080fd5b50565b600081359050612dcd81612da7565b92915050565b600060208284031215612de957612de8612c1d565b5b6000612df784828501612dbe565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e2b82612e00565b9050919050565b612e3b81612e20565b82525050565b6000602082019050612e566000830184612e32565b92915050565b612e6581612e20565b8114612e7057600080fd5b50565b600081359050612e8281612e5c565b92915050565b60008060408385031215612e9f57612e9e612c1d565b5b6000612ead85828601612e73565b9250506020612ebe85828601612dbe565b9150509250929050565b600080600060608486031215612ee157612ee0612c1d565b5b6000612eef86828701612e73565b9350506020612f0086828701612e73565b9250506040612f1186828701612dbe565b9150509250925092565b600060ff82169050919050565b612f3181612f1b565b8114612f3c57600080fd5b50565b600081359050612f4e81612f28565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612f9682612d31565b810181811067ffffffffffffffff82111715612fb557612fb4612f5e565b5b80604052505050565b6000612fc8612c13565b9050612fd48282612f8d565b919050565b600067ffffffffffffffff821115612ff457612ff3612f5e565b5b612ffd82612d31565b9050602081019050919050565b82818337600083830152505050565b600061302c61302784612fd9565b612fbe565b90508281526020810184848401111561304857613047612f59565b5b61305384828561300a565b509392505050565b600082601f8301126130705761306f612f54565b5b8135613080848260208601613019565b91505092915050565b6000806000606084860312156130a2576130a1612c1d565b5b60006130b086828701612e73565b93505060206130c186828701612f3f565b925050604084013567ffffffffffffffff8111156130e2576130e1612c22565b5b6130ee8682870161305b565b9150509250925092565b600061310382612e20565b9050919050565b613113816130f8565b811461311e57600080fd5b50565b6000813590506131308161310a565b92915050565b60006020828403121561314c5761314b612c1d565b5b600061315a84828501613121565b91505092915050565b6000806040838503121561317a57613179612c1d565b5b600061318885828601612e73565b925050602061319985828601612f3f565b9150509250929050565b6000602082840312156131b9576131b8612c1d565b5b60006131c784828501612e73565b91505092915050565b6131d981612d9d565b82525050565b60006020820190506131f460008301846131d0565b92915050565b61320381612f1b565b82525050565b600060208201905061321e60008301846131fa565b92915050565b61322d81612cac565b811461323857600080fd5b50565b60008135905061324a81613224565b92915050565b6000806040838503121561326757613266612c1d565b5b600061327585828601612e73565b92505060206132868582860161323b565b9150509250929050565b600080600080608085870312156132aa576132a9612c1d565b5b60006132b887828801612e73565b94505060206132c987828801612e73565b93505060406132da87828801612dbe565b925050606085013567ffffffffffffffff8111156132fb576132fa612c22565b5b6133078782880161305b565b91505092959194509250565b6000806040838503121561332a57613329612c1d565b5b600061333885828601612e73565b925050602061334985828601612e73565b9150509250929050565b600067ffffffffffffffff82111561336e5761336d612f5e565b5b61337782612d31565b9050602081019050919050565b600061339761339284613353565b612fbe565b9050828152602081018484840111156133b3576133b2612f59565b5b6133be84828561300a565b509392505050565b600082601f8301126133db576133da612f54565b5b81356133eb848260208601613384565b91505092915050565b60006020828403121561340a57613409612c1d565b5b600082013567ffffffffffffffff81111561342857613427612c22565b5b613434848285016133c6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061348457607f821691505b602082108114156134985761349761343d565b5b50919050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b60006134d4600e83612ced565b91506134df8261349e565b602082019050919050565b60006020820190508181036000830152613503816134c7565b9050919050565b7f57524f4e475f46524f4d00000000000000000000000000000000000000000000600082015250565b6000613540600a83612ced565b915061354b8261350a565b602082019050919050565b6000602082019050818103600083015261356f81613533565b9050919050565b7f494e56414c49445f524543495049454e54000000000000000000000000000000600082015250565b60006135ac601183612ced565b91506135b782613576565b602082019050919050565b600060208201905081810360008301526135db8161359f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613618602083612ced565b9150613623826135e2565b602082019050919050565b600060208201905081810360008301526136478161360b565b9050919050565b60008151905061365d81612da7565b92915050565b60006020828403121561367957613678612c1d565b5b60006136878482850161364e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136ca82612d9d565b91506136d583612d9d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561370a57613709613690565b5b828201905092915050565b600060408201905061372a60008301856131d0565b61373760208301846131fa565b9392505050565b600061374982612d9d565b915061375483612d9d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561378d5761378c613690565b5b828202905092915050565b60006040820190506137ad60008301856131d0565b6137ba60208301846131d0565b9392505050565b60006137cc82612d9d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137ff576137fe613690565b5b600182019050919050565b600061381582612f1b565b915060ff82141561382957613828613690565b5b600182019050919050565b600082825260208201905092915050565b50565b6000613855600083613834565b915061386082613845565b600082019050919050565b60006080820190506138806000830186612e32565b61388d6020830185612e32565b61389a60408301846131d0565b81810360608301526138ab81613848565b9050949350505050565b6000815190506138c481612c53565b92915050565b6000602082840312156138e0576138df612c1d565b5b60006138ee848285016138b5565b91505092915050565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b600061392d601083612ced565b9150613938826138f7565b602082019050919050565b6000602082019050818103600083015261395c81613920565b9050919050565b60006040820190506139786000830185612e32565b61398560208301846131d0565b9392505050565b60008151905061399b81613224565b92915050565b6000602082840312156139b7576139b6612c1d565b5b60006139c58482850161398c565b91505092915050565b600081519050919050565b60006139e4826139ce565b6139ee8185613834565b93506139fe818560208601612cfe565b613a0781612d31565b840191505092915050565b6000608082019050613a276000830187612e32565b613a346020830186612e32565b613a4160408301856131d0565b8181036060830152613a5381846139d9565b905095945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613aba602683612ced565b9150613ac582613a5e565b604082019050919050565b60006020820190508181036000830152613ae981613aad565b9050919050565b7f4e4f545f4d494e54454400000000000000000000000000000000000000000000600082015250565b6000613b26600a83612ced565b9150613b3182613af0565b602082019050919050565b60006020820190508181036000830152613b5581613b19565b9050919050565b7f414c52454144595f4d494e544544000000000000000000000000000000000000600082015250565b6000613b92600e83612ced565b9150613b9d82613b5c565b602082019050919050565b60006020820190508181036000830152613bc181613b85565b905091905056fea2646970667358221220824a17b1d1adea2b7f76dfc48fb548e99f0b4d60a570036db9b09d464d800c0464736f6c634300080b0033

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

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000019cd3998f106ecc40ee7668c19c47e18b491e8a6000000000000000000000000000000000000000000000000000000000000004368747470733a2f2f697066732e696f2f697066732f516d51624e7577705939624b4c4c5356716e47567050506135776363576144696566614c42585062424d6a32344c0000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _tokenURI (string): https://ipfs.io/ipfs/QmQbNuwpY9bKLLSVqnGVpPPa5wccWaDiefaLBXPbBMj24L
Arg [1] : _bottoStaking (address): 0x19CD3998f106eCC40eE7668c19C47e18b491e8a6

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 00000000000000000000000019cd3998f106ecc40ee7668c19c47e18b491e8a6
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000043
Arg [3] : 68747470733a2f2f697066732e696f2f697066732f516d51624e757770593962
Arg [4] : 4b4c4c5356716e47567050506135776363576144696566614c42585062424d6a
Arg [5] : 32344c0000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

13995:6967:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6555:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3140:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3593:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4220:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4732:764;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19540:143;;;;;;;;;;;;;:::i;:::-;;17878:317;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5504:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18374:79;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19773:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18909:376;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3542:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17062:251;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3489:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11832:103;;;;;;;;;;;;;:::i;:::-;;17470:258;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14650:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19363:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11181:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3167:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14731:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14394:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14316:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4517:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5921:439;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16561:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14516:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14189:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3648:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12090:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18685:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6555:340;6631:4;6683:10;6668:25;;:11;:25;;;;:101;;;;6759:10;6744:25;;:11;:25;;;;6668:101;:177;;;;6835:10;6820:25;;:11;:25;;;;6668:177;6648:197;;6555:340;;;:::o;3140:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3593:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;4220:289::-;4292:13;4308:7;:11;4316:2;4308:11;;;;;;;;;;;;;;;;;;;;;4292:27;;4354:5;4340:19;;:10;:19;;;:58;;;;4363:16;:23;4380:5;4363:23;;;;;;;;;;;;;;;:35;4387:10;4363:35;;;;;;;;;;;;;;;;;;;;;;;;;4340:58;4332:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4448:7;4430:11;:15;4442:2;4430:15;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;4498:2;4489:7;4473:28;;4482:5;4473:28;;;;;;;;;;;;4281:228;4220:289;;:::o;4732:764::-;4868:7;:11;4876:2;4868:11;;;;;;;;;;;;;;;;;;;;;4860:19;;:4;:19;;;4852:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;4929:1;4915:16;;:2;:16;;;;4907:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;5002:4;4988:18;;:10;:18;;;:51;;;;5024:11;:15;5036:2;5024:15;;;;;;;;;;;;;;;;;;;;;5010:29;;:10;:29;;;4988:51;:89;;;;5043:16;:22;5060:4;5043:22;;;;;;;;;;;;;;;:34;5066:10;5043:34;;;;;;;;;;;;;;;;;;;;;;;;;4988:89;4966:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;5324:9;:15;5334:4;5324:15;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;5358:9;:13;5368:2;5358:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;;5411:2;5397:7;:11;5405:2;5397:11;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;5433:11;:15;5445:2;5433:15;;;;;;;;;;;;5426:22;;;;;;;;;;;5485:2;5481;5466:22;;5475:4;5466:22;;;;;;;;;;;;4732:764;;;:::o;19540:143::-;11412:12;:10;:12::i;:::-;11401:23;;:7;:5;:7::i;:::-;:23;;;11393:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19588:15:::1;19606:21;19588:39;;19646:10;19638:28;;:37;19667:7;19638:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19577:106;19540:143::o:0;17878:317::-;18042:2;18046:6;15238:8;;15220:15;:26;15216:209;;;15305:1;15266:12;;;;;;;;;;;:23;;;15290:10;15266:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;:76;;;;15341:1;15310:12;;;;;;;;;;;:23;;;15334:2;15310:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:32;15266:76;15263:151;;;15387:10;15370:28;;;;;;;;;;;:::i;:::-;;;;;;;;15263:151;15216:209;15462:13;;15452:6;15439:19;;:10;;:19;;;;:::i;:::-;:36;15435:102;;15499:26;;;;;;;;;;;;;;15435:102;14437:2;15551:43;;15567:6;15551:22;;:9;:13;15561:2;15551:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;:43;15547:154;;;15662:6;15646:22;;:9;:13;15656:2;15646:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;14437:2;15618:71;;;;;;;;;;;;:::i;:::-;;;;;;;;15547:154;15742:9;15733:6;15715:24;;:15;;:24;;;;:::i;:::-;:36;15711:130;;;15811:6;15793:24;;:15;;:24;;;;:::i;:::-;15819:9;15775:54;;;;;;;;;;;;:::i;:::-;;;;;;;;15711:130;18075:7:::1;18070:118;18090:6;18086:10;;:1;:10;;;18070:118;;;18118:10;;:12;;;;;;;;;:::i;:::-;;;;;;18145:31;18155:2;18159:10;;18171:4;18145:9;:31::i;:::-;18098:3;;;;;:::i;:::-;;;;18070:118;;;;17878:317:::0;;;;;:::o;5504:409::-;5628:26;5641:4;5647:2;5651;5628:12;:26::i;:::-;5707:1;5689:2;:14;;;:19;:172;;;;5816:45;;;5729:132;;;5749:2;5729:40;;;5770:10;5782:4;5788:2;5729:66;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:132;;;;5689:172;5667:238;;;;;;;;;;;;:::i;:::-;;;;;;;;;5504:409;;;:::o;18374:79::-;18431:14;18437:7;18431:5;:14::i;:::-;18374:79;:::o;19773:168::-;11412:12;:10;:12::i;:::-;11401:23;;:7;:5;:7::i;:::-;:23;;;11393:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19839:15:::1;19857:5;:15;;;19881:4;19857:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19839:48;;19898:5;:14;;;19913:10;19925:7;19898:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19828:113;19773:168:::0;:::o;18909:376::-;11412:12;:10;:12::i;:::-;11401:23;;:7;:5;:7::i;:::-;:23;;;11393:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14566:3:::1;18987:7;:33;18983:144;;;19082:7;14566:3;19044:71;;;;;;;;;;;;:::i;:::-;;;;;;;;18983:144;19152:10;;19142:7;:20;19138:106;;;19212:7;19221:10;;19186:46;;;;;;;;;;;;:::i;:::-;;;;;;;;19138:106;19270:7;19254:13;:23;;;;18909:376:::0;:::o;3542:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;17062:251::-;17169:2;17173:6;15238:8;;15220:15;:26;15216:209;;;15305:1;15266:12;;;;;;;;;;;:23;;;15290:10;15266:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;:76;;;;15341:1;15310:12;;;;;;;;;;;:23;;;15334:2;15310:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:32;15266:76;15263:151;;;15387:10;15370:28;;;;;;;;;;;:::i;:::-;;;;;;;;15263:151;15216:209;15462:13;;15452:6;15439:19;;:10;;:19;;;;:::i;:::-;:36;15435:102;;15499:26;;;;;;;;;;;;;;15435:102;14437:2;15551:43;;15567:6;15551:22;;:9;:13;15561:2;15551:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;:43;15547:154;;;15662:6;15646:22;;:9;:13;15656:2;15646:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;14437:2;15618:71;;;;;;;;;;;;:::i;:::-;;;;;;;;15547:154;15742:9;15733:6;15715:24;;:15;;:24;;;;:::i;:::-;:36;15711:130;;;15811:6;15793:24;;:15;;:24;;;;:::i;:::-;15819:9;15775:54;;;;;;;;;;;;:::i;:::-;;;;;;;;15711:130;17203:7:::1;17198:108;17218:6;17214:10;;:1;:10;;;17198:108;;;17246:10;;:12;;;;;;;;;:::i;:::-;;;;;;17273:21;17279:2;17283:10;;17273:5;:21::i;:::-;17226:3;;;;;:::i;:::-;;;;17198:108;;;;17062:251:::0;;;;:::o;3489:44::-;;;;;;;;;;;;;;;;;:::o;11832:103::-;11412:12;:10;:12::i;:::-;11401:23;;:7;:5;:7::i;:::-;:23;;;11393:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11897:30:::1;11924:1;11897:18;:30::i;:::-;11832:103::o:0;17470:258::-;17581:2;17585:6;15238:8;;15220:15;:26;15216:209;;;15305:1;15266:12;;;;;;;;;;;:23;;;15290:10;15266:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;:76;;;;15341:1;15310:12;;;;;;;;;;;:23;;;15334:2;15310:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:32;15266:76;15263:151;;;15387:10;15370:28;;;;;;;;;;;:::i;:::-;;;;;;;;15263:151;15216:209;15462:13;;15452:6;15439:19;;:10;;:19;;;;:::i;:::-;:36;15435:102;;15499:26;;;;;;;;;;;;;;15435:102;14437:2;15551:43;;15567:6;15551:22;;:9;:13;15561:2;15551:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;:43;15547:154;;;15662:6;15646:22;;:9;:13;15656:2;15646:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;14437:2;15618:71;;;;;;;;;;;;:::i;:::-;;;;;;;;15547:154;15742:9;15733:6;15715:24;;:15;;:24;;;;:::i;:::-;:36;15711:130;;;15811:6;15793:24;;:15;;:24;;;;:::i;:::-;15819:9;15775:54;;;;;;;;;;;;:::i;:::-;;;;;;;;15711:130;17614:7:::1;17609:112;17629:6;17625:10;;:1;:10;;;17609:112;;;17657:10;;:12;;;;;;;;;:::i;:::-;;;;;;17684:25;17694:2;17698:10;;17684:9;:25::i;:::-;17637:3;;;;;:::i;:::-;;;;17609:112;;;;17470:258:::0;;;;:::o;14650:34::-;;;;:::o;19363:122::-;11412:12;:10;:12::i;:::-;11401:23;;:7;:5;:7::i;:::-;:23;;;11393:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19461:16:::1;19443:15;:34;;;;19363:122:::0;:::o;11181:87::-;11227:7;11254:6;;;;;;;;;;;11247:13;;11181:87;:::o;3167:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14731:42::-;;;;:::o;14394:45::-;14437:2;14394:45;:::o;14316:25::-;;;;:::o;4517:207::-;4644:8;4603:16;:28;4620:10;4603:28;;;;;;;;;;;;;;;:38;4632:8;4603:38;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;4697:8;4670:46;;4685:10;4670:46;;;4707:8;4670:46;;;;;;:::i;:::-;;;;;;;;4517:207;;:::o;5921:439::-;6073:26;6086:4;6092:2;6096;6073:12;:26::i;:::-;6152:1;6134:2;:14;;;:19;:174;;;;6263:45;;;6174:134;;;6194:2;6174:40;;;6215:10;6227:4;6233:2;6237:4;6174:68;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:134;;;;6134:174;6112:240;;;;;;;;;;;;:::i;:::-;;;;;;;;;5921:439;;;;:::o;16561:180::-;16679:13;16717:16;16710:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16561:180;;;:::o;14516:53::-;14566:3;14516:53;:::o;14189:23::-;;;;:::o;3648:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12090:201::-;11412:12;:10;:12::i;:::-;11401:23;;:7;:5;:7::i;:::-;:23;;;11393:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12199:1:::1;12179:22;;:8;:22;;;;12171:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12255:28;12274:8;12255:18;:28::i;:::-;12090:201:::0;:::o;18685:136::-;11412:12;:10;:12::i;:::-;11401:23;;:7;:5;:7::i;:::-;:23;;;11393:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18796:17:::1;18777:16;:36;;;;;;;;;;;;:::i;:::-;;18685:136:::0;:::o;9905:98::-;9958:7;9985:10;9978:17;;9905:98;:::o;8430:404::-;8554:13;8560:2;8564;8554:5;:13::i;:::-;8620:1;8602:2;:14;;;:19;:180;;;;8737:45;;;8642:140;;;8662:2;8642:40;;;8683:10;8703:1;8707:2;8711:4;8642:74;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:140;;;;8602:180;8580:246;;;;;;;;;;;;:::i;:::-;;;;;;;;;8430:404;;;:::o;7484:389::-;7539:13;7555:7;:11;7563:2;7555:11;;;;;;;;;;;;;;;;;;;;;7539:27;;7610:1;7587:25;;:7;:11;7595:2;7587:11;;;;;;;;;;;;;;;;;;;;;:25;;;;7579:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7721:9;:16;7731:5;7721:16;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;7770:7;:11;7778:2;7770:11;;;;;;;;;;;;7763:18;;;;;;;;;;;7801:11;:15;7813:2;7801:15;;;;;;;;;;;;7794:22;;;;;;;;;;;7862:2;7858:1;7834:31;;7843:5;7834:31;;;;;;;;;;;;7528:345;7484:389;:::o;7095:381::-;7184:1;7170:16;;:2;:16;;;;7162:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7252:1;7229:25;;:7;:11;7237:2;7229:11;;;;;;;;;;;;;;;;;;;;;:25;;;7221:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;7367:9;:13;7377:2;7367:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;;7420:2;7406:7;:11;7414:2;7406:11;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;7465:2;7461;7440:28;;7457:1;7440:28;;;;;;;;;;;;7095:381;;:::o;12451:191::-;12525:16;12544:6;;;;;;;;;;;12525:25;;12570:8;12561:6;;:17;;;;;;;;;;;;;;;;;;12625:8;12594:40;;12615:8;12594:40;;;;;;;;;;;;12514:128;12451:191;:::o;8073:349::-;8144:13;8150:2;8154;8144:5;:13::i;:::-;8210:1;8192:2;:14;;;:19;:178;;;;8325:45;;;8232:138;;;8252:2;8232:40;;;8273:10;8293:1;8297:2;8232:72;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:138;;;;8192:178;8170:244;;;;;;;;;;;;:::i;:::-;;;;;;;;;8073:349;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:619::-;5015:6;5023;5031;5080:2;5068:9;5059:7;5055:23;5051:32;5048:119;;;5086:79;;:::i;:::-;5048:119;5206:1;5231:53;5276:7;5267:6;5256:9;5252:22;5231:53;:::i;:::-;5221:63;;5177:117;5333:2;5359:53;5404:7;5395:6;5384:9;5380:22;5359:53;:::i;:::-;5349:63;;5304:118;5461:2;5487:53;5532:7;5523:6;5512:9;5508:22;5487:53;:::i;:::-;5477:63;;5432:118;4938:619;;;;;:::o;5563:86::-;5598:7;5638:4;5631:5;5627:16;5616:27;;5563:86;;;:::o;5655:118::-;5726:22;5742:5;5726:22;:::i;:::-;5719:5;5716:33;5706:61;;5763:1;5760;5753:12;5706:61;5655:118;:::o;5779:135::-;5823:5;5861:6;5848:20;5839:29;;5877:31;5902:5;5877:31;:::i;:::-;5779:135;;;;:::o;5920:117::-;6029:1;6026;6019:12;6043:117;6152:1;6149;6142:12;6166:180;6214:77;6211:1;6204:88;6311:4;6308:1;6301:15;6335:4;6332:1;6325:15;6352:281;6435:27;6457:4;6435:27;:::i;:::-;6427:6;6423:40;6565:6;6553:10;6550:22;6529:18;6517:10;6514:34;6511:62;6508:88;;;6576:18;;:::i;:::-;6508:88;6616:10;6612:2;6605:22;6395:238;6352:281;;:::o;6639:129::-;6673:6;6700:20;;:::i;:::-;6690:30;;6729:33;6757:4;6749:6;6729:33;:::i;:::-;6639:129;;;:::o;6774:307::-;6835:4;6925:18;6917:6;6914:30;6911:56;;;6947:18;;:::i;:::-;6911:56;6985:29;7007:6;6985:29;:::i;:::-;6977:37;;7069:4;7063;7059:15;7051:23;;6774:307;;;:::o;7087:154::-;7171:6;7166:3;7161;7148:30;7233:1;7224:6;7219:3;7215:16;7208:27;7087:154;;;:::o;7247:410::-;7324:5;7349:65;7365:48;7406:6;7365:48;:::i;:::-;7349:65;:::i;:::-;7340:74;;7437:6;7430:5;7423:21;7475:4;7468:5;7464:16;7513:3;7504:6;7499:3;7495:16;7492:25;7489:112;;;7520:79;;:::i;:::-;7489:112;7610:41;7644:6;7639:3;7634;7610:41;:::i;:::-;7330:327;7247:410;;;;;:::o;7676:338::-;7731:5;7780:3;7773:4;7765:6;7761:17;7757:27;7747:122;;7788:79;;:::i;:::-;7747:122;7905:6;7892:20;7930:78;8004:3;7996:6;7989:4;7981:6;7977:17;7930:78;:::i;:::-;7921:87;;7737:277;7676:338;;;;:::o;8020:793::-;8104:6;8112;8120;8169:2;8157:9;8148:7;8144:23;8140:32;8137:119;;;8175:79;;:::i;:::-;8137:119;8295:1;8320:53;8365:7;8356:6;8345:9;8341:22;8320:53;:::i;:::-;8310:63;;8266:117;8422:2;8448:51;8491:7;8482:6;8471:9;8467:22;8448:51;:::i;:::-;8438:61;;8393:116;8576:2;8565:9;8561:18;8548:32;8607:18;8599:6;8596:30;8593:117;;;8629:79;;:::i;:::-;8593:117;8734:62;8788:7;8779:6;8768:9;8764:22;8734:62;:::i;:::-;8724:72;;8519:287;8020:793;;;;;:::o;8819:110::-;8870:7;8899:24;8917:5;8899:24;:::i;:::-;8888:35;;8819:110;;;:::o;8935:150::-;9022:38;9054:5;9022:38;:::i;:::-;9015:5;9012:49;9002:77;;9075:1;9072;9065:12;9002:77;8935:150;:::o;9091:167::-;9151:5;9189:6;9176:20;9167:29;;9205:47;9246:5;9205:47;:::i;:::-;9091:167;;;;:::o;9264:357::-;9337:6;9386:2;9374:9;9365:7;9361:23;9357:32;9354:119;;;9392:79;;:::i;:::-;9354:119;9512:1;9537:67;9596:7;9587:6;9576:9;9572:22;9537:67;:::i;:::-;9527:77;;9483:131;9264:357;;;;:::o;9627:470::-;9693:6;9701;9750:2;9738:9;9729:7;9725:23;9721:32;9718:119;;;9756:79;;:::i;:::-;9718:119;9876:1;9901:53;9946:7;9937:6;9926:9;9922:22;9901:53;:::i;:::-;9891:63;;9847:117;10003:2;10029:51;10072:7;10063:6;10052:9;10048:22;10029:51;:::i;:::-;10019:61;;9974:116;9627:470;;;;;:::o;10103:329::-;10162:6;10211:2;10199:9;10190:7;10186:23;10182:32;10179:119;;;10217:79;;:::i;:::-;10179:119;10337:1;10362:53;10407:7;10398:6;10387:9;10383:22;10362:53;:::i;:::-;10352:63;;10308:117;10103:329;;;;:::o;10438:118::-;10525:24;10543:5;10525:24;:::i;:::-;10520:3;10513:37;10438:118;;:::o;10562:222::-;10655:4;10693:2;10682:9;10678:18;10670:26;;10706:71;10774:1;10763:9;10759:17;10750:6;10706:71;:::i;:::-;10562:222;;;;:::o;10790:112::-;10873:22;10889:5;10873:22;:::i;:::-;10868:3;10861:35;10790:112;;:::o;10908:214::-;10997:4;11035:2;11024:9;11020:18;11012:26;;11048:67;11112:1;11101:9;11097:17;11088:6;11048:67;:::i;:::-;10908:214;;;;:::o;11128:116::-;11198:21;11213:5;11198:21;:::i;:::-;11191:5;11188:32;11178:60;;11234:1;11231;11224:12;11178:60;11128:116;:::o;11250:133::-;11293:5;11331:6;11318:20;11309:29;;11347:30;11371:5;11347:30;:::i;:::-;11250:133;;;;:::o;11389:468::-;11454:6;11462;11511:2;11499:9;11490:7;11486:23;11482:32;11479:119;;;11517:79;;:::i;:::-;11479:119;11637:1;11662:53;11707:7;11698:6;11687:9;11683:22;11662:53;:::i;:::-;11652:63;;11608:117;11764:2;11790:50;11832:7;11823:6;11812:9;11808:22;11790:50;:::i;:::-;11780:60;;11735:115;11389:468;;;;;:::o;11863:943::-;11958:6;11966;11974;11982;12031:3;12019:9;12010:7;12006:23;12002:33;11999:120;;;12038:79;;:::i;:::-;11999:120;12158:1;12183:53;12228:7;12219:6;12208:9;12204:22;12183:53;:::i;:::-;12173:63;;12129:117;12285:2;12311:53;12356:7;12347:6;12336:9;12332:22;12311:53;:::i;:::-;12301:63;;12256:118;12413:2;12439:53;12484:7;12475:6;12464:9;12460:22;12439:53;:::i;:::-;12429:63;;12384:118;12569:2;12558:9;12554:18;12541:32;12600:18;12592:6;12589:30;12586:117;;;12622:79;;:::i;:::-;12586:117;12727:62;12781:7;12772:6;12761:9;12757:22;12727:62;:::i;:::-;12717:72;;12512:287;11863:943;;;;;;;:::o;12812:474::-;12880:6;12888;12937:2;12925:9;12916:7;12912:23;12908:32;12905:119;;;12943:79;;:::i;:::-;12905:119;13063:1;13088:53;13133:7;13124:6;13113:9;13109:22;13088:53;:::i;:::-;13078:63;;13034:117;13190:2;13216:53;13261:7;13252:6;13241:9;13237:22;13216:53;:::i;:::-;13206:63;;13161:118;12812:474;;;;;:::o;13292:308::-;13354:4;13444:18;13436:6;13433:30;13430:56;;;13466:18;;:::i;:::-;13430:56;13504:29;13526:6;13504:29;:::i;:::-;13496:37;;13588:4;13582;13578:15;13570:23;;13292:308;;;:::o;13606:412::-;13684:5;13709:66;13725:49;13767:6;13725:49;:::i;:::-;13709:66;:::i;:::-;13700:75;;13798:6;13791:5;13784:21;13836:4;13829:5;13825:16;13874:3;13865:6;13860:3;13856:16;13853:25;13850:112;;;13881:79;;:::i;:::-;13850:112;13971:41;14005:6;14000:3;13995;13971:41;:::i;:::-;13690:328;13606:412;;;;;:::o;14038:340::-;14094:5;14143:3;14136:4;14128:6;14124:17;14120:27;14110:122;;14151:79;;:::i;:::-;14110:122;14268:6;14255:20;14293:79;14368:3;14360:6;14353:4;14345:6;14341:17;14293:79;:::i;:::-;14284:88;;14100:278;14038:340;;;;:::o;14384:509::-;14453:6;14502:2;14490:9;14481:7;14477:23;14473:32;14470:119;;;14508:79;;:::i;:::-;14470:119;14656:1;14645:9;14641:17;14628:31;14686:18;14678:6;14675:30;14672:117;;;14708:79;;:::i;:::-;14672:117;14813:63;14868:7;14859:6;14848:9;14844:22;14813:63;:::i;:::-;14803:73;;14599:287;14384:509;;;;:::o;14899:180::-;14947:77;14944:1;14937:88;15044:4;15041:1;15034:15;15068:4;15065:1;15058:15;15085:320;15129:6;15166:1;15160:4;15156:12;15146:22;;15213:1;15207:4;15203:12;15234:18;15224:81;;15290:4;15282:6;15278:17;15268:27;;15224:81;15352:2;15344:6;15341:14;15321:18;15318:38;15315:84;;;15371:18;;:::i;:::-;15315:84;15136:269;15085:320;;;:::o;15411:164::-;15551:16;15547:1;15539:6;15535:14;15528:40;15411:164;:::o;15581:366::-;15723:3;15744:67;15808:2;15803:3;15744:67;:::i;:::-;15737:74;;15820:93;15909:3;15820:93;:::i;:::-;15938:2;15933:3;15929:12;15922:19;;15581:366;;;:::o;15953:419::-;16119:4;16157:2;16146:9;16142:18;16134:26;;16206:9;16200:4;16196:20;16192:1;16181:9;16177:17;16170:47;16234:131;16360:4;16234:131;:::i;:::-;16226:139;;15953:419;;;:::o;16378:160::-;16518:12;16514:1;16506:6;16502:14;16495:36;16378:160;:::o;16544:366::-;16686:3;16707:67;16771:2;16766:3;16707:67;:::i;:::-;16700:74;;16783:93;16872:3;16783:93;:::i;:::-;16901:2;16896:3;16892:12;16885:19;;16544:366;;;:::o;16916:419::-;17082:4;17120:2;17109:9;17105:18;17097:26;;17169:9;17163:4;17159:20;17155:1;17144:9;17140:17;17133:47;17197:131;17323:4;17197:131;:::i;:::-;17189:139;;16916:419;;;:::o;17341:167::-;17481:19;17477:1;17469:6;17465:14;17458:43;17341:167;:::o;17514:366::-;17656:3;17677:67;17741:2;17736:3;17677:67;:::i;:::-;17670:74;;17753:93;17842:3;17753:93;:::i;:::-;17871:2;17866:3;17862:12;17855:19;;17514:366;;;:::o;17886:419::-;18052:4;18090:2;18079:9;18075:18;18067:26;;18139:9;18133:4;18129:20;18125:1;18114:9;18110:17;18103:47;18167:131;18293:4;18167:131;:::i;:::-;18159:139;;17886:419;;;:::o;18311:182::-;18451:34;18447:1;18439:6;18435:14;18428:58;18311:182;:::o;18499:366::-;18641:3;18662:67;18726:2;18721:3;18662:67;:::i;:::-;18655:74;;18738:93;18827:3;18738:93;:::i;:::-;18856:2;18851:3;18847:12;18840:19;;18499:366;;;:::o;18871:419::-;19037:4;19075:2;19064:9;19060:18;19052:26;;19124:9;19118:4;19114:20;19110:1;19099:9;19095:17;19088:47;19152:131;19278:4;19152:131;:::i;:::-;19144:139;;18871:419;;;:::o;19296:143::-;19353:5;19384:6;19378:13;19369:22;;19400:33;19427:5;19400:33;:::i;:::-;19296:143;;;;:::o;19445:351::-;19515:6;19564:2;19552:9;19543:7;19539:23;19535:32;19532:119;;;19570:79;;:::i;:::-;19532:119;19690:1;19715:64;19771:7;19762:6;19751:9;19747:22;19715:64;:::i;:::-;19705:74;;19661:128;19445:351;;;;:::o;19802:180::-;19850:77;19847:1;19840:88;19947:4;19944:1;19937:15;19971:4;19968:1;19961:15;19988:305;20028:3;20047:20;20065:1;20047:20;:::i;:::-;20042:25;;20081:20;20099:1;20081:20;:::i;:::-;20076:25;;20235:1;20167:66;20163:74;20160:1;20157:81;20154:107;;;20241:18;;:::i;:::-;20154:107;20285:1;20282;20278:9;20271:16;;19988:305;;;;:::o;20299:324::-;20416:4;20454:2;20443:9;20439:18;20431:26;;20467:71;20535:1;20524:9;20520:17;20511:6;20467:71;:::i;:::-;20548:68;20612:2;20601:9;20597:18;20588:6;20548:68;:::i;:::-;20299:324;;;;;:::o;20629:348::-;20669:7;20692:20;20710:1;20692:20;:::i;:::-;20687:25;;20726:20;20744:1;20726:20;:::i;:::-;20721:25;;20914:1;20846:66;20842:74;20839:1;20836:81;20831:1;20824:9;20817:17;20813:105;20810:131;;;20921:18;;:::i;:::-;20810:131;20969:1;20966;20962:9;20951:20;;20629:348;;;;:::o;20983:332::-;21104:4;21142:2;21131:9;21127:18;21119:26;;21155:71;21223:1;21212:9;21208:17;21199:6;21155:71;:::i;:::-;21236:72;21304:2;21293:9;21289:18;21280:6;21236:72;:::i;:::-;20983:332;;;;;:::o;21321:233::-;21360:3;21383:24;21401:5;21383:24;:::i;:::-;21374:33;;21429:66;21422:5;21419:77;21416:103;;;21499:18;;:::i;:::-;21416:103;21546:1;21539:5;21535:13;21528:20;;21321:233;;;:::o;21560:167::-;21597:3;21620:22;21636:5;21620:22;:::i;:::-;21611:31;;21664:4;21657:5;21654:15;21651:41;;;21672:18;;:::i;:::-;21651:41;21719:1;21712:5;21708:13;21701:20;;21560:167;;;:::o;21733:168::-;21816:11;21850:6;21845:3;21838:19;21890:4;21885:3;21881:14;21866:29;;21733:168;;;;:::o;21907:114::-;;:::o;22027:362::-;22168:3;22189:65;22252:1;22247:3;22189:65;:::i;:::-;22182:72;;22263:93;22352:3;22263:93;:::i;:::-;22381:1;22376:3;22372:11;22365:18;;22027:362;;;:::o;22395:748::-;22644:4;22682:3;22671:9;22667:19;22659:27;;22696:71;22764:1;22753:9;22749:17;22740:6;22696:71;:::i;:::-;22777:72;22845:2;22834:9;22830:18;22821:6;22777:72;:::i;:::-;22859;22927:2;22916:9;22912:18;22903:6;22859:72;:::i;:::-;22978:9;22972:4;22968:20;22963:2;22952:9;22948:18;22941:48;23006:130;23131:4;23006:130;:::i;:::-;22998:138;;22395:748;;;;;;:::o;23149:141::-;23205:5;23236:6;23230:13;23221:22;;23252:32;23278:5;23252:32;:::i;:::-;23149:141;;;;:::o;23296:349::-;23365:6;23414:2;23402:9;23393:7;23389:23;23385:32;23382:119;;;23420:79;;:::i;:::-;23382:119;23540:1;23565:63;23620:7;23611:6;23600:9;23596:22;23565:63;:::i;:::-;23555:73;;23511:127;23296:349;;;;:::o;23651:166::-;23791:18;23787:1;23779:6;23775:14;23768:42;23651:166;:::o;23823:366::-;23965:3;23986:67;24050:2;24045:3;23986:67;:::i;:::-;23979:74;;24062:93;24151:3;24062:93;:::i;:::-;24180:2;24175:3;24171:12;24164:19;;23823:366;;;:::o;24195:419::-;24361:4;24399:2;24388:9;24384:18;24376:26;;24448:9;24442:4;24438:20;24434:1;24423:9;24419:17;24412:47;24476:131;24602:4;24476:131;:::i;:::-;24468:139;;24195:419;;;:::o;24620:332::-;24741:4;24779:2;24768:9;24764:18;24756:26;;24792:71;24860:1;24849:9;24845:17;24836:6;24792:71;:::i;:::-;24873:72;24941:2;24930:9;24926:18;24917:6;24873:72;:::i;:::-;24620:332;;;;;:::o;24958:137::-;25012:5;25043:6;25037:13;25028:22;;25059:30;25083:5;25059:30;:::i;:::-;24958:137;;;;:::o;25101:345::-;25168:6;25217:2;25205:9;25196:7;25192:23;25188:32;25185:119;;;25223:79;;:::i;:::-;25185:119;25343:1;25368:61;25421:7;25412:6;25401:9;25397:22;25368:61;:::i;:::-;25358:71;;25314:125;25101:345;;;;:::o;25452:98::-;25503:6;25537:5;25531:12;25521:22;;25452:98;;;:::o;25556:360::-;25642:3;25670:38;25702:5;25670:38;:::i;:::-;25724:70;25787:6;25782:3;25724:70;:::i;:::-;25717:77;;25803:52;25848:6;25843:3;25836:4;25829:5;25825:16;25803:52;:::i;:::-;25880:29;25902:6;25880:29;:::i;:::-;25875:3;25871:39;25864:46;;25646:270;25556:360;;;;:::o;25922:640::-;26117:4;26155:3;26144:9;26140:19;26132:27;;26169:71;26237:1;26226:9;26222:17;26213:6;26169:71;:::i;:::-;26250:72;26318:2;26307:9;26303:18;26294:6;26250:72;:::i;:::-;26332;26400:2;26389:9;26385:18;26376:6;26332:72;:::i;:::-;26451:9;26445:4;26441:20;26436:2;26425:9;26421:18;26414:48;26479:76;26550:4;26541:6;26479:76;:::i;:::-;26471:84;;25922:640;;;;;;;:::o;26568:225::-;26708:34;26704:1;26696:6;26692:14;26685:58;26777:8;26772:2;26764:6;26760:15;26753:33;26568:225;:::o;26799:366::-;26941:3;26962:67;27026:2;27021:3;26962:67;:::i;:::-;26955:74;;27038:93;27127:3;27038:93;:::i;:::-;27156:2;27151:3;27147:12;27140:19;;26799:366;;;:::o;27171:419::-;27337:4;27375:2;27364:9;27360:18;27352:26;;27424:9;27418:4;27414:20;27410:1;27399:9;27395:17;27388:47;27452:131;27578:4;27452:131;:::i;:::-;27444:139;;27171:419;;;:::o;27596:160::-;27736:12;27732:1;27724:6;27720:14;27713:36;27596:160;:::o;27762:366::-;27904:3;27925:67;27989:2;27984:3;27925:67;:::i;:::-;27918:74;;28001:93;28090:3;28001:93;:::i;:::-;28119:2;28114:3;28110:12;28103:19;;27762:366;;;:::o;28134:419::-;28300:4;28338:2;28327:9;28323:18;28315:26;;28387:9;28381:4;28377:20;28373:1;28362:9;28358:17;28351:47;28415:131;28541:4;28415:131;:::i;:::-;28407:139;;28134:419;;;:::o;28559:164::-;28699:16;28695:1;28687:6;28683:14;28676:40;28559:164;:::o;28729:366::-;28871:3;28892:67;28956:2;28951:3;28892:67;:::i;:::-;28885:74;;28968:93;29057:3;28968:93;:::i;:::-;29086:2;29081:3;29077:12;29070:19;;28729:366;;;:::o;29101:419::-;29267:4;29305:2;29294:9;29290:18;29282:26;;29354:9;29348:4;29344:20;29340:1;29329:9;29325:17;29318:47;29382:131;29508:4;29382:131;:::i;:::-;29374:139;;29101:419;;;:::o

Swarm Source

ipfs://824a17b1d1adea2b7f76dfc48fb548e99f0b4d60a570036db9b09d464d800c04

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.