Contract 0x70e4bfab4d470b9c485634289e8eb27248de12a3 2

Contract Overview

Balance:
0 CRO

CRO Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xaa916cc7c2672c1f65b2659915961d08583706a0347e9ad5d6070e919f5f0ecbClaim Rewards67578372023-02-01 6:08:172 hrs 36 mins ago0x30826300b1b188a1653b3a31c9628e3e155c0b93 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.336131063314 4,822.678747094
0xf2b44dc8c88d514c73625f0b9e2fa32798223d58d7237466a69e6c1961c3060aClaim Rewards67537722023-01-31 23:45:428 hrs 58 mins ago0x3a2b576ef1884f10c4b18c06d55e7c07fde4ec12 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.33614424219 4,822.867832509
0x27b5cc6d645ed33f4860e9720982e5d814e5117377edcc29e2e262efb5d6e652Claim Rewards67532512023-01-31 22:56:409 hrs 47 mins ago0x7cee7d232dcae23fd673ea798078fde6c5a11c3a IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.336145921071 4,822.89192045
0x2f9c0b1969163c018fe5477a1de598681fbf0206532c426bd92e15ce8dde7a73Claim Rewards67476212023-01-31 14:06:2018 hrs 38 mins ago0x961b6c741631ba87ce2d51d6f0ddb7c633209a00 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.336163993231 4,823.151212832
0x759179794b6c731c8360e5a7bb99659ef02d9defed932fc12c59e194145cdd4dUnstake Nfts67461182023-01-31 11:44:3920 hrs 59 mins ago0xdc56371676a4fa8346df05ce286a81ab372ff1a0 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO1.2559665991020
0x0b95285f6e279b35eba290db0ae77e29c448e4a702bff3b8d1216946ab273e1dStake Nfts67460882023-01-31 11:41:5021 hrs 2 mins ago0x9ee7d9c18c3d3a301866e00266339a218bf2f5f0 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO1.8827618788160
0x29f810f53dfc6fecc2d15fe226590da0d593cff62d7b3177480af4129f5efd22Unstake Nfts67460752023-01-31 11:40:3621 hrs 3 mins ago0xdc56371676a4fa8346df05ce286a81ab372ff1a0 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO1.2321670818840
0x0028b7fcaa99cbbf48eed7a67ac582148a03573b6a325b7dd37b56b4e61eee57Stake Nfts67456172023-01-31 10:57:2821 hrs 47 mins ago0x6846cc45a6450ba8d3f565ae3145998aef10a69e IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.79160999677 4,822.743840785
0xd20639680b5ff9f89a9226c577c218dea476d51e7d2c3524381234b26936dd03Stake Nfts67371192023-01-30 21:34:101 day 11 hrs ago0x7ac208c48227de1372faacd26ffee9907012bec8 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.851087354446 4,823.63710502
0x02ad3cf13546d614c11f69222cd7be058eed3628799593ae319f850194ae26c1Claim Rewards67354142023-01-30 18:51:541 day 13 hrs ago0x75996d5b947fc3608de4acfaf0d78ed25b081a56 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.3834718296110
0xac358025cf912e3fd08d1d34c327c92e3176bc136413f8ab817090aaeb97b0a3Stake Nfts67354102023-01-30 18:51:311 day 13 hrs ago0x75996d5b947fc3608de4acfaf0d78ed25b081a56 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.9332954924070
0xc3c1b7f71e085b1bc5f3cea8ee9ac588020be19501db2f9e4b8282f291c2131eStake Nfts67349212023-01-30 18:05:171 day 14 hrs ago0xc955479b96be663b88980b05e13fbb29e123fca8 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO8.028265592731 4,893.83961851
0x248a59b4717649fe56cddf0eaefe545161c7c5653fc021af0242fd7cf285066cUnstake Nfts67331762023-01-30 15:20:361 day 17 hrs ago0x6ed7bdbfdce6b49eac6aa6b0e4c79e68dd75d5d9 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.735471846274 4,840.382021614
0x97a5fb21a238cb697850234520559b067a6e437870c07f2d969eeb46150dc066Claim Rewards67331722023-01-30 15:20:141 day 17 hrs ago0x6ed7bdbfdce6b49eac6aa6b0e4c79e68dd75d5d9 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.405583423849 4,864.393771138
0x2f685d656f84cb6f6255eeffe87eaa98e93407bf663df5345439dc8e7e44bfb0Unstake Nfts67328902023-01-30 14:53:371 day 17 hrs ago0xcfedfc4efeee0420bb602cceace75edf30e8fb9f IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO1.584487075776 4,823.826382775
0x22643bde3c0a65ef9829fb6710849ac5b8c7ffcd4e3cf6f36114389440e6d578Claim Rewards67328842023-01-30 14:53:021 day 17 hrs ago0xcfedfc4efeee0420bb602cceace75edf30e8fb9f IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.336211070399 4,823.826657865
0x87996886a06ccc704a3a30351e8a35b9c54dd21e03cb27ed55e716c6fc1295e1Unstake Nfts67327772023-01-30 14:42:551 day 18 hrs ago0x6846cc45a6450ba8d3f565ae3145998aef10a69e IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.839553913119 4,823.331551118
0xce39a32a9195a03176fe989a0cad2a92f2c4f69442ec921e7aaec76aaa17c941Claim Rewards67327382023-01-30 14:39:151 day 18 hrs ago0xc2d601a2117700578b4eca90d0cbc3cccc577f3c IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.301113325177 4,823.833346858
0x7796ca643fbfe6b24e2ea796265aaec40ae501c88e759454f95e72ac5e098a64Stake Nfts67307822023-01-30 11:34:501 day 21 hrs ago0x7ac208c48227de1372faacd26ffee9907012bec8 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.851137945465 4,823.923835533
0xd71877e124315d291bd349e4709f63fbdec0e7f60d56efcdb0de3819fc2cb00cUnstake Nfts67299062023-01-30 10:12:191 day 22 hrs ago0x8d161b2dadee750de1fdb2d88cbacfd91b7a6161 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO5.6954232595 4,823.964436176
0xbc328f9217340117bdc08aacf25b5f9bbacedc8e4a94dc4e1f743d9c38d528adClaim Rewards67299012023-01-30 10:11:511 day 22 hrs ago0x8d161b2dadee750de1fdb2d88cbacfd91b7a6161 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.31177746212 4,994.672745508
0x5a3847af0b9fa43acaa0be854a419e8ba898c5dce0e93c87a211e60bcf2619f2Claim Rewards67268312023-01-30 5:22:162 days 3 hrs ago0x961b6c741631ba87ce2d51d6f0ddb7c633209a00 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.3361260680180
0xeb43e38f6fc1f9d4d7ff744eb04ca05a74342fd4fb077e1cb2a649bc55b17033Claim Rewards67215012023-01-29 20:58:522 days 11 hrs ago0x9608a078fa8c280ab7ff68eeb0867b004a6f2aee IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.3835229250740
0x6edf38b68dc21c319a3dab861d869dafdfd713705558ac3cffca01427ccf0c82Unstake Nfts67214982023-01-29 20:58:342 days 11 hrs ago0x9608a078fa8c280ab7ff68eeb0867b004a6f2aee IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.732750555350
0x366f2b85e904a2d15f58454614719c2730d660e0ad8db8f7fae4a0bc61b57e87Stake Nfts67201512023-01-29 18:51:022 days 13 hrs ago0x31cbed3b2b4d6375ff41592bc1615b4ae989d734 IN  0x70e4bfab4d470b9c485634289e8eb27248de12a30 CRO0.9333737377570
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WOCStaking

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-10-29
*/

//Developer Info:
//Written by Blockchainguy.net
//Email: [email protected]
//Instagram: @sheraz.manzoor

pragma solidity ^0.8.0;

interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}


pragma solidity ^0.8.0;
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

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

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

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

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

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

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

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

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

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

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

pragma solidity ^0.8.0;
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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: @openzeppelin/contracts/token/ERC20/IERC20.sol


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

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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


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

pragma solidity ^0.8.0;




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
abstract contract ReentrancyGuard {
    // word because each write operation emits an extra SLOAD to first read the
    // back. This is the compiler's defense against contract upgrades and

    // but in exchange the refund on every call to nonReentrant will be lower in
    // transaction's gas, it is best to keep them low in cases like this one, to
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;

        _;
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}
// File: contracts/Gummies/GummiesStaking.sol

//SPDX-License-Identifier: MIT
pragma solidity 0.8.7;

contract WOCStaking is Ownable, ReentrancyGuard{
    using SafeMath for uint256;
    bool paused = false;

    //Erc20 Variables
    IERC20 public rewardToken;

    //Staking Variables
    uint256 public totalNftStaked = 0;
    uint256 public totalBoosterStaked = 0;
    mapping(address => uint256) private _balances;
    mapping(address => uint256) public lastClaimTime;    

    //Collection Variables
	IERC721 public nft; 
    uint256 public STAKINGREWARD = 10 ether ;
    mapping(uint256 => address) public tokenIdOwners;
    mapping(address => uint256) public numberTokensStaked;
    mapping(address => mapping(uint256 => uint256)) public ownerTokenIds;

    //Boosters Variables
    IERC721 public booster;     
    uint256 public BOOSTERREWARD  = 2 ether;    
    mapping(uint256 => address) public tokenIdOwnersBooster;
    mapping(address => uint256) public numberBoosterCount;   
    mapping(address => mapping(uint256 => uint256)) public ownerTokenIdsBooster;  

    modifier updateReward(address account) {
        uint256 reward = getRewards(account);
        lastClaimTime[account] = block.timestamp;
        _balances[account] += reward;
        _;
    }

    constructor(address _nftAddress, address _rewardToken){
		nft = IERC721(_nftAddress);
        rewardToken = IERC20(_rewardToken);
	}

    //Setter Functions
    function set_Staking_Reward_In_Wei(uint256 val) public onlyOwner{
        STAKINGREWARD = val;
    }
    function setRewardTokenAddress(address val) public onlyOwner{
        rewardToken = IERC20(val);
    }
    function setNftAddress(address val) public onlyOwner{
        nft = IERC721(val);
    }
    function setBoosterAddress(address val) public onlyOwner{
        booster = IERC721(val);
    }
    function set_Booster_Reward_In_Wei(uint256 val) public onlyOwner{
        BOOSTERREWARD = val;
    }
    function withdrawTokens(address _to, uint amount_in_wei) public onlyOwner{
        rewardToken.transfer(_to, amount_in_wei);
    }

    function rewardsPerDay(address account) public view returns (uint256){
            uint256 _cReward = numberTokensStaked[account] * STAKINGREWARD;
            uint256 _boosterReward = numberBoosterCount[account] * BOOSTERREWARD;
            uint256 totalReward = _cReward + _boosterReward; 
            return totalReward;
    }
    function getRewards(address account) internal view returns(uint256) {
            uint256 _cReward = numberTokensStaked[account] * STAKINGREWARD;
            uint256 _boosterReward = numberBoosterCount[account] * BOOSTERREWARD;
            uint256 totalReward = _cReward + _boosterReward; 
            uint256 _lastClaimed = lastClaimTime[account];
            return totalReward.mul(block.timestamp.sub(_lastClaimed)).div(86400);
    }

    function viewRewards(address account) public view returns(uint256){ // Total Earned Rewards
        uint256 pendingReward = getRewards(account);
        return pendingReward + _balances[account];
    }

    function claimRewards() updateReward(msg.sender) external nonReentrant{
        uint256 reward = _balances[msg.sender];
        require(reward > 0, "Zero Rewards");
        require(rewardToken.balanceOf(address(this)) >= reward, "Contract doesnot have enough reward Tokens.");
        _balances[msg.sender] = 0;

        rewardToken.transfer(address(msg.sender), reward);
        
    } 

    function getNftsIdsbyAddress(address _add) public view returns (uint256[] memory){
        uint256 len = nft.balanceOf(_add);
        uint256[] memory temp = new uint[](len);
        uint256 temp_count = 0;

        uint256 totalCollectionSize = nft.totalSupply();

        for(uint i=0;i<totalCollectionSize;i++){
            if(nft.ownerOf(i) == _add){
               temp[temp_count] = i; 
               temp_count++;
            }
        }

        return temp;
    }
    function getBoosterIdsbyAddress(address _add) public view returns (uint256[] memory){
        uint256 len = booster.balanceOf(_add);
        uint256[] memory temp = new uint[](len);
        uint256 temp_count = 0;

        uint256 totalCollectionSize = booster.totalSupply();

        for(uint i=0;i<totalCollectionSize;i++){
            if(booster.ownerOf(i) == _add){
               temp[temp_count] = i; 
               temp_count++;
            }
        }

        return temp;
    }

     function getUserstakedNftIds(address _user) public view returns (uint256[] memory){
        uint256 len = numberTokensStaked[_user];
        uint256[] memory temp = new uint[](len);
        for (uint256 i = 0; i < len; ++i) {
             temp[i] = ownerTokenIds[_user][i];
        }
        return temp;
    }
    function getUserstakedBoosterIds(address _user) public view returns (uint256[] memory){
        uint256 len = numberBoosterCount[_user];
        uint256[] memory temp = new uint[](len);
        for (uint256 i = 0; i < len; ++i) {
             temp[i] = ownerTokenIdsBooster[_user][i];
        }
        return temp;
    }

    function stakeNfts(uint256[] calldata tokenIds) updateReward(msg.sender) external nonReentrant {
        require(!paused,"Contract is paused");
        require(IERC721(nft).isApprovedForAll(msg.sender, address(this)) , "Approve Nfts First");
        require(tokenIds.length > 0, "0 Nfts to Stake");

        unchecked {
            uint256 len = tokenIds.length;
            uint256 numStaked = numberTokensStaked[msg.sender];
            for (uint256 i = 0; i < len; i++) {
                uint256 tokenId = tokenIds[i];
                require(IERC721(nft).ownerOf(tokenId) == msg.sender , "You are not owner of this nft.");

                tokenIdOwners[tokenId] = msg.sender;
                ownerTokenIds[msg.sender][numStaked] = tokenId;
                numStaked++;
                totalNftStaked++;
                nft.transferFrom(msg.sender,address(this),tokenId);
            }
            numberTokensStaked[msg.sender] = numStaked;
        }
    }

    function stakeBooster(uint256[] calldata tokenIds) updateReward(msg.sender) external nonReentrant{
        require(!paused,"Contract is paused");
        require(IERC721(booster).isApprovedForAll(msg.sender, address(this)) , "Approve Nfts First");
        require(tokenIds.length > 0, "0 Nfts to Stake");

        unchecked {
            uint256 len = tokenIds.length;
            uint256 numStaked = numberBoosterCount[msg.sender];
            for (uint256 i = 0; i < len; i++) {
                uint256 tokenId = tokenIds[i];
                require(IERC721(booster).ownerOf(tokenId) == msg.sender , "You are not owner of this nft.");
 
                tokenIdOwnersBooster[tokenId] = msg.sender;
                ownerTokenIdsBooster[msg.sender][numStaked] = tokenId;
                numStaked++;
                totalBoosterStaked++;
                booster.transferFrom(msg.sender,address(this),tokenId);
            }
            numberBoosterCount[msg.sender] = numStaked;
        }
    }
    function unstakeBooster(uint256[] calldata tokenIds) updateReward(msg.sender) external nonReentrant{
        require(!paused,"Contract is paused");
        require(tokenIds.length > 0, "0 Nfts to Stake");

        unchecked {
            uint256 len = tokenIds.length;

            for (uint256 i = 0; i < len; i++) {
               uint256 tokenId = tokenIds[i];
               require(tokenIdOwnersBooster[tokenId] == msg.sender, "You dont own this ID");
               require(IERC721(booster).ownerOf(tokenId) == address(this) , "Nft not available in the contract");
               removeFromUserStakedBooster(msg.sender, tokenId);
               
               numberBoosterCount[msg.sender]--;
               totalBoosterStaked--;
               delete tokenIdOwnersBooster[tokenId];
                  booster.transferFrom(
                        address(this),
                        msg.sender,
                        tokenId
                    );
            }
              
          
        }
    }

    function removeFromUserStakedBooster(address user, uint256 tokenId) internal {
        uint256 _numStaked = numberBoosterCount[user];
        for (uint256 j = 0; j < _numStaked; ++j) {
                if (ownerTokenIdsBooster[user][j] == tokenId) {
                    uint256 lastIndex = _numStaked - 1;
                    ownerTokenIdsBooster[user][j] = ownerTokenIdsBooster[user][
                        lastIndex
                    ];
                    delete ownerTokenIdsBooster[user][lastIndex];
                    break;
                }
            }
    }
    function unstakeNfts(uint256[] calldata tokenIds) updateReward(msg.sender) external nonReentrant{
        require(!paused,"Contract is paused");
        require(tokenIds.length > 0, "0 Nfts to Stake");
        unchecked {
            uint256 len = tokenIds.length;

            for (uint256 i = 0; i < len; i++) {
               uint256 tokenId = tokenIds[i];

               require(tokenIdOwners[tokenId] == msg.sender, "You dont own this ID");
               require(IERC721(nft).ownerOf(tokenId) == address(this) , "Nft not available in the contract");
               removeFromUserStakedTokens(msg.sender, tokenId);
               
               numberTokensStaked[msg.sender]--;
               totalNftStaked--;
               delete tokenIdOwners[tokenId];
                  nft.transferFrom(
                        address(this),
                        msg.sender,
                        tokenId
                    );
            }
              
          
        }
    }

    function togglePause() public onlyOwner{
        paused = !paused;
    }

    function removeFromUserStakedTokens(address user, uint256 tokenId) internal {
        uint256 _numStaked = numberTokensStaked[user];
        for (uint256 j = 0; j < _numStaked; ++j) {
                if (ownerTokenIds[user][j] == tokenId) {
                    uint256 lastIndex = _numStaked - 1;
                    ownerTokenIds[user][j] = ownerTokenIds[user][
                        lastIndex
                    ];
                    delete ownerTokenIds[user][lastIndex];
                    break;
                }
            }
    }

}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_nftAddress","type":"address"},{"internalType":"address","name":"_rewardToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"BOOSTERREWARD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKINGREWARD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"booster","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_add","type":"address"}],"name":"getBoosterIdsbyAddress","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_add","type":"address"}],"name":"getNftsIdsbyAddress","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUserstakedBoosterIds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUserstakedNftIds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nft","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numberBoosterCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numberTokensStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerTokenIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerTokenIdsBooster","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"rewardsPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"val","type":"address"}],"name":"setBoosterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"val","type":"address"}],"name":"setNftAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"val","type":"address"}],"name":"setRewardTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"val","type":"uint256"}],"name":"set_Booster_Reward_In_Wei","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"val","type":"uint256"}],"name":"set_Staking_Reward_In_Wei","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stakeBooster","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stakeNfts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"togglePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenIdOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenIdOwnersBooster","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBoosterStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalNftStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstakeBooster","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstakeNfts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"viewRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"amount_in_wei","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600260006101000a81548160ff02191690831515021790555060006003556000600455678ac7230489e80000600855671bc16d674ec80000600d553480156200004e57600080fd5b50604051620045e6380380620045e6833981810160405281019062000074919062000208565b62000094620000886200012560201b60201c565b6200012d60201b60201c565b6001808190555081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620002a2565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620002028162000288565b92915050565b6000806040838503121562000222576200022162000283565b5b60006200023285828601620001f1565b92505060206200024585828601620001f1565b9150509250929050565b60006200025c8262000263565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b62000293816200024f565b81146200029f57600080fd5b50565b61433480620002b26000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c8063903adb3611610125578063c374f67a116100ad578063da40ef801161007c578063da40ef8014610610578063f2fde38b14610640578063f5b200ac1461065c578063f7c618c11461068c578063faaec849146106aa57610211565b8063c374f67a1461059c578063c4ae3168146105b8578063c6def076146105c2578063c9bc0a9a146105e057610211565b80639d0f8a3d116100f45780639d0f8a3d146104d2578063a751c49a14610502578063a8249e761461051e578063b132eb321461054e578063b77cf9c61461056c57610211565b8063903adb361461045e5780639a215e521461047c5780639a36485c1461049a5780639a6acf20146104b657610211565b806347ccca02116101a857806377adfbda1161017757806377adfbda146103bc57806377e628e5146103d85780637d075f0414610408578063822c0eab146104245780638da5cb5b1461044057610211565b806347ccca02146103345780634884254a146103525780635bee33c314610382578063715018a6146103b257610211565b80631bfff8ac116101e45780631bfff8ac1461029a57806322f10836146102ca578063372500ab146102fa5780633f02a8d81461030457610211565b8063068dbfb11461021657806306b091f9146102465780630b102d1a14610262578063134928b01461027e575b600080fd5b610230600480360381019061022b9190613750565b6106c8565b60405161023d9190613ba4565b60405180910390f35b610260600480360381019061025b91906137aa565b6109a3565b005b61027c60048036038101906102779190613750565b610ad3565b005b61029860048036038101906102939190613750565b610b93565b005b6102b460048036038101906102af9190613750565b610c53565b6040516102c19190613d5c565b60405180910390f35b6102e460048036038101906102df91906137aa565b610d11565b6040516102f19190613d5c565b60405180910390f35b610302610d36565b005b61031e60048036038101906103199190613750565b6110a1565b60405161032b9190613ba4565b60405180910390f35b61033c6111cb565b6040516103499190613be1565b60405180910390f35b61036c60048036038101906103679190613864565b6111f1565b6040516103799190613b00565b60405180910390f35b61039c600480360381019061039791906137aa565b611224565b6040516103a99190613d5c565b60405180910390f35b6103ba611249565b005b6103d660048036038101906103d191906137ea565b6112d1565b005b6103f260048036038101906103ed9190613864565b61188a565b6040516103ff9190613b00565b60405180910390f35b610422600480360381019061041d91906137ea565b6118bd565b005b61043e600480360381019061043991906137ea565b611d84565b005b61044861224b565b6040516104559190613b00565b60405180910390f35b610466612274565b6040516104739190613d5c565b60405180910390f35b61048461227a565b6040516104919190613d5c565b60405180910390f35b6104b460048036038101906104af91906137ea565b612280565b005b6104d060048036038101906104cb9190613750565b612839565b005b6104ec60048036038101906104e79190613750565b6128f9565b6040516104f99190613ba4565b60405180910390f35b61051c60048036038101906105179190613864565b612a23565b005b61053860048036038101906105339190613750565b612aa9565b6040516105459190613d5c565b60405180910390f35b610556612ac1565b6040516105639190613d5c565b60405180910390f35b61058660048036038101906105819190613750565b612ac7565b6040516105939190613d5c565b60405180910390f35b6105b660048036038101906105b19190613864565b612adf565b005b6105c0612b65565b005b6105ca612c0d565b6040516105d79190613be1565b60405180910390f35b6105fa60048036038101906105f59190613750565b612c33565b6040516106079190613ba4565b60405180910390f35b61062a60048036038101906106259190613750565b612f0e565b6040516106379190613d5c565b60405180910390f35b61065a60048036038101906106559190613750565b612f6f565b005b61067660048036038101906106719190613750565b613067565b6040516106839190613d5c565b60405180910390f35b61069461307f565b6040516106a19190613bc6565b60405180910390f35b6106b26130a5565b6040516106bf9190613d5c565b60405180910390f35b60606000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b81526004016107279190613b00565b60206040518083038186803b15801561073f57600080fd5b505afa158015610753573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107779190613891565b905060008167ffffffffffffffff8111156107955761079461403c565b5b6040519080825280602002602001820160405280156107c35781602001602082028036833780820191505090505b509050600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561083157600080fd5b505afa158015610845573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108699190613891565b905060005b81811015610996578673ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016108e89190613d5c565b60206040518083038186803b15801561090057600080fd5b505afa158015610914573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610938919061377d565b73ffffffffffffffffffffffffffffffffffffffff16141561098357808484815181106109685761096761400d565b5b602002602001018181525050828061097f90613f66565b9350505b808061098e90613f66565b91505061086e565b5082945050505050919050565b6109ab6130ab565b73ffffffffffffffffffffffffffffffffffffffff166109c961224b565b73ffffffffffffffffffffffffffffffffffffffff1614610a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1690613c5c565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610a7c929190613b7b565b602060405180830381600087803b158015610a9657600080fd5b505af1158015610aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ace9190613837565b505050565b610adb6130ab565b73ffffffffffffffffffffffffffffffffffffffff16610af961224b565b73ffffffffffffffffffffffffffffffffffffffff1614610b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4690613c5c565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610b9b6130ab565b73ffffffffffffffffffffffffffffffffffffffff16610bb961224b565b73ffffffffffffffffffffffffffffffffffffffff1614610c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0690613c5c565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600854600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca39190613e48565b90506000600d54600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cf49190613e48565b905060008183610d049190613dc1565b9050809350505050919050565b600b602052816000526040600020602052806000526040600020600091509150505481565b336000610d42826130b3565b905042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610dd79190613dc1565b9250508190555060026001541415610e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1b90613cfc565b60405180910390fd5b60026001819055506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa90613c1c565b60405180910390fd5b80600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f0f9190613b00565b60206040518083038186803b158015610f2757600080fd5b505afa158015610f3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5f9190613891565b1015610fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9790613d1c565b60405180910390fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611042929190613b7b565b602060405180830381600087803b15801561105c57600080fd5b505af1158015611070573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110949190613837565b5050600180819055505050565b60606000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008167ffffffffffffffff8111156111035761110261403c565b5b6040519080825280602002602001820160405280156111315781602001602082028036833780820191505090505b50905060005b828110156111c057601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828152602001908152602001600020548282815181106111a3576111a261400d565b5b602002602001018181525050806111b990613f66565b9050611137565b508092505050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6010602052816000526040600020602052806000526040600020600091509150505481565b6112516130ab565b73ffffffffffffffffffffffffffffffffffffffff1661126f61224b565b73ffffffffffffffffffffffffffffffffffffffff16146112c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bc90613c5c565b60405180910390fd5b6112cf60006131ef565b565b3360006112dd826130b3565b905042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113729190613dc1565b92505081905550600260015414156113bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b690613cfc565b60405180910390fd5b6002600181905550600260009054906101000a900460ff1615611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e90613cdc565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e985e9c533306040518363ffffffff1660e01b8152600401611474929190613b1b565b60206040518083038186803b15801561148c57600080fd5b505afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190613837565b611503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fa90613c7c565b60405180910390fd5b60008484905011611549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154090613d3c565b60405180910390fd5b60008484905090506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b828110156118365760008787838181106115b5576115b461400d565b5b9050602002013590503373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016116309190613d5c565b60206040518083038186803b15801561164857600080fd5b505afa15801561165c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611680919061377d565b73ffffffffffffffffffffffffffffffffffffffff16146116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd90613c9c565b60405180910390fd5b33600e600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020819055508280600101935050600460008154809291906001019190505550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016117f693929190613b44565b600060405180830381600087803b15801561181057600080fd5b505af1158015611824573d6000803e3d6000fd5b50505050508080600101915050611598565b5080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050506001808190555050505050565b600e6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3360006118c9826130b3565b905042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461195e9190613dc1565b92505081905550600260015414156119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290613cfc565b60405180910390fd5b6002600181905550600260009054906101000a900460ff1615611a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fa90613cdc565b60405180910390fd5b60008484905011611a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4090613d3c565b60405180910390fd5b600084849050905060005b81811015611d75576000868683818110611a7157611a7061400d565b5b9050602002013590503373ffffffffffffffffffffffffffffffffffffffff16600e600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1290613c3c565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401611b8d9190613d5c565b60206040518083038186803b158015611ba557600080fd5b505afa158015611bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdd919061377d565b73ffffffffffffffffffffffffffffffffffffffff1614611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a90613cbc565b60405180910390fd5b611c3d33826132b3565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060019003919050555060046000815480929190600190039190505550600e600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b8152600401611d3593929190613b44565b600060405180830381600087803b158015611d4f57600080fd5b505af1158015611d63573d6000803e3d6000fd5b50505050508080600101915050611a54565b50506001808190555050505050565b336000611d90826130b3565b905042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e259190613dc1565b9250508190555060026001541415611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6990613cfc565b60405180910390fd5b6002600181905550600260009054906101000a900460ff1615611eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec190613cdc565b60405180910390fd5b60008484905011611f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0790613d3c565b60405180910390fd5b600084849050905060005b8181101561223c576000868683818110611f3857611f3761400d565b5b9050602002013590503373ffffffffffffffffffffffffffffffffffffffff166009600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd990613c3c565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016120549190613d5c565b60206040518083038186803b15801561206c57600080fd5b505afa158015612080573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a4919061377d565b73ffffffffffffffffffffffffffffffffffffffff16146120fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f190613cbc565b60405180910390fd5b6121043382613481565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600360008154809291906001900391905055506009600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b81526004016121fc93929190613b44565b600060405180830381600087803b15801561221657600080fd5b505af115801561222a573d6000803e3d6000fd5b50505050508080600101915050611f1b565b50506001808190555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b60045481565b33600061228c826130b3565b905042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123219190613dc1565b925050819055506002600154141561236e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236590613cfc565b60405180910390fd5b6002600181905550600260009054906101000a900460ff16156123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bd90613cdc565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e985e9c533306040518363ffffffff1660e01b8152600401612423929190613b1b565b60206040518083038186803b15801561243b57600080fd5b505afa15801561244f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124739190613837565b6124b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a990613c7c565b60405180910390fd5b600084849050116124f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ef90613d3c565b60405180910390fd5b60008484905090506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b828110156127e55760008787838181106125645761256361400d565b5b9050602002013590503373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016125df9190613d5c565b60206040518083038186803b1580156125f757600080fd5b505afa15801561260b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262f919061377d565b73ffffffffffffffffffffffffffffffffffffffff1614612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c90613c9c565b60405180910390fd5b336009600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020819055508280600101935050600360008154809291906001019190505550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016127a593929190613b44565b600060405180830381600087803b1580156127bf57600080fd5b505af11580156127d3573d6000803e3d6000fd5b50505050508080600101915050612547565b5080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050506001808190555050505050565b6128416130ab565b73ffffffffffffffffffffffffffffffffffffffff1661285f61224b565b73ffffffffffffffffffffffffffffffffffffffff16146128b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ac90613c5c565b60405180910390fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008167ffffffffffffffff81111561295b5761295a61403c565b5b6040519080825280602002602001820160405280156129895781602001602082028036833780820191505090505b50905060005b82811015612a1857600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828152602001908152602001600020548282815181106129fb576129fa61400d565b5b60200260200101818152505080612a1190613f66565b905061298f565b508092505050919050565b612a2b6130ab565b73ffffffffffffffffffffffffffffffffffffffff16612a4961224b565b73ffffffffffffffffffffffffffffffffffffffff1614612a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9690613c5c565b60405180910390fd5b8060088190555050565b600f6020528060005260406000206000915090505481565b60085481565b60066020528060005260406000206000915090505481565b612ae76130ab565b73ffffffffffffffffffffffffffffffffffffffff16612b0561224b565b73ffffffffffffffffffffffffffffffffffffffff1614612b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5290613c5c565b60405180910390fd5b80600d8190555050565b612b6d6130ab565b73ffffffffffffffffffffffffffffffffffffffff16612b8b61224b565b73ffffffffffffffffffffffffffffffffffffffff1614612be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd890613c5c565b60405180910390fd5b600260009054906101000a900460ff1615600260006101000a81548160ff021916908315150217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231846040518263ffffffff1660e01b8152600401612c929190613b00565b60206040518083038186803b158015612caa57600080fd5b505afa158015612cbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ce29190613891565b905060008167ffffffffffffffff811115612d0057612cff61403c565b5b604051908082528060200260200182016040528015612d2e5781602001602082028036833780820191505090505b509050600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612d9c57600080fd5b505afa158015612db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd49190613891565b905060005b81811015612f01578673ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401612e539190613d5c565b60206040518083038186803b158015612e6b57600080fd5b505afa158015612e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea3919061377d565b73ffffffffffffffffffffffffffffffffffffffff161415612eee5780848481518110612ed357612ed261400d565b5b6020026020010181815250508280612eea90613f66565b9350505b8080612ef990613f66565b915050612dd9565b5082945050505050919050565b600080612f1a836130b3565b9050600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481612f679190613dc1565b915050919050565b612f776130ab565b73ffffffffffffffffffffffffffffffffffffffff16612f9561224b565b73ffffffffffffffffffffffffffffffffffffffff1614612feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe290613c5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561305b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305290613bfc565b60405180910390fd5b613064816131ef565b50565b600a6020528060005260406000206000915090505481565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b600033905090565b600080600854600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131039190613e48565b90506000600d54600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131549190613e48565b9050600081836131649190613dc1565b90506000600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506131e4620151806131d66131c7844261364f90919063ffffffff16565b8561366590919063ffffffff16565b61367b90919063ffffffff16565b945050505050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b8181101561347b5782601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054141561346a5760006001836133699190613ea2565b9050601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002054601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828152602001908152602001600020600090555061347b565b8061347490613f66565b90506132fa565b50505050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b818110156136495782600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000205414156136385760006001836135379190613ea2565b9050600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002054600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008281526020019081526020016000206000905550613649565b8061364290613f66565b90506134c8565b50505050565b6000818361365d9190613ea2565b905092915050565b600081836136739190613e48565b905092915050565b600081836136899190613e17565b905092915050565b6000813590506136a0816142b9565b92915050565b6000815190506136b5816142b9565b92915050565b60008083601f8401126136d1576136d0614070565b5b8235905067ffffffffffffffff8111156136ee576136ed61406b565b5b60208301915083602082028301111561370a57613709614075565b5b9250929050565b600081519050613720816142d0565b92915050565b600081359050613735816142e7565b92915050565b60008151905061374a816142e7565b92915050565b6000602082840312156137665761376561407f565b5b600061377484828501613691565b91505092915050565b6000602082840312156137935761379261407f565b5b60006137a1848285016136a6565b91505092915050565b600080604083850312156137c1576137c061407f565b5b60006137cf85828601613691565b92505060206137e085828601613726565b9150509250929050565b600080602083850312156138015761380061407f565b5b600083013567ffffffffffffffff81111561381f5761381e61407a565b5b61382b858286016136bb565b92509250509250929050565b60006020828403121561384d5761384c61407f565b5b600061385b84828501613711565b91505092915050565b60006020828403121561387a5761387961407f565b5b600061388884828501613726565b91505092915050565b6000602082840312156138a7576138a661407f565b5b60006138b58482850161373b565b91505092915050565b60006138ca8383613ae2565b60208301905092915050565b6138df81613ed6565b82525050565b60006138f082613d87565b6138fa8185613d9f565b935061390583613d77565b8060005b8381101561393657815161391d88826138be565b975061392883613d92565b925050600181019050613909565b5085935050505092915050565b61394c81613f1e565b82525050565b61395b81613f30565b82525050565b600061396e602683613db0565b915061397982614084565b604082019050919050565b6000613991600c83613db0565b915061399c826140d3565b602082019050919050565b60006139b4601483613db0565b91506139bf826140fc565b602082019050919050565b60006139d7602083613db0565b91506139e282614125565b602082019050919050565b60006139fa601283613db0565b9150613a058261414e565b602082019050919050565b6000613a1d601e83613db0565b9150613a2882614177565b602082019050919050565b6000613a40602183613db0565b9150613a4b826141a0565b604082019050919050565b6000613a63601283613db0565b9150613a6e826141ef565b602082019050919050565b6000613a86601f83613db0565b9150613a9182614218565b602082019050919050565b6000613aa9602b83613db0565b9150613ab482614241565b604082019050919050565b6000613acc600f83613db0565b9150613ad782614290565b602082019050919050565b613aeb81613f14565b82525050565b613afa81613f14565b82525050565b6000602082019050613b1560008301846138d6565b92915050565b6000604082019050613b3060008301856138d6565b613b3d60208301846138d6565b9392505050565b6000606082019050613b5960008301866138d6565b613b6660208301856138d6565b613b736040830184613af1565b949350505050565b6000604082019050613b9060008301856138d6565b613b9d6020830184613af1565b9392505050565b60006020820190508181036000830152613bbe81846138e5565b905092915050565b6000602082019050613bdb6000830184613943565b92915050565b6000602082019050613bf66000830184613952565b92915050565b60006020820190508181036000830152613c1581613961565b9050919050565b60006020820190508181036000830152613c3581613984565b9050919050565b60006020820190508181036000830152613c55816139a7565b9050919050565b60006020820190508181036000830152613c75816139ca565b9050919050565b60006020820190508181036000830152613c95816139ed565b9050919050565b60006020820190508181036000830152613cb581613a10565b9050919050565b60006020820190508181036000830152613cd581613a33565b9050919050565b60006020820190508181036000830152613cf581613a56565b9050919050565b60006020820190508181036000830152613d1581613a79565b9050919050565b60006020820190508181036000830152613d3581613a9c565b9050919050565b60006020820190508181036000830152613d5581613abf565b9050919050565b6000602082019050613d716000830184613af1565b92915050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613dcc82613f14565b9150613dd783613f14565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613e0c57613e0b613faf565b5b828201905092915050565b6000613e2282613f14565b9150613e2d83613f14565b925082613e3d57613e3c613fde565b5b828204905092915050565b6000613e5382613f14565b9150613e5e83613f14565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e9757613e96613faf565b5b828202905092915050565b6000613ead82613f14565b9150613eb883613f14565b925082821015613ecb57613eca613faf565b5b828203905092915050565b6000613ee182613ef4565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613f2982613f42565b9050919050565b6000613f3b82613f42565b9050919050565b6000613f4d82613f54565b9050919050565b6000613f5f82613ef4565b9050919050565b6000613f7182613f14565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613fa457613fa3613faf565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5a65726f20526577617264730000000000000000000000000000000000000000600082015250565b7f596f7520646f6e74206f776e2074686973204944000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f417070726f7665204e6674732046697273740000000000000000000000000000600082015250565b7f596f7520617265206e6f74206f776e6572206f662074686973206e66742e0000600082015250565b7f4e6674206e6f7420617661696c61626c6520696e2074686520636f6e7472616360008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973207061757365640000000000000000000000000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f436f6e747261637420646f65736e6f74206861766520656e6f7567682072657760008201527f61726420546f6b656e732e000000000000000000000000000000000000000000602082015250565b7f30204e66747320746f205374616b650000000000000000000000000000000000600082015250565b6142c281613ed6565b81146142cd57600080fd5b50565b6142d981613ee8565b81146142e457600080fd5b50565b6142f081613f14565b81146142fb57600080fd5b5056fea2646970667358221220954c2aeb9277a5d893b3533e496e60c494abb7bf726fb2dc261b6550e51c41c264736f6c634300080700330000000000000000000000004ce0b9608006533da056170f1efe8eea771e0d19000000000000000000000000dcb71bd9a246230dc7fcb90090709f0fdea90746

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

0000000000000000000000004ce0b9608006533da056170f1efe8eea771e0d19000000000000000000000000dcb71bd9a246230dc7fcb90090709f0fdea90746

-----Decoded View---------------
Arg [0] : _nftAddress (address): 0x4ce0b9608006533da056170f1efe8eea771e0d19
Arg [1] : _rewardToken (address): 0xdcb71bd9a246230dc7fcb90090709f0fdea90746

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000004ce0b9608006533da056170f1efe8eea771e0d19
Arg [1] : 000000000000000000000000dcb71bd9a246230dc7fcb90090709f0fdea90746


Deployed ByteCode Sourcemap

32634:10418:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36572:503;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34534:132;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34228:89;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34323:97;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34674:333;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33241:68;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35675:394;;;:::i;:::-;;37407:328;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33053:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33126:48;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33553:75;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14367:103;;;:::i;:::-;;38732:1014;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33428:55;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39752:1041;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41391:1011;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13716:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33378:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32871:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37743:981;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34118:104;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37084:317;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34010:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33490:53;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33079:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32967:48;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34426:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42410:74;;;:::i;:::-;;33344:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36078:488;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35463:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14625:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33181:53;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32772:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32831:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36572:503;36639:16;36667:11;36681:7;;;;;;;;;;;:17;;;36699:4;36681:23;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36667:37;;36715:21;36750:3;36739:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36715:39;;36765:18;36800:27;36830:7;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36800:51;;36868:6;36864:180;36879:19;36877:1;:21;36864:180;;;36943:4;36921:26;;:7;;;;;;;;;;;:15;;;36937:1;36921:18;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:26;;;36918:115;;;36985:1;36966:4;36971:10;36966:16;;;;;;;;:::i;:::-;;;;;;;:20;;;;;37005:12;;;;;:::i;:::-;;;;36918:115;36899:3;;;;;:::i;:::-;;;;36864:180;;;;37063:4;37056:11;;;;;;36572:503;;;:::o;34534:132::-;13947:12;:10;:12::i;:::-;13936:23;;:7;:5;:7::i;:::-;:23;;;13928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34618:11:::1;;;;;;;;;;;:20;;;34639:3;34644:13;34618:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34534:132:::0;;:::o;34228:89::-;13947:12;:10;:12::i;:::-;13936:23;;:7;:5;:7::i;:::-;:23;;;13928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34305:3:::1;34291;;:18;;;;;;;;;;;;;;;;;;34228:89:::0;:::o;34323:97::-;13947:12;:10;:12::i;:::-;13936:23;;:7;:5;:7::i;:::-;:23;;;13928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34408:3:::1;34390:7;;:22;;;;;;;;;;;;;;;;;;34323:97:::0;:::o;34674:333::-;34735:7;34758:16;34807:13;;34777:18;:27;34796:7;34777:27;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;34758:62;;34835:22;34890:13;;34860:18;:27;34879:7;34860:27;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;34835:68;;34918:19;34951:14;34940:8;:25;;;;:::i;:::-;34918:47;;34988:11;34981:18;;;;;34674:333;;;:::o;33241:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;35675:394::-;35712:10;33689:14;33706:19;33717:7;33706:10;:19::i;:::-;33689:36;;33761:15;33736:13;:22;33750:7;33736:22;;;;;;;;;;;;;;;:40;;;;33809:6;33787:9;:18;33797:7;33787:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;32184:1:::1;32330:7;;:19;;32322:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;32184:1;32396:7;:18;;;;35756:14:::2;35773:9;:21;35783:10;35773:21;;;;;;;;;;;;;;;;35756:38;;35822:1;35813:6;:10;35805:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;35899:6;35859:11;;;;;;;;;;;:21;;;35889:4;35859:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;35851:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;35988:1;35964:9;:21;35974:10;35964:21;;;;;;;;;;;;;;;:25;;;;36002:11;;;;;;;;;;;:20;;;36031:10;36044:6;36002:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35745:324;32140:1:::1;32492:7:::0;:22:::1;;;;33678:157:::0;35675:394;:::o;37407:328::-;37476:16;37504:11;37518:18;:25;37537:5;37518:25;;;;;;;;;;;;;;;;37504:39;;37554:21;37589:3;37578:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37554:39;;37609:9;37604:102;37628:3;37624:1;:7;37604:102;;;37664:20;:27;37685:5;37664:27;;;;;;;;;;;;;;;:30;37692:1;37664:30;;;;;;;;;;;;37654:4;37659:1;37654:7;;;;;;;;:::i;:::-;;;;;;;:40;;;;;37633:3;;;;:::i;:::-;;;37604:102;;;;37723:4;37716:11;;;;37407:328;;;:::o;33053:18::-;;;;;;;;;;;;;:::o;33126:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;33553:75::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14367:103::-;13947:12;:10;:12::i;:::-;13936:23;;:7;:5;:7::i;:::-;:23;;;13928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14432:30:::1;14459:1;14432:18;:30::i;:::-;14367:103::o:0;38732:1014::-;38796:10;33689:14;33706:19;33717:7;33706:10;:19::i;:::-;33689:36;;33761:15;33736:13;:22;33750:7;33736:22;;;;;;;;;;;;;;;:40;;;;33809:6;33787:9;:18;33797:7;33787:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;32184:1:::1;32330:7;;:19;;32322:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;32184:1;32396:7;:18;;;;38849:6:::2;;;;;;;;;;;38848:7;38840:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;38904:7;;;;;;;;;;;38896:33;;;38930:10;38950:4;38896:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38888:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;39017:1;38999:8;;:15;;:19;38991:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;39076:11;39090:8;;:15;;39076:29;;39120:17;39140:18;:30;39159:10;39140:30;;;;;;;;;;;;;;;;39120:50;;39190:9;39185:486;39209:3;39205:1;:7;39185:486;;;39238:15;39256:8;;39265:1;39256:11;;;;;;;:::i;:::-;;;;;;;;39238:29;;39331:10;39294:47;;39302:7;;;;;;;;;;;39294:24;;;39319:7;39294:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47;;;39286:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;39431:10;39399:20;:29;39420:7;39399:29;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;39506:7;39460:20;:32;39481:10;39460:32;;;;;;;;;;;;;;;:43;39493:9;39460:43;;;;;;;;;;;:53;;;;39532:11;;;;;;;39562:18;;:20;;;;;;;;;;;;;39601:7;;;;;;;;;;;:20;;;39622:10;39641:4;39647:7;39601:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;39219:452;39214:3;;;;;;;39185:486;;;;39718:9;39685:18;:30;39704:10;39685:30;;;;;;;;;;;;;;;:42;;;;39051:688;;32140:1:::1;32492:7:::0;:22:::1;;;;33678:157:::0;38732:1014;;;:::o;33428:55::-;;;;;;;;;;;;;;;;;;;;;;:::o;39752:1041::-;39818:10;33689:14;33706:19;33717:7;33706:10;:19::i;:::-;33689:36;;33761:15;33736:13;:22;33750:7;33736:22;;;;;;;;;;;;;;;:40;;;;33809:6;33787:9;:18;33797:7;33787:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;32184:1:::1;32330:7;;:19;;32322:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;32184:1;32396:7;:18;;;;39871:6:::2;;;;;;;;;;;39870:7;39862:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;39936:1;39918:8;;:15;;:19;39910:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;39995:11;40009:8;;:15;;39995:29;;40046:9;40041:706;40065:3;40061:1;:7;40041:706;;;40093:15;40111:8;;40120:1;40111:11;;;;;;;:::i;:::-;;;;;;;;40093:29;;40181:10;40148:43;;:20;:29;40169:7;40148:29;;;;;;;;;;;;;;;;;;;;;:43;;;40140:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;40287:4;40242:50;;40250:7;;;;;;;;;;;40242:24;;;40267:7;40242:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:50;;;40234:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;40349:48;40377:10;40389:7;40349:27;:48::i;:::-;40432:18;:30;40451:10;40432:30;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;40482:18;;:20;;;;;;;;;;;;;;40527;:29;40548:7;40527:29;;;;;;;;;;;;40520:36;;;;;;;;;;;40577:7;;;;;;;;;;;:20;;;40632:4;40664:10;40701:7;40577:154;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;40075:672;40070:3;;;;;;;40041:706;;;;39970:816;32140:1:::1;32492:7:::0;:22:::1;;;;33678:157:::0;39752:1041;;;:::o;41391:1011::-;41454:10;33689:14;33706:19;33717:7;33706:10;:19::i;:::-;33689:36;;33761:15;33736:13;:22;33750:7;33736:22;;;;;;;;;;;;;;;:40;;;;33809:6;33787:9;:18;33797:7;33787:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;32184:1:::1;32330:7;;:19;;32322:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;32184:1;32396:7;:18;;;;41507:6:::2;;;;;;;;;;;41506:7;41498:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;41572:1;41554:8;;:15;;:19;41546:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;41629:11;41643:8;;:15;;41629:29;;41680:9;41675:681;41699:3;41695:1;:7;41675:681;;;41727:15;41745:8;;41754:1;41745:11;;;;;;;:::i;:::-;;;;;;;;41727:29;;41810:10;41784:36;;:13;:22;41798:7;41784:22;;;;;;;;;;;;;;;;;;;;;:36;;;41776:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;41912:4;41871:46;;41879:3;;;;;;;;;;;41871:20;;;41892:7;41871:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;;41863:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;41974:47;42001:10;42013:7;41974:26;:47::i;:::-;42056:18;:30;42075:10;42056:30;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;42106:14;;:16;;;;;;;;;;;;;;42147:13;:22;42161:7;42147:22;;;;;;;;;;;;42140:29;;;;;;;;;;;42190:3;;;;;;;;;;;:16;;;42241:4;42273:10;42310:7;42190:150;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;41709:647;41704:3;;;;;;;41675:681;;;;41604:791;32140:1:::1;32492:7:::0;:22:::1;;;;33678:157:::0;41391:1011;;;:::o;13716:87::-;13762:7;13789:6;;;;;;;;;;;13782:13;;13716:87;:::o;33378:39::-;;;;:::o;32871:37::-;;;;:::o;37743:981::-;37804:10;33689:14;33706:19;33717:7;33706:10;:19::i;:::-;33689:36;;33761:15;33736:13;:22;33750:7;33736:22;;;;;;;;;;;;;;;:40;;;;33809:6;33787:9;:18;33797:7;33787:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;32184:1:::1;32330:7;;:19;;32322:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;32184:1;32396:7;:18;;;;37858:6:::2;;;;;;;;;;;37857:7;37849:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;37913:3;;;;;;;;;;;37905:29;;;37935:10;37955:4;37905:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37897:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;38022:1;38004:8;;:15;;:19;37996:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;38081:11;38095:8;;:15;;38081:29;;38125:17;38145:18;:30;38164:10;38145:30;;;;;;;;;;;;;;;;38125:50;;38195:9;38190:459;38214:3;38210:1;:7;38190:459;;;38243:15;38261:8;;38270:1;38261:11;;;;;;;:::i;:::-;;;;;;;;38243:29;;38332:10;38299:43;;38307:3;;;;;;;;;;;38299:20;;;38320:7;38299:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;;38291:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;38424:10;38399:13;:22;38413:7;38399:22;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;38492:7;38453:13;:25;38467:10;38453:25;;;;;;;;;;;;;;;:36;38479:9;38453:36;;;;;;;;;;;:46;;;;38518:11;;;;;;;38548:14;;:16;;;;;;;;;;;;;38583:3;;;;;;;;;;;:16;;;38600:10;38619:4;38625:7;38583:50;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;38224:425;38219:3;;;;;;;38190:459;;;;38696:9;38663:18;:30;38682:10;38663:30;;;;;;;;;;;;;;;:42;;;;38056:661;;32140:1:::1;32492:7:::0;:22:::1;;;;33678:157:::0;37743:981;;;:::o;34118:104::-;13947:12;:10;:12::i;:::-;13936:23;;:7;:5;:7::i;:::-;:23;;;13928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34210:3:::1;34189:11;;:25;;;;;;;;;;;;;;;;;;34118:104:::0;:::o;37084:317::-;37149:16;37177:11;37191:18;:25;37210:5;37191:25;;;;;;;;;;;;;;;;37177:39;;37227:21;37262:3;37251:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37227:39;;37282:9;37277:95;37301:3;37297:1;:7;37277:95;;;37337:13;:20;37351:5;37337:20;;;;;;;;;;;;;;;:23;37358:1;37337:23;;;;;;;;;;;;37327:4;37332:1;37327:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;37306:3;;;;:::i;:::-;;;37277:95;;;;37389:4;37382:11;;;;37084:317;;;:::o;34010:102::-;13947:12;:10;:12::i;:::-;13936:23;;:7;:5;:7::i;:::-;:23;;;13928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34101:3:::1;34085:13;:19;;;;34010:102:::0;:::o;33490:53::-;;;;;;;;;;;;;;;;;:::o;33079:39::-;;;;:::o;32967:48::-;;;;;;;;;;;;;;;;;:::o;34426:102::-;13947:12;:10;:12::i;:::-;13936:23;;:7;:5;:7::i;:::-;:23;;;13928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34517:3:::1;34501:13;:19;;;;34426:102:::0;:::o;42410:74::-;13947:12;:10;:12::i;:::-;13936:23;;:7;:5;:7::i;:::-;:23;;;13928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42470:6:::1;;;;;;;;;;;42469:7;42460:6;;:16;;;;;;;;;;;;;;;;;;42410:74::o:0;33344:22::-;;;;;;;;;;;;;:::o;36078:488::-;36142:16;36170:11;36184:3;;;;;;;;;;;:13;;;36198:4;36184:19;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36170:33;;36214:21;36249:3;36238:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36214:39;;36264:18;36299:27;36329:3;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36299:47;;36363:6;36359:176;36374:19;36372:1;:21;36359:176;;;36434:4;36416:22;;:3;;;;;;;;;;;:11;;;36428:1;36416:14;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:22;;;36413:111;;;36476:1;36457:4;36462:10;36457:16;;;;;;;;:::i;:::-;;;;;;;:20;;;;;36496:12;;;;;:::i;:::-;;;;36413:111;36394:3;;;;;:::i;:::-;;;;36359:176;;;;36554:4;36547:11;;;;;;36078:488;;;:::o;35463:204::-;35521:7;35564:21;35588:19;35599:7;35588:10;:19::i;:::-;35564:43;;35641:9;:18;35651:7;35641:18;;;;;;;;;;;;;;;;35625:13;:34;;;;:::i;:::-;35618:41;;;35463:204;;;:::o;14625:201::-;13947:12;:10;:12::i;:::-;13936:23;;:7;:5;:7::i;:::-;:23;;;13928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14734:1:::1;14714:22;;:8;:22;;;;14706:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;14790:28;14809:8;14790:18;:28::i;:::-;14625:201:::0;:::o;33181:53::-;;;;;;;;;;;;;;;;;:::o;32772:25::-;;;;;;;;;;;;;:::o;32831:33::-;;;;:::o;12440:98::-;12493:7;12520:10;12513:17;;12440:98;:::o;35013:442::-;35072:7;35096:16;35145:13;;35115:18;:27;35134:7;35115:27;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;35096:62;;35173:22;35228:13;;35198:18;:27;35217:7;35198:27;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;35173:68;;35256:19;35289:14;35278:8;:25;;;;:::i;:::-;35256:47;;35319:20;35342:13;:22;35356:7;35342:22;;;;;;;;;;;;;;;;35319:45;;35386:61;35441:5;35386:50;35402:33;35422:12;35402:15;:19;;:33;;;;:::i;:::-;35386:11;:15;;:50;;;;:::i;:::-;:54;;:61;;;;:::i;:::-;35379:68;;;;;;35013:442;;;:::o;14986:191::-;15060:16;15079:6;;;;;;;;;;;15060:25;;15105:8;15096:6;;:17;;;;;;;;;;;;;;;;;;15160:8;15129:40;;15150:8;15129:40;;;;;;;;;;;;15049:128;14986:191;:::o;40801:584::-;40889:18;40910;:24;40929:4;40910:24;;;;;;;;;;;;;;;;40889:45;;40950:9;40945:433;40969:10;40965:1;:14;40945:433;;;41042:7;41009:20;:26;41030:4;41009:26;;;;;;;;;;;;;;;:29;41036:1;41009:29;;;;;;;;;;;;:40;41005:358;;;41074:17;41107:1;41094:10;:14;;;;:::i;:::-;41074:34;;41163:20;:26;41184:4;41163:26;;;;;;;;;;;;;;;:85;41216:9;41163:85;;;;;;;;;;;;41131:20;:26;41152:4;41131:26;;;;;;;;;;;;;;;:29;41158:1;41131:29;;;;;;;;;;;:117;;;;41278:20;:26;41299:4;41278:26;;;;;;;;;;;;;;;:37;41305:9;41278:37;;;;;;;;;;;41271:44;;;41338:5;;;41005:358;40981:3;;;;:::i;:::-;;;40945:433;;;;40878:507;40801:584;;:::o;42492:555::-;42579:18;42600;:24;42619:4;42600:24;;;;;;;;;;;;;;;;42579:45;;42640:9;42635:405;42659:10;42655:1;:14;42635:405;;;42725:7;42699:13;:19;42713:4;42699:19;;;;;;;;;;;;;;;:22;42719:1;42699:22;;;;;;;;;;;;:33;42695:330;;;42757:17;42790:1;42777:10;:14;;;;:::i;:::-;42757:34;;42839:13;:19;42853:4;42839:19;;;;;;;;;;;;;;;:78;42885:9;42839:78;;;;;;;;;;;;42814:13;:19;42828:4;42814:19;;;;;;;;;;;;;;;:22;42834:1;42814:22;;;;;;;;;;;:103;;;;42947:13;:19;42961:4;42947:19;;;;;;;;;;;;;;;:30;42967:9;42947:30;;;;;;;;;;;42940:37;;;43000:5;;;42695:330;42671:3;;;;:::i;:::-;;;42635:405;;;;42568:479;42492:555;;:::o;8089:98::-;8147:7;8178:1;8174;:5;;;;:::i;:::-;8167:12;;8089:98;;;;:::o;8446:::-;8504:7;8535:1;8531;:5;;;;:::i;:::-;8524:12;;8446:98;;;;:::o;8845:::-;8903:7;8934:1;8930;:5;;;;:::i;:::-;8923:12;;8845:98;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;318:568::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:122;;459:79;;:::i;:::-;418:122;572:6;559:20;549:30;;602:18;594:6;591:30;588:117;;;624:79;;:::i;:::-;588:117;738:4;730:6;726:17;714:29;;792:3;784:4;776:6;772:17;762:8;758:32;755:41;752:128;;;799:79;;:::i;:::-;752:128;318:568;;;;;:::o;892:137::-;946:5;977:6;971:13;962:22;;993:30;1017:5;993:30;:::i;:::-;892:137;;;;:::o;1035:139::-;1081:5;1119:6;1106:20;1097:29;;1135:33;1162:5;1135:33;:::i;:::-;1035:139;;;;:::o;1180:143::-;1237:5;1268:6;1262:13;1253:22;;1284:33;1311:5;1284:33;:::i;:::-;1180:143;;;;:::o;1329:329::-;1388:6;1437:2;1425:9;1416:7;1412:23;1408:32;1405:119;;;1443:79;;:::i;:::-;1405:119;1563:1;1588:53;1633:7;1624:6;1613:9;1609:22;1588:53;:::i;:::-;1578:63;;1534:117;1329:329;;;;:::o;1664:351::-;1734:6;1783:2;1771:9;1762:7;1758:23;1754:32;1751:119;;;1789:79;;:::i;:::-;1751:119;1909:1;1934:64;1990:7;1981:6;1970:9;1966:22;1934:64;:::i;:::-;1924:74;;1880:128;1664:351;;;;:::o;2021:474::-;2089:6;2097;2146:2;2134:9;2125:7;2121:23;2117:32;2114:119;;;2152:79;;:::i;:::-;2114:119;2272:1;2297:53;2342:7;2333:6;2322:9;2318:22;2297:53;:::i;:::-;2287:63;;2243:117;2399:2;2425:53;2470:7;2461:6;2450:9;2446:22;2425:53;:::i;:::-;2415:63;;2370:118;2021:474;;;;;:::o;2501:559::-;2587:6;2595;2644:2;2632:9;2623:7;2619:23;2615:32;2612:119;;;2650:79;;:::i;:::-;2612:119;2798:1;2787:9;2783:17;2770:31;2828:18;2820:6;2817:30;2814:117;;;2850:79;;:::i;:::-;2814:117;2963:80;3035:7;3026:6;3015:9;3011:22;2963:80;:::i;:::-;2945:98;;;;2741:312;2501:559;;;;;:::o;3066:345::-;3133:6;3182:2;3170:9;3161:7;3157:23;3153:32;3150:119;;;3188:79;;:::i;:::-;3150:119;3308:1;3333:61;3386:7;3377:6;3366:9;3362:22;3333:61;:::i;:::-;3323:71;;3279:125;3066:345;;;;:::o;3417:329::-;3476:6;3525:2;3513:9;3504:7;3500:23;3496:32;3493:119;;;3531:79;;:::i;:::-;3493:119;3651:1;3676:53;3721:7;3712:6;3701:9;3697:22;3676:53;:::i;:::-;3666:63;;3622:117;3417:329;;;;:::o;3752:351::-;3822:6;3871:2;3859:9;3850:7;3846:23;3842:32;3839:119;;;3877:79;;:::i;:::-;3839:119;3997:1;4022:64;4078:7;4069:6;4058:9;4054:22;4022:64;:::i;:::-;4012:74;;3968:128;3752:351;;;;:::o;4109:179::-;4178:10;4199:46;4241:3;4233:6;4199:46;:::i;:::-;4277:4;4272:3;4268:14;4254:28;;4109:179;;;;:::o;4294:118::-;4381:24;4399:5;4381:24;:::i;:::-;4376:3;4369:37;4294:118;;:::o;4448:732::-;4567:3;4596:54;4644:5;4596:54;:::i;:::-;4666:86;4745:6;4740:3;4666:86;:::i;:::-;4659:93;;4776:56;4826:5;4776:56;:::i;:::-;4855:7;4886:1;4871:284;4896:6;4893:1;4890:13;4871:284;;;4972:6;4966:13;4999:63;5058:3;5043:13;4999:63;:::i;:::-;4992:70;;5085:60;5138:6;5085:60;:::i;:::-;5075:70;;4931:224;4918:1;4915;4911:9;4906:14;;4871:284;;;4875:14;5171:3;5164:10;;4572:608;;;4448:732;;;;:::o;5186:159::-;5287:51;5332:5;5287:51;:::i;:::-;5282:3;5275:64;5186:159;;:::o;5351:161::-;5453:52;5499:5;5453:52;:::i;:::-;5448:3;5441:65;5351:161;;:::o;5518:366::-;5660:3;5681:67;5745:2;5740:3;5681:67;:::i;:::-;5674:74;;5757:93;5846:3;5757:93;:::i;:::-;5875:2;5870:3;5866:12;5859:19;;5518:366;;;:::o;5890:::-;6032:3;6053:67;6117:2;6112:3;6053:67;:::i;:::-;6046:74;;6129:93;6218:3;6129:93;:::i;:::-;6247:2;6242:3;6238:12;6231:19;;5890:366;;;:::o;6262:::-;6404:3;6425:67;6489:2;6484:3;6425:67;:::i;:::-;6418:74;;6501:93;6590:3;6501:93;:::i;:::-;6619:2;6614:3;6610:12;6603:19;;6262:366;;;:::o;6634:::-;6776:3;6797:67;6861:2;6856:3;6797:67;:::i;:::-;6790:74;;6873:93;6962:3;6873:93;:::i;:::-;6991:2;6986:3;6982:12;6975:19;;6634:366;;;:::o;7006:::-;7148:3;7169:67;7233:2;7228:3;7169:67;:::i;:::-;7162:74;;7245:93;7334:3;7245:93;:::i;:::-;7363:2;7358:3;7354:12;7347:19;;7006:366;;;:::o;7378:::-;7520:3;7541:67;7605:2;7600:3;7541:67;:::i;:::-;7534:74;;7617:93;7706:3;7617:93;:::i;:::-;7735:2;7730:3;7726:12;7719:19;;7378:366;;;:::o;7750:::-;7892:3;7913:67;7977:2;7972:3;7913:67;:::i;:::-;7906:74;;7989:93;8078:3;7989:93;:::i;:::-;8107:2;8102:3;8098:12;8091:19;;7750:366;;;:::o;8122:::-;8264:3;8285:67;8349:2;8344:3;8285:67;:::i;:::-;8278:74;;8361:93;8450:3;8361:93;:::i;:::-;8479:2;8474:3;8470:12;8463:19;;8122:366;;;:::o;8494:::-;8636:3;8657:67;8721:2;8716:3;8657:67;:::i;:::-;8650:74;;8733:93;8822:3;8733:93;:::i;:::-;8851:2;8846:3;8842:12;8835:19;;8494:366;;;:::o;8866:::-;9008:3;9029:67;9093:2;9088:3;9029:67;:::i;:::-;9022:74;;9105:93;9194:3;9105:93;:::i;:::-;9223:2;9218:3;9214:12;9207:19;;8866:366;;;:::o;9238:::-;9380:3;9401:67;9465:2;9460:3;9401:67;:::i;:::-;9394:74;;9477:93;9566:3;9477:93;:::i;:::-;9595:2;9590:3;9586:12;9579:19;;9238:366;;;:::o;9610:108::-;9687:24;9705:5;9687:24;:::i;:::-;9682:3;9675:37;9610:108;;:::o;9724:118::-;9811:24;9829:5;9811:24;:::i;:::-;9806:3;9799:37;9724:118;;:::o;9848:222::-;9941:4;9979:2;9968:9;9964:18;9956:26;;9992:71;10060:1;10049:9;10045:17;10036:6;9992:71;:::i;:::-;9848:222;;;;:::o;10076:332::-;10197:4;10235:2;10224:9;10220:18;10212:26;;10248:71;10316:1;10305:9;10301:17;10292:6;10248:71;:::i;:::-;10329:72;10397:2;10386:9;10382:18;10373:6;10329:72;:::i;:::-;10076:332;;;;;:::o;10414:442::-;10563:4;10601:2;10590:9;10586:18;10578:26;;10614:71;10682:1;10671:9;10667:17;10658:6;10614:71;:::i;:::-;10695:72;10763:2;10752:9;10748:18;10739:6;10695:72;:::i;:::-;10777;10845:2;10834:9;10830:18;10821:6;10777:72;:::i;:::-;10414:442;;;;;;:::o;10862:332::-;10983:4;11021:2;11010:9;11006:18;10998:26;;11034:71;11102:1;11091:9;11087:17;11078:6;11034:71;:::i;:::-;11115:72;11183:2;11172:9;11168:18;11159:6;11115:72;:::i;:::-;10862:332;;;;;:::o;11200:373::-;11343:4;11381:2;11370:9;11366:18;11358:26;;11430:9;11424:4;11420:20;11416:1;11405:9;11401:17;11394:47;11458:108;11561:4;11552:6;11458:108;:::i;:::-;11450:116;;11200:373;;;;:::o;11579:250::-;11686:4;11724:2;11713:9;11709:18;11701:26;;11737:85;11819:1;11808:9;11804:17;11795:6;11737:85;:::i;:::-;11579:250;;;;:::o;11835:252::-;11943:4;11981:2;11970:9;11966:18;11958:26;;11994:86;12077:1;12066:9;12062:17;12053:6;11994:86;:::i;:::-;11835:252;;;;:::o;12093:419::-;12259:4;12297:2;12286:9;12282:18;12274:26;;12346:9;12340:4;12336:20;12332:1;12321:9;12317:17;12310:47;12374:131;12500:4;12374:131;:::i;:::-;12366:139;;12093:419;;;:::o;12518:::-;12684:4;12722:2;12711:9;12707:18;12699:26;;12771:9;12765:4;12761:20;12757:1;12746:9;12742:17;12735:47;12799:131;12925:4;12799:131;:::i;:::-;12791:139;;12518:419;;;:::o;12943:::-;13109:4;13147:2;13136:9;13132:18;13124:26;;13196:9;13190:4;13186:20;13182:1;13171:9;13167:17;13160:47;13224:131;13350:4;13224:131;:::i;:::-;13216:139;;12943:419;;;:::o;13368:::-;13534:4;13572:2;13561:9;13557:18;13549:26;;13621:9;13615:4;13611:20;13607:1;13596:9;13592:17;13585:47;13649:131;13775:4;13649:131;:::i;:::-;13641:139;;13368:419;;;:::o;13793:::-;13959:4;13997:2;13986:9;13982:18;13974:26;;14046:9;14040:4;14036:20;14032:1;14021:9;14017:17;14010:47;14074:131;14200:4;14074:131;:::i;:::-;14066:139;;13793:419;;;:::o;14218:::-;14384:4;14422:2;14411:9;14407:18;14399:26;;14471:9;14465:4;14461:20;14457:1;14446:9;14442:17;14435:47;14499:131;14625:4;14499:131;:::i;:::-;14491:139;;14218:419;;;:::o;14643:::-;14809:4;14847:2;14836:9;14832:18;14824:26;;14896:9;14890:4;14886:20;14882:1;14871:9;14867:17;14860:47;14924:131;15050:4;14924:131;:::i;:::-;14916:139;;14643:419;;;:::o;15068:::-;15234:4;15272:2;15261:9;15257:18;15249:26;;15321:9;15315:4;15311:20;15307:1;15296:9;15292:17;15285:47;15349:131;15475:4;15349:131;:::i;:::-;15341:139;;15068:419;;;:::o;15493:::-;15659:4;15697:2;15686:9;15682:18;15674:26;;15746:9;15740:4;15736:20;15732:1;15721:9;15717:17;15710:47;15774:131;15900:4;15774:131;:::i;:::-;15766:139;;15493:419;;;:::o;15918:::-;16084:4;16122:2;16111:9;16107:18;16099:26;;16171:9;16165:4;16161:20;16157:1;16146:9;16142:17;16135:47;16199:131;16325:4;16199:131;:::i;:::-;16191:139;;15918:419;;;:::o;16343:::-;16509:4;16547:2;16536:9;16532:18;16524:26;;16596:9;16590:4;16586:20;16582:1;16571:9;16567:17;16560:47;16624:131;16750:4;16624:131;:::i;:::-;16616:139;;16343:419;;;:::o;16768:222::-;16861:4;16899:2;16888:9;16884:18;16876:26;;16912:71;16980:1;16969:9;16965:17;16956:6;16912:71;:::i;:::-;16768:222;;;;:::o;17077:132::-;17144:4;17167:3;17159:11;;17197:4;17192:3;17188:14;17180:22;;17077:132;;;:::o;17215:114::-;17282:6;17316:5;17310:12;17300:22;;17215:114;;;:::o;17335:113::-;17405:4;17437;17432:3;17428:14;17420:22;;17335:113;;;:::o;17454:184::-;17553:11;17587:6;17582:3;17575:19;17627:4;17622:3;17618:14;17603:29;;17454:184;;;;:::o;17644:169::-;17728:11;17762:6;17757:3;17750:19;17802:4;17797:3;17793:14;17778:29;;17644:169;;;;:::o;17819:305::-;17859:3;17878:20;17896:1;17878:20;:::i;:::-;17873:25;;17912:20;17930:1;17912:20;:::i;:::-;17907:25;;18066:1;17998:66;17994:74;17991:1;17988:81;17985:107;;;18072:18;;:::i;:::-;17985:107;18116:1;18113;18109:9;18102:16;;17819:305;;;;:::o;18130:185::-;18170:1;18187:20;18205:1;18187:20;:::i;:::-;18182:25;;18221:20;18239:1;18221:20;:::i;:::-;18216:25;;18260:1;18250:35;;18265:18;;:::i;:::-;18250:35;18307:1;18304;18300:9;18295:14;;18130:185;;;;:::o;18321:348::-;18361:7;18384:20;18402:1;18384:20;:::i;:::-;18379:25;;18418:20;18436:1;18418:20;:::i;:::-;18413:25;;18606:1;18538:66;18534:74;18531:1;18528:81;18523:1;18516:9;18509:17;18505:105;18502:131;;;18613:18;;:::i;:::-;18502:131;18661:1;18658;18654:9;18643:20;;18321:348;;;;:::o;18675:191::-;18715:4;18735:20;18753:1;18735:20;:::i;:::-;18730:25;;18769:20;18787:1;18769:20;:::i;:::-;18764:25;;18808:1;18805;18802:8;18799:34;;;18813:18;;:::i;:::-;18799:34;18858:1;18855;18851:9;18843:17;;18675:191;;;;:::o;18872:96::-;18909:7;18938:24;18956:5;18938:24;:::i;:::-;18927:35;;18872:96;;;:::o;18974:90::-;19008:7;19051:5;19044:13;19037:21;19026:32;;18974:90;;;:::o;19070:126::-;19107:7;19147:42;19140:5;19136:54;19125:65;;19070:126;;;:::o;19202:77::-;19239:7;19268:5;19257:16;;19202:77;;;:::o;19285:140::-;19349:9;19382:37;19413:5;19382:37;:::i;:::-;19369:50;;19285:140;;;:::o;19431:141::-;19496:9;19529:37;19560:5;19529:37;:::i;:::-;19516:50;;19431:141;;;:::o;19578:126::-;19628:9;19661:37;19692:5;19661:37;:::i;:::-;19648:50;;19578:126;;;:::o;19710:113::-;19760:9;19793:24;19811:5;19793:24;:::i;:::-;19780:37;;19710:113;;;:::o;19829:233::-;19868:3;19891:24;19909:5;19891:24;:::i;:::-;19882:33;;19937:66;19930:5;19927:77;19924:103;;;20007:18;;:::i;:::-;19924:103;20054:1;20047:5;20043:13;20036:20;;19829:233;;;:::o;20068:180::-;20116:77;20113:1;20106:88;20213:4;20210:1;20203:15;20237:4;20234:1;20227:15;20254:180;20302:77;20299:1;20292:88;20399:4;20396:1;20389:15;20423:4;20420:1;20413:15;20440:180;20488:77;20485:1;20478:88;20585:4;20582:1;20575:15;20609:4;20606:1;20599:15;20626:180;20674:77;20671:1;20664:88;20771:4;20768:1;20761:15;20795:4;20792:1;20785:15;20812:117;20921:1;20918;20911:12;20935:117;21044:1;21041;21034:12;21058:117;21167:1;21164;21157:12;21181:117;21290:1;21287;21280:12;21304:117;21413:1;21410;21403:12;21427:225;21567:34;21563:1;21555:6;21551:14;21544:58;21636:8;21631:2;21623:6;21619:15;21612:33;21427:225;:::o;21658:162::-;21798:14;21794:1;21786:6;21782:14;21775:38;21658:162;:::o;21826:170::-;21966:22;21962:1;21954:6;21950:14;21943:46;21826:170;:::o;22002:182::-;22142:34;22138:1;22130:6;22126:14;22119:58;22002:182;:::o;22190:168::-;22330:20;22326:1;22318:6;22314:14;22307:44;22190:168;:::o;22364:180::-;22504:32;22500:1;22492:6;22488:14;22481:56;22364:180;:::o;22550:220::-;22690:34;22686:1;22678:6;22674:14;22667:58;22759:3;22754:2;22746:6;22742:15;22735:28;22550:220;:::o;22776:168::-;22916:20;22912:1;22904:6;22900:14;22893:44;22776:168;:::o;22950:181::-;23090:33;23086:1;23078:6;23074:14;23067:57;22950:181;:::o;23137:230::-;23277:34;23273:1;23265:6;23261:14;23254:58;23346:13;23341:2;23333:6;23329:15;23322:38;23137:230;:::o;23373:165::-;23513:17;23509:1;23501:6;23497:14;23490:41;23373:165;:::o;23544:122::-;23617:24;23635:5;23617:24;:::i;:::-;23610:5;23607:35;23597:63;;23656:1;23653;23646:12;23597:63;23544:122;:::o;23672:116::-;23742:21;23757:5;23742:21;:::i;:::-;23735:5;23732:32;23722:60;;23778:1;23775;23768:12;23722:60;23672:116;:::o;23794:122::-;23867:24;23885:5;23867:24;:::i;:::-;23860:5;23857:35;23847:63;;23906:1;23903;23896:12;23847:63;23794:122;:::o

Swarm Source

ipfs://954c2aeb9277a5d893b3533e496e60c494abb7bf726fb2dc261b6550e51c41c2
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.