Contract 0x38506a479e8959150466ce9253c19089fd0907d7 2

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x44a007d3983a973369de9666db22dd2d44df1a9827dda7047a2eb2a6bf0f14b1Harvest Rewards119980002021-10-22 16:52:5219 mins ago0x382698bf88d3e9320be2c87c915ef08a45b306c2 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000523725
0x5d66a2f03cd68741da1cf29a781cc95badcc42b0919f32337e3af9f656d7f347Deposit119979072021-10-22 16:48:1323 mins ago0x21dabe7fc2aa4e453bf7f02fa82450d55d0ca388 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.001717155
0x9b98d1992ab48738b36c0b91ad13bc814a184f487a365cfcefd8a56ca3d2754fHarvest Rewards119977382021-10-22 16:39:4532 mins ago0x4a10d89e02a3d5f06474d514ec89e64557e46b41 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000373725
0x477f7d63e628370c723584151e7be15fd009cc5041937802ea2a89cc0697ff93Deposit119951162021-10-22 14:27:112 hrs 44 mins ago0x5626db19e3498cb30e62b65e5d837db167c42f47 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.00171709
0x992105871b834620a1bc9b8a77e260db4063cf6243dae617dbaa34885e5d1985Deposit119943312021-10-22 13:47:533 hrs 24 mins ago0x58074cd611271b2f3592f1ea04b0d61fe7d13210 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.001717525
0xb30f809f14fd465824a29109952e6c3f009db8294396b4d71afaa50fba476e57Deposit119938712021-10-22 13:24:463 hrs 47 mins ago0x16483dece515adeda06cd114659c5edc2dde8244 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.00171703
0x105f3e23de3102a34bce68a963259eb620f592e02d78b676fa72f2c2e23ccdf4Deposit119938402021-10-22 13:23:133 hrs 48 mins ago0x16483dece515adeda06cd114659c5edc2dde8244 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.001717215
0x489e745fde7432f55040e5bb8bcd8ca9193c1ce960ae5ae1a9b424dccb2c0931Deposit119922192021-10-22 12:02:005 hrs 10 mins ago0xcd2e8101d83a0c2532b6857f28981cbb4c374f53 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000606465
0x3133e0f42e56a15a6ffcc039bb5696da0cdbc3885c1900b62b1c546d39f4dcdeHarvest Rewards119916432021-10-22 11:33:035 hrs 38 mins ago0xd577fc33259645c3c7373c136d713e817daeca6e IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000448665
0x1becf21085f36ca6fc3d2af5bcebaecdfa31dab97e6bb9ebde3bb1480384f5ccDeposit119910662021-10-22 11:04:126 hrs 7 mins ago0x16483dece515adeda06cd114659c5edc2dde8244 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.00171697
0xf5e2c5e45539692e71d27a375c384e4917912cf4ee4f829115f13032eff03366Harvest Rewards119908892021-10-22 10:54:246 hrs 17 mins ago0x97262c93a313399c22913293843555117d7a0be8 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000448725
0x79d7fa6c11d33a160fedb3ac51ef92e1319ee40d68ba032415b36e4316734deaHarvest Rewards119908732021-10-22 10:53:296 hrs 18 mins ago0x97262c93a313399c22913293843555117d7a0be8 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000373725
0x0d61806e31041e0d52b1fa48b4d982dd42b3936e6df43bdce75d4a48b1eb01daHarvest Rewards119908462021-10-22 10:51:536 hrs 20 mins ago0x97262c93a313399c22913293843555117d7a0be8 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000448725
0x9160fadab75d4ee9431002f607636794d324cbc36dcbc5a01807618ff15a59daHarvest Rewards119883422021-10-22 8:46:238 hrs 25 mins ago0x587cb20b1ea6ba76391cf356a7626e6afad97f5c IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000373665
0xb6e3015f4be5ad499cacab74fb53a5bd55a0c427e86bc266782e809e79056e7eHarvest Rewards119876072021-10-22 8:06:339 hrs 5 mins ago0xc3d5a3bdbac192c9e5afd9b14ea654980c249ee2 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000448725
0xf527f1b30469d26c4f89cfb312c9bff22bd594d58ace86efb1082ca889e95d81Harvest Rewards119875992021-10-22 8:06:079 hrs 5 mins ago0xc3d5a3bdbac192c9e5afd9b14ea654980c249ee2 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000373725
0x72ed2cd3a247709f853380006fd6d165fcb87be402517f32b00536bfb091b3f1Harvest Rewards119875932021-10-22 8:05:499 hrs 6 mins ago0xc3d5a3bdbac192c9e5afd9b14ea654980c249ee2 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000448725
0xe883a31e9679c989303035d45bfd52b4cb4407a0054491849f2736ced789fd3aHarvest Rewards119871692021-10-22 7:44:039 hrs 27 mins ago0x15ab84f5096d08cc67df6347353d2cf324c7df7c IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000448725
0x1043f04207e4324ea047f0d2099e486d6e6156c2fb350cf2669aa07a26de08d8Harvest Rewards119867792021-10-22 7:24:259 hrs 47 mins ago0x0d6508759a465f26091778100f8e42b05aa80b2f IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000523725
0x67c57b9c1f42a6074d9801c452eb697b05de65bee166b1b4e30bc05ca166f624Withdraw119852592021-10-22 6:05:3611 hrs 6 mins ago0xa5ede733f47c1a14957f2dfb560a0ce0f6fa74d0 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.00069419
0xcd9ee014d6611b31bd293f73fe7e267c671c884e001884b4f2456f17e8e7b3b2Deposit119851702021-10-22 6:01:0911 hrs 10 mins ago0xa5ede733f47c1a14957f2dfb560a0ce0f6fa74d0 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.001717645
0x1c2f94516f298928d619e723046496eb673da6b47a16b580a6ac76c5f78f687dHarvest Rewards119851352021-10-22 5:59:2411 hrs 12 mins ago0x988ec2790faca3d90650cf735bec5da6924cf964 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000373665
0xe243160e3ec79ed78b4050604f952efc89e533783c9319b4b831a56b7ab2e4c3Harvest Rewards119850132021-10-22 5:52:4711 hrs 19 mins ago0x5dcf1a59235954adc719e513b0c99d69bb88ea91 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000373725
0xed65819672b70cdf8ea27059931fcf669c821e0be1f97e76c5b8c96fa66996a7Harvest Rewards119850122021-10-22 5:52:4411 hrs 19 mins ago0x5dcf1a59235954adc719e513b0c99d69bb88ea91 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000373725
0x71ba97579d4f0dc80d65358db17150eb058f94dd54409c7abd36e54e7d53a80aHarvest Rewards119850092021-10-22 5:52:3311 hrs 19 mins ago0x5dcf1a59235954adc719e513b0c99d69bb88ea91 IN  0x38506a479e8959150466ce9253c19089fd0907d70 BNB0.000448725
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Pool

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-08-24
*/

/**
 *Submitted for verification at BscScan.com on 2021-07-16
*/

/**
 *Submitted for verification at BscScan.com on 2021-03-11
 */


pragma solidity >=0.4.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @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) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @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 sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @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) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts 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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts 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 mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message 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,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }

    function min(uint256 x, uint256 y) internal pure returns (uint256 z) {
        z = x < y ? x : y;
    }

    function sqrt(uint256 y) internal pure returns (uint256 z) {
        if (y > 3) {
            z = y;
            uint256 x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}

pragma solidity >=0.4.0;

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

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

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

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

    /**
     * @dev Returns the bep token owner.
     */
    function getOwner() external view returns (address);

    /**
     * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, 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:
    
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` 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 sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @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
    );
}

pragma solidity ^0.6.2;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash =
            0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
    
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
    
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
    
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
    
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) =
            target.call{value: weiValue}(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

pragma solidity ^0.6.0;

/**
 * @title SafeBEP20
 * @dev Wrappers around BEP20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeBEP20 for IBEP20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeBEP20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(
        IBEP20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transfer.selector, to, value)
        );
    }

    function safeTransferFrom(
        IBEP20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
        );
    }

    /**
     * @dev Deprecated. This function has issues similar to the ones found in
     * {IBEP20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
    function safeApprove(
        IBEP20 token,
        address spender,
        uint256 value
    ) internal {
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeBEP20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.approve.selector, spender, value)
        );
    }

    function safeIncreaseAllowance(
        IBEP20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance =
            token.allowance(address(this), spender).add(value);
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.approve.selector,
                spender,
                newAllowance
            )
        );
    }

    function safeDecreaseAllowance(
        IBEP20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance =
            token.allowance(address(this), spender).sub(
                value,
                "SafeBEP20: decreased allowance below zero"
            );
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.approve.selector,
                spender,
                newAllowance
            )
        );
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IBEP20 token, bytes memory data) private {

        bytes memory returndata =
            address(token).functionCall(
                data,
                "SafeBEP20: low-level call failed"
            );
        if (returndata.length > 0) {
            require(
                abi.decode(returndata, (bool)),
                "SafeBEP20: BEP20 operation did not succeed"
            );
        }
    }
}

pragma solidity >=0.4.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
    constructor() internal {}

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

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

pragma solidity >=0.4.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.
 */
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() internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view 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 onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
/**
 * @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.
/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
/**
 * @dev Implementation of the {IBEP20} 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 {BEP20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide

 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of BEP20 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 {IBEP20-approve}.
 */
contract BEP20 is Context, IBEP20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name, string memory symbol) public {
        _name = name;
        _symbol = symbol;
        _decimals = 18;
    }

    /**
     * @dev Returns the bep token owner.
     */
    function getOwner() external view override returns (address) {
        return owner();
    }

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

    /**
     * @dev Returns the token decimals.
     */
    function decimals() public view override returns (uint8) {
        return _decimals;
    }

    /**
     * @dev Returns the token symbol.
     */
    function symbol() public view override returns (string memory) {
        return _symbol;
    }

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

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

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

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

    /**
     * @dev See {BEP20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {BEP20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {BEP20};
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for `sender`'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "BEP20: transfer amount exceeds allowance"
            )
        );
        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 {BEP20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(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 {BEP20-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
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "BEP20: decreased allowance below zero"
            )
        );
        return true;
    }

    /**
     * @dev Creates `amount` tokens and assigns them to `msg.sender`, increasing
     * the total supply.
     *
     * Requirements
     *
     * - `msg.sender` must be the token owner
     */
    function mint(uint256 amount) public onlyOwner returns (bool) {
        _mint(msg.sender, amount);
        return true;
    }

    function burn(uint256 amount) public onlyOwner  returns (bool) {
        _burn(_msgSender(), amount);
        return true;
    }
    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is 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:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        require(sender != address(0), "BEP20: transfer from the zero address");
        require(recipient != address(0), "BEP20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(
            amount,
            "BEP20: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, 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
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) public onlyOwner {
        require(account != address(0), "BEP20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(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 {
        require(account != address(0), "BEP20: burn from the zero address");

        _balances[account] = _balances[account].sub(
            amount,
            "BEP20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is 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 {
        require(owner != address(0), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");

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

    /**
     * @dev Destroys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     *
     * See {_burn} and {_approve}.
     */
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(
            account,
            _msgSender(),
            _allowances[account][_msgSender()].sub(
                amount,
                "BEP20: burn amount exceeds allowance"
            )
        );
    }
}

pragma solidity >=0.4.0;

abstract contract ReentrancyGuard {

    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() internal {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        _status = _ENTERED;

        _;

        _status = _NOT_ENTERED;
    }
}

pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;


contract AcetToken  is BEP20("Acet Token", "ACT") {
    // Success is inescapable
}


contract AcetAdaptor is Ownable {
    mapping (uint => Pool) public peoples;
    event votedEvent(uint indexed _candidateId);
    uint public candidateCount;
    IBEP20 actToken;
    struct Pool {
        uint id;
        address addr;
        uint poolStatusFlag;
    }
    constructor(
        IBEP20 _token
        ) public {
        candidateCount = 0;
        actToken = _token;
        act = AcetToken(address(_token));
    }
    
    AcetToken act;
    
    function increasePool(
            address _address
    ) public onlyOwner{
        uint checkAddress = 0;
        
         for (uint i = 0; i < candidateCount; i++) {
              Pool storage people = peoples[i];
                if (people.addr == _address) {
                    checkAddress = 1;  
                }
        }
        require(checkAddress == 0, "Pool already exist");
        peoples[candidateCount] = Pool(candidateCount, _address, 0);
        candidateCount++;
    }
      function get(uint _candidateId) public view returns(Pool memory) {
        return peoples[_candidateId];
      }
      function getPeople() public view returns ( address[] memory){
          address[] memory addr = new address[](candidateCount);
          for (uint i = 0; i < candidateCount; i++) {
              Pool storage people = peoples[i];
              addr[i] = people.addr;
          }
          return (addr);
      }
      
      function getPeoples(address _address) public view returns (Pool[] memory){
          Pool[]    memory id = new Pool[](candidateCount);
          for (uint i = 0; i < candidateCount; i++) {
              Pool storage people = peoples[i];
                if (people.addr == address(_address)) {
                    id[i] = people;
                }
          }
          return id;
      }
    
    function toPool(uint _amount, uint _funtion) public {
        uint checkAddress = 0;
        uint checkFlagEnable = 0;
         for (uint i = 0; i < candidateCount; i++) {
              Pool storage people = peoples[i];
                if (people.addr == msg.sender) {
                    checkAddress = 1;  
                    checkFlagEnable = people.poolStatusFlag;
                }
        }
        require(checkAddress == 1, "Pool doesn't exist");
        if (checkFlagEnable == 1) {
            if (_funtion == 1) {
                revert("Pool has been limit");
            }
        }
        act._mint(address(msg.sender), _amount);
    }
    
    function toDev(uint _amount, address _address, uint _funtion) public {
        uint checkAddress = 0;
        uint checkFlagEnable = 0;
         for (uint i = 0; i < candidateCount; i++) {
              Pool storage people = peoples[i];
                if (people.addr == msg.sender) {
                    checkAddress = 1;
                    checkFlagEnable = people.poolStatusFlag;
  
                }
         }
        require(checkAddress == 1, "Pool doesn't exist");
        if (checkFlagEnable == 1) {
            if (_funtion == 1) {
                revert("Pool has been limit");
            }
        } 
        act._mint(address(_address), _amount);
    }
    
    function toBurn(uint _amount) public {
         uint checkAddress = 0;
         uint checkFlagEnable = 0;
         for (uint i = 0; i < candidateCount; i++) {
              Pool storage people = peoples[i];
                if (people.addr == msg.sender) {
                    checkAddress = 1;
                    checkFlagEnable = people.poolStatusFlag;

                }
         }
        require(checkAddress == 1, "Pool doesn't exist");
        act.burn(_amount);
  
    }
    
    function updateSpecificPool(uint id, uint  status) public onlyOwner{
        uint checkID = 0;
        for (uint i = 0; i < candidateCount; i++) {
              Pool storage people = peoples[i];
                if (people.id == id) {
                    checkID = 1;  
                }
        }
        require(checkID == 1, "ID doesn exist");
        require(status == 0 || status == 1, "Error: The command was not found in the system");
        if (status == 1) {
            peoples[id].poolStatusFlag = 1;
        }else {
            peoples[id].poolStatusFlag = 0;
        }
    }
}


contract Pool is Ownable, ReentrancyGuard {
    
    using SafeMath for uint256;
    using SafeBEP20 for IBEP20;
    
    struct Pool {
        uint id;
        int256 contractID;
        uint256 blockStart;
        uint256 blockEnd;
        uint256 depositAmount;
        uint256 balanceAmount;
        uint256 havestBalance;
        uint256 currentExtraReward;
        uint256 packagePercent;
        address addr;
        uint256 extraRewards;
        uint256 prepareRewards;
        uint256 rewardPerBlock;
    }
    
    uint256 public rewardPerBlock;
    address[] accountList;
    uint256 public extraRewards;
    uint256 public unHarvest;
    mapping(address => Pool) public poolbusd;
    address[] public poolBusdList;
    mapping (uint => Pool) public peoples;
    event votedEvent(uint indexed _candidateId);
    uint public candidateCount;
    string public poolName;
    IBEP20 public mainRewardsToken;
    IBEP20 public mainSyrupToken;
    uint public Contract1D; 
    uint public Contract7D;
    uint public Contract30D;
    uint public Contract90D;
    uint public Contract180D;
    uint public Contract360D;
    uint public TotalBlock1D; 
    uint public TotalBlock7D;
    uint public TotalBlock30D;
    uint public TotalBlock90D;
    uint public TotalBlock180D;
    uint public TotalBlock360D;
    address public DeployerWalletAsdress;
    uint public AtLeastAmount;
    uint public StakeFees;
    uint public PenaltyFees;
    uint public AdditionalDeployerToken;
    uint public HarvestFees;
    address adaptorAddress;
 
      constructor(
        IBEP20 _rewardToken,
        IBEP20 _syrupToken,
        address _adaptorAddress,
        string memory _poolName)
        public {
        candidateCount = 0;
        mainSyrupToken = _syrupToken;
        mainRewardsToken = _rewardToken;
        Contract1D = 37;
        Contract7D = 307;
        Contract30D = 1487;
        Contract90D = 4788;
        Contract180D = 10800;
        Contract360D = 27000;
        TotalBlock1D = 28800;
        TotalBlock7D = 201600;
        TotalBlock30D = 864000;
        TotalBlock90D = 2592000;
        TotalBlock180D = 5184000;
        TotalBlock360D = 10368000;
        AtLeastAmount = 100000000000000000000;
        DeployerWalletAsdress = 0xcFe0B919c10b1ABaF68E2b99B296939198bc0358;
        poolName = _poolName;
        StakeFees = 370;
        PenaltyFees = 770;
        HarvestFees = 250;
        AdditionalDeployerToken = 700;
        adaptorAddress = _adaptorAddress;
        ad = AcetAdaptor(adaptorAddress);
    }
    AcetAdaptor ad;
    function addHolder(
        int256  _contract, 
        uint256  _blockStart,
        uint256  _blockEnd,
        uint256  _depositAmount,
        uint256  _balanceAmount,
        uint256  _havestBalance,
        uint256  _currentExtraReward,
        uint256  _packagePercent,
        address  _address,
        uint256  _extraRewards,
        uint256  _prepareReward,
        uint256 _rewardPerBlock
    ) private {
        peoples[candidateCount] = Pool(candidateCount, _contract, _blockStart, _blockEnd, _depositAmount, _balanceAmount, _havestBalance, _currentExtraReward, _packagePercent, _address, _extraRewards, _prepareReward, _rewardPerBlock);
        candidateCount++;
    }
  function get(uint _candidateId) public view returns(Pool memory) {
    return peoples[_candidateId];
  }
  function getPeople() public view returns ( address[] memory){
      address[] memory addr = new address[](candidateCount);
      for (uint i = 0; i < candidateCount; i++) {
          Pool storage people = peoples[i];
          addr[i] = people.addr;
      }
      return (addr);
  }
  
  function getPeoples(address _address) public view returns (Pool[] memory){
      Pool[]    memory id = new Pool[](candidateCount);
      for (uint i = 0; i < candidateCount; i++) {
          
          Pool storage people = peoples[i];
            if (people.addr == address(_address)) {
                id[i] = people;
            }
      }
      return id;
  }
    

    function _deposit(
        uint256 _packagePercent,
        address _address,
        uint256 blockEstimated,
        uint256 _amount,
        IBEP20 syrupToken,
        int256 _contract
    ) private {
        uint256 fee = _amount.mul(StakeFees).div(100).div(100);
        syrupToken.safeTransferFrom(
            address(msg.sender),
            DeployerWalletAsdress,
            fee
        );
        ad.toPool(_amount.mul(_packagePercent).div(100).div(100), 1);
        uint256 toDev = _amount.mul(_packagePercent).div(100).div(100);
        ad.toDev(toDev.mul(AdditionalDeployerToken).div(100).div(100), DeployerWalletAsdress, 1);
        syrupToken.safeTransferFrom(
            address(msg.sender),
            address(this),
            _amount - fee
        );
        uint256 percent = _packagePercent;
        uint256 totalRewardsPrepare = _amount.mul(_packagePercent).div(100).div(100);
        uint256 rewardPerBlock =
        (_amount.mul(percent).div(100).div(100)).div(blockEstimated);
        addHolder(
            _contract, 
            block.number, 
            block.number.add(blockEstimated), 
            _amount, 
            _amount - fee, 
            0, 
            0, 
            percent, 
            address(msg.sender), 
            0, 
            totalRewardsPrepare, 
            rewardPerBlock);
      
    }

    function deposit(
        int256 _contract,
        uint256 _amount
    ) public nonReentrant {
        require(_contract == 1 || _contract == 2 || _contract == 3 || _contract == 4 || _contract == 5 || _contract == 6, "contract doesn exits");
        require(_amount >= AtLeastAmount, "Amount inceed minimum");
        if (_contract == 1) {
            _deposit(
                Contract1D,
                address(msg.sender),
                TotalBlock1D,
                _amount,
                mainSyrupToken,
                _contract
            );
        } else if (_contract == 2) {
            _deposit(
                Contract7D,
                address(msg.sender),
                TotalBlock7D,
                _amount,
                mainSyrupToken,
                _contract
            );
        } else if (_contract == 3) {
            _deposit(
                Contract30D,
                address(msg.sender),
                TotalBlock30D,
                _amount,
                mainSyrupToken,
                _contract
                
            );
        } else if (_contract == 4) {
            _deposit(
                Contract90D,
                address(msg.sender),
                TotalBlock90D,
                _amount,
                mainSyrupToken,
                _contract
            );
        } else if (_contract == 5) {
            _deposit(
                Contract180D,
                address(msg.sender),
                TotalBlock180D,
                _amount,
                mainSyrupToken,
                _contract

            );
        } else {
            _deposit(
                Contract360D,
                address(msg.sender),
                TotalBlock360D,
                _amount,
                mainSyrupToken,
                _contract
            );
        }
    }

    function _withdraw(
        IBEP20 fromRewardToken,
        IBEP20 syrupToken,
        uint256 packagePercent,
        uint256 _id
    ) private {
        
        if (peoples[_id].blockEnd > block.number) {
            uint256 penaltyAmount = peoples[_id].balanceAmount.mul(PenaltyFees).div(100).div(100);
            syrupToken.safeTransfer(
                DeployerWalletAsdress,
                penaltyAmount
            );
            peoples[_id].balanceAmount = peoples[_id].balanceAmount.sub(penaltyAmount);
            syrupToken.safeTransfer(address(msg.sender),  peoples[_id].balanceAmount);
            uint256 rewardCalc = block.number.sub(peoples[_id].blockStart).mul(peoples[_id].rewardPerBlock);
            uint256 totalReveiveReward = peoples[_id].prepareRewards.sub(peoples[_id].havestBalance).sub(rewardCalc);
            fromRewardToken.safeTransfer(DeployerWalletAsdress, rewardCalc.mul(HarvestFees).div(100).div(100));
            fromRewardToken.safeTransfer(address(msg.sender), rewardCalc.sub(rewardCalc.mul(HarvestFees).div(100).div(100)));
            peoples[_id].blockStart = block.number;
            fromRewardToken.safeTransfer(adaptorAddress, totalReveiveReward);
            ad.toBurn(totalReveiveReward);
                
            peoples[_id].balanceAmount = 0;
        }else {
            syrupToken.safeTransfer(address(msg.sender), peoples[_id].balanceAmount);
            peoples[_id].balanceAmount = peoples[_id].balanceAmount.sub(peoples[_id].balanceAmount);
            uint256 rewardReceive;
            if ( peoples[_id].blockEnd ==  peoples[_id].blockStart) {
                rewardReceive = 0;
            }else {
                rewardReceive = peoples[_id].prepareRewards.sub(peoples[_id].havestBalance);
            }
            fromRewardToken.safeTransfer(DeployerWalletAsdress, rewardReceive.mul(HarvestFees).div(100).div(100));
            fromRewardToken.safeTransfer(address(msg.sender), rewardReceive.sub(rewardReceive.mul(HarvestFees).div(100).div(100)));
            peoples[_id].balanceAmount = 0;
            if (peoples[_id].blockStart == peoples[_id].blockEnd) {
                fromRewardToken.safeTransfer(adaptorAddress, peoples[_id].prepareRewards.sub(peoples[_id].havestBalance));
                ad.toBurn(peoples[_id].prepareRewards.sub(peoples[_id].havestBalance));
            }
        }
        
    }

    function withdraw(
        uint256 _id
    ) public nonReentrant {
        require(peoples[_id].addr == msg.sender, "You do not own this id");
        require(peoples[_id].balanceAmount > 0, "Not allow to transfer zero balance");
        if (peoples[_id].contractID == 1) {
            _withdraw(
                mainRewardsToken,
                mainSyrupToken,
                Contract1D,
               _id
            );
        } else if (peoples[_id].contractID == 2) {
            _withdraw(
                mainRewardsToken,
                mainSyrupToken,
                Contract7D,
                _id
            );
        } else if (peoples[_id].contractID == 3) {
            _withdraw(
                mainRewardsToken,
                mainSyrupToken,
                Contract30D,
                _id
            );
        } else if (peoples[_id].contractID == 4) {
            _withdraw(
                mainRewardsToken,
                mainSyrupToken,
                Contract90D,
                _id
            );
        } else if (peoples[_id].contractID == 5) {
            _withdraw(
                mainRewardsToken,
                mainSyrupToken,
                Contract180D,
                _id
            );
        } else {
            _withdraw(
                mainRewardsToken,
                mainSyrupToken,
                Contract360D,
                _id
            );
        }
        
        peoples[_id].balanceAmount = 0;
    }

    function _harvestRewards(
        IBEP20 fromRewardToken,
        uint256 _rewardAmount,
        uint _id
    ) private {
        uint256 feeAmount = _rewardAmount.mul(HarvestFees).div(100).div(100);
        fromRewardToken.safeTransfer(DeployerWalletAsdress, feeAmount);
        fromRewardToken.safeTransfer(address(msg.sender), _rewardAmount.sub(feeAmount));
        peoples[_id].havestBalance = peoples[_id].havestBalance.add(_rewardAmount);
    }

    function harvestRewards(uint _id) public nonReentrant {
        require(peoples[_id].addr == msg.sender, "You do not own this id");
        require(peoples[_id].balanceAmount > 0, "Already withdraw token");
        uint256 rewards;
        if (peoples[_id].blockEnd > block.number) {
            rewards =
            (block.number.sub(peoples[_id].blockStart)).mul(peoples[_id].rewardPerBlock);
        } else {
            rewards =
            peoples[_id].blockEnd.sub(peoples[_id].blockStart).mul(peoples[_id].rewardPerBlock);
        }
        _harvestRewards(mainRewardsToken, rewards, _id);
        if (block.number > peoples[_id].blockEnd) {
          peoples[_id].blockStart =  peoples[_id].blockEnd;
        } else {
          peoples[_id].blockStart = block.number;
        }
    }

    function currentExtraRewardSum() external view returns (uint256) {
        uint256 sumExtra;
        for (uint i = 0; i < candidateCount; i++) {
              Pool storage people = peoples[i];
                if (people.addr == msg.sender) {
                    sumExtra = sumExtra.add(people.extraRewards);
                }
         }
        return sumExtra;
    }

    function currentRewardByID(uint256 _id) external view returns (uint256) {
        uint256 rewardAmount;
        if (peoples[_id].balanceAmount == 0) {
            return 0;
        }
        if (peoples[_id].blockEnd > block.number) {
            rewardAmount = (block.number.sub(peoples[_id].blockStart)).mul(peoples[_id].rewardPerBlock);
        }else {
            rewardAmount = (peoples[_id].blockEnd.sub(peoples[_id].blockStart)).mul(peoples[_id].rewardPerBlock);
        }
        return rewardAmount;
    }
    
    function currentExtraRewardByID(uint256 _id) external view returns (uint256) {
        return peoples[_id].extraRewards;
    }
    
    function emergencyUpdatePoolPackagePercent(
        uint _Contract1D, 
        uint _Contract7D,
        uint _Contract30D,
        uint _Contract90D,
        uint _Contract180D,
        uint _Contract360D
    ) public onlyOwner{
        Contract1D = _Contract1D;
        Contract7D = _Contract7D;
        Contract30D = _Contract30D;
        Contract90D = _Contract90D;
        Contract180D = _Contract180D;
        Contract360D = _Contract360D;
    }
    
    function emergencyUpdatePoolEstimateTotalBlock(
        uint _TotalBlock1D, 
        uint _TotalBlock7D,
        uint _TotalBlock30D,
        uint _TotalBlock90D,
        uint _TotalBlock180D,
        uint _TotalBlock360D
    ) public onlyOwner{
         TotalBlock1D = _TotalBlock1D;
         TotalBlock7D = _TotalBlock7D;
         TotalBlock30D = _TotalBlock30D;
         TotalBlock90D = _TotalBlock90D;
         TotalBlock180D = _TotalBlock180D;
         TotalBlock360D = _TotalBlock360D;
    }
    
    function emergencyUpdatePoolMinimumAmount(
         uint _minimumAmount
    ) public onlyOwner{
        AtLeastAmount = _minimumAmount;
    }
    
    function emergencyUpdatePoolDevAddress(
         address _developerAddress
    ) public onlyOwner{
        DeployerWalletAsdress = _developerAddress;
    }
    
    function emergencyUpdatePoolAPR(
        uint _Contract1D,
        uint _Contract7D,
        uint _Contract30D,
        uint _Contract90D,
        uint _Contract180D,
        uint _Contract360D,
        uint _TotalBlock1D,
        uint _TotalBlock7D,
        uint _TotalBlock30D,
        uint _TotalBlock90D,
        uint _TotalBlock180D,
        uint _TotalBlock360D 
        ) public onlyOwner {
            Contract1D = _Contract1D;
            Contract7D = _Contract7D;
            Contract30D = _Contract30D;
            Contract90D = _Contract90D;
            Contract180D = _Contract180D;
            Contract360D = _Contract360D;
            TotalBlock1D = _TotalBlock1D;
            TotalBlock7D = _TotalBlock7D;
            TotalBlock30D = _TotalBlock30D;
            TotalBlock90D = _TotalBlock90D;
            TotalBlock180D = _TotalBlock180D;
            TotalBlock360D = _TotalBlock360D;
    }
    
    function emergencyUpdatePoolFee(
        uint _StakeFees,
        uint _PenaltyFees,
        uint _AdditionalDeployerToken,
        uint _HarvestFees
        ) public onlyOwner {
         StakeFees =  _StakeFees;
         PenaltyFees =  _PenaltyFees;
         AdditionalDeployerToken  = _AdditionalDeployerToken;
         HarvestFees =  _HarvestFees;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IBEP20","name":"_rewardToken","type":"address"},{"internalType":"contract IBEP20","name":"_syrupToken","type":"address"},{"internalType":"address","name":"_adaptorAddress","type":"address"},{"internalType":"string","name":"_poolName","type":"string"}],"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_candidateId","type":"uint256"}],"name":"votedEvent","type":"event"},{"inputs":[],"name":"AdditionalDeployerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AtLeastAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Contract180D","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Contract1D","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Contract30D","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Contract360D","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Contract7D","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Contract90D","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DeployerWalletAsdress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HarvestFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PenaltyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"StakeFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalBlock180D","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalBlock1D","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalBlock30D","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalBlock360D","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalBlock7D","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalBlock90D","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"candidateCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"currentExtraRewardByID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentExtraRewardSum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"currentRewardByID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"_contract","type":"int256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Contract1D","type":"uint256"},{"internalType":"uint256","name":"_Contract7D","type":"uint256"},{"internalType":"uint256","name":"_Contract30D","type":"uint256"},{"internalType":"uint256","name":"_Contract90D","type":"uint256"},{"internalType":"uint256","name":"_Contract180D","type":"uint256"},{"internalType":"uint256","name":"_Contract360D","type":"uint256"},{"internalType":"uint256","name":"_TotalBlock1D","type":"uint256"},{"internalType":"uint256","name":"_TotalBlock7D","type":"uint256"},{"internalType":"uint256","name":"_TotalBlock30D","type":"uint256"},{"internalType":"uint256","name":"_TotalBlock90D","type":"uint256"},{"internalType":"uint256","name":"_TotalBlock180D","type":"uint256"},{"internalType":"uint256","name":"_TotalBlock360D","type":"uint256"}],"name":"emergencyUpdatePoolAPR","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_developerAddress","type":"address"}],"name":"emergencyUpdatePoolDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_TotalBlock1D","type":"uint256"},{"internalType":"uint256","name":"_TotalBlock7D","type":"uint256"},{"internalType":"uint256","name":"_TotalBlock30D","type":"uint256"},{"internalType":"uint256","name":"_TotalBlock90D","type":"uint256"},{"internalType":"uint256","name":"_TotalBlock180D","type":"uint256"},{"internalType":"uint256","name":"_TotalBlock360D","type":"uint256"}],"name":"emergencyUpdatePoolEstimateTotalBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_StakeFees","type":"uint256"},{"internalType":"uint256","name":"_PenaltyFees","type":"uint256"},{"internalType":"uint256","name":"_AdditionalDeployerToken","type":"uint256"},{"internalType":"uint256","name":"_HarvestFees","type":"uint256"}],"name":"emergencyUpdatePoolFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumAmount","type":"uint256"}],"name":"emergencyUpdatePoolMinimumAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Contract1D","type":"uint256"},{"internalType":"uint256","name":"_Contract7D","type":"uint256"},{"internalType":"uint256","name":"_Contract30D","type":"uint256"},{"internalType":"uint256","name":"_Contract90D","type":"uint256"},{"internalType":"uint256","name":"_Contract180D","type":"uint256"},{"internalType":"uint256","name":"_Contract360D","type":"uint256"}],"name":"emergencyUpdatePoolPackagePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"extraRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_candidateId","type":"uint256"}],"name":"get","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"int256","name":"contractID","type":"int256"},{"internalType":"uint256","name":"blockStart","type":"uint256"},{"internalType":"uint256","name":"blockEnd","type":"uint256"},{"internalType":"uint256","name":"depositAmount","type":"uint256"},{"internalType":"uint256","name":"balanceAmount","type":"uint256"},{"internalType":"uint256","name":"havestBalance","type":"uint256"},{"internalType":"uint256","name":"currentExtraReward","type":"uint256"},{"internalType":"uint256","name":"packagePercent","type":"uint256"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"extraRewards","type":"uint256"},{"internalType":"uint256","name":"prepareRewards","type":"uint256"},{"internalType":"uint256","name":"rewardPerBlock","type":"uint256"}],"internalType":"struct Pool.Pool","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPeople","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getPeoples","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"int256","name":"contractID","type":"int256"},{"internalType":"uint256","name":"blockStart","type":"uint256"},{"internalType":"uint256","name":"blockEnd","type":"uint256"},{"internalType":"uint256","name":"depositAmount","type":"uint256"},{"internalType":"uint256","name":"balanceAmount","type":"uint256"},{"internalType":"uint256","name":"havestBalance","type":"uint256"},{"internalType":"uint256","name":"currentExtraReward","type":"uint256"},{"internalType":"uint256","name":"packagePercent","type":"uint256"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"extraRewards","type":"uint256"},{"internalType":"uint256","name":"prepareRewards","type":"uint256"},{"internalType":"uint256","name":"rewardPerBlock","type":"uint256"}],"internalType":"struct Pool.Pool[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"harvestRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mainRewardsToken","outputs":[{"internalType":"contract IBEP20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainSyrupToken","outputs":[{"internalType":"contract IBEP20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"peoples","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"int256","name":"contractID","type":"int256"},{"internalType":"uint256","name":"blockStart","type":"uint256"},{"internalType":"uint256","name":"blockEnd","type":"uint256"},{"internalType":"uint256","name":"depositAmount","type":"uint256"},{"internalType":"uint256","name":"balanceAmount","type":"uint256"},{"internalType":"uint256","name":"havestBalance","type":"uint256"},{"internalType":"uint256","name":"currentExtraReward","type":"uint256"},{"internalType":"uint256","name":"packagePercent","type":"uint256"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"extraRewards","type":"uint256"},{"internalType":"uint256","name":"prepareRewards","type":"uint256"},{"internalType":"uint256","name":"rewardPerBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolBusdList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"poolbusd","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"int256","name":"contractID","type":"int256"},{"internalType":"uint256","name":"blockStart","type":"uint256"},{"internalType":"uint256","name":"blockEnd","type":"uint256"},{"internalType":"uint256","name":"depositAmount","type":"uint256"},{"internalType":"uint256","name":"balanceAmount","type":"uint256"},{"internalType":"uint256","name":"havestBalance","type":"uint256"},{"internalType":"uint256","name":"currentExtraReward","type":"uint256"},{"internalType":"uint256","name":"packagePercent","type":"uint256"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"extraRewards","type":"uint256"},{"internalType":"uint256","name":"prepareRewards","type":"uint256"},{"internalType":"uint256","name":"rewardPerBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPerBlock","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":[],"name":"unHarvest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051620029873803806200298783398101604081905262000034916200023f565b6000620000406200019f565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180556000600955600c80546001600160a01b038086166001600160a01b031992831617909255600b8054928716928216929092179091556025600d55610133600e556105cf600f556112b4601055612a3060115561697860125561708060135562031380601455620d2f0060155562278d00601655624f1a00601755629e340060185568056bc75e2d63100000601a556019805490911673cfe0b919c10b1abaf68e2b99b296939198bc035817905580516200015090600a906020840190620001a3565b5050610172601b55610302601c5560fa601e556102bc601d55601f80546001600160a01b03199081166001600160a01b03938416179182905560208054929093169116179055506200035d9050565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001e657805160ff191683800117855562000216565b8280016001018555821562000216579182015b8281111562000216578251825591602001919060010190620001f9565b506200022492915062000228565b5090565b5b8082111562000224576000815560010162000229565b6000806000806080858703121562000255578384fd5b8451620002628162000344565b80945050602080860151620002778162000344565b60408701519094506200028a8162000344565b60608701519093506001600160401b0380821115620002a7578384fd5b818801915088601f830112620002bb578384fd5b815181811115620002ca578485fd5b604051601f8201601f1916810185018381118282101715620002ea578687fd5b60405281815283820185018b101562000301578586fd5b8592505b8183101562000324578383018501518184018601529184019162000305565b818311156200033557858583830101525b979a9699509497505050505050565b6001600160a01b03811681146200035a57600080fd5b50565b61261a806200036d6000396000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c80638d8b6a631161015c578063c68b98ba116100ce578063e4dda60311610087578063e4dda603146104ce578063f2a22a6b146104e1578063f2fde38b146104e9578063f3466dfa146104fc578063f360e8ea14610511578063fada387c146105245761028a565b8063c68b98ba1461047d578063c6f48d1314610485578063cff76a371461048d578063d44e3848146104a0578063dbfc6b20146104b3578063e21c81d3146104c65761028a565b8063a095bfb311610120578063a095bfb31461041f578063a30099b114610432578063a9a981a31461043a578063aaf4796714610442578063b8352e3f14610462578063b93ad2931461046a5761028a565b80638d8b6a63146103df5780638da5cb5b146103e75780639507d39a146103ef578063953856741461040f578063a093345f146104175761028a565b806350ca39681161020057806372081710116101b957806372081710146103975780637601b77c146103aa5780637bef2ad2146103bf5780637cea0016146103c75780637cf2585d146103cf5780638ae39cac146103d75761028a565b806350ca39681461035157806352f1adef1461035957806357126d0d1461036c578063605830231461037f578063709cf9cf14610387578063715018a61461038f5761028a565b80632e1a7d4d116102525780632e1a7d4d146102fe578063304aea9a1461031157806339de3f84146103195780633d70d66d146103215780634322d3b3146103345780634f995d081461033c5761028a565b8063053b11a31461028f5780630a172c76146102ad5780631238faa4146102c25780631f1094e7146102ca578063210fdae3146102f6575b600080fd5b61029761052c565b6040516102a4919061251c565b60405180910390f35b6102c06102bb366004611fdd565b610532565b005b61029761058d565b6102dd6102d8366004611f94565b610593565b6040516102a49d9c9b9a99989796959493929190612544565b610297610604565b6102c061030c366004611f94565b61060a565b6102976107fe565b610297610804565b61029761032f366004611f94565b61080a565b6102976108b2565b6103446108b8565b6040516102a491906121a0565b610297610962565b6102c0610367366004611f94565b610968565b6102c061037a366004611f94565b6109a2565b610297610b15565b610297610b1b565b6102c0610b21565b6102c06103a5366004611fdd565b610ba0565b6103b2610bf2565b6040516102a4919061214f565b610297610c01565b610297610c07565b610297610c56565b610297610c5c565b610297610c62565b6103b2610c68565b6104026103fd366004611f94565b610c77565b6040516102a4919061250d565b610297610d2c565b610297610d32565b6102c061042d36600461201f565b610d38565b610297610da5565b610297610dab565b610455610450366004611f2c565b610db1565b6040516102a491906121ed565b610297610efe565b6102c0610478366004611f2c565b610f04565b610297610f5b565b6103b2610f61565b6102dd61049b366004611f2c565b610f70565b6102976104ae366004611f94565b610fe9565b6102c06104c1366004611f73565b610ffe565b610297611197565b6103b26104dc366004611f94565b61119d565b6103b26111c4565b6102c06104f7366004611f2c565b6111d3565b610504611214565b6040516102a49190612230565b6102c061051f366004611fac565b6112a2565b6102976112eb565b600f5481565b61053a6112f1565b6000546001600160a01b039081169116146105705760405162461bcd60e51b81526004016105679061246a565b60405180910390fd5b600d95909555600e93909355600f91909155601055601155601255565b60145481565b600860208190526000918252604090912080546001820154600283015460038401546004850154600586015460068701546007880154988801546009890154600a8a0154600b8b0154600c909b0154999b989a979996989597949693959492936001600160a01b039092169290918d565b60185481565b6002600154141561062d5760405162461bcd60e51b8152600401610567906124d6565b60026001556000818152600860205260409020600901546001600160a01b0316331461066b5760405162461bcd60e51b8152600401610567906122f3565b6000818152600860205260409020600501546106995760405162461bcd60e51b8152600401610567906123b8565b600081815260086020526040902060019081015414156106d957600b54600c54600d546106d4926001600160a01b03908116921690846112f5565b6107e6565b6000818152600860205260409020600101546002141561071457600b54600c54600e546106d4926001600160a01b03908116921690846112f5565b6000818152600860205260409020600101546003141561074f57600b54600c54600f546106d4926001600160a01b03908116921690846112f5565b6000818152600860205260409020600101546004141561078a57600b54600c546010546106d4926001600160a01b03908116921690846112f5565b600081815260086020526040902060010154600514156107c557600b54600c546011546106d4926001600160a01b03908116921690846112f5565b600b54600c546012546107e6926001600160a01b03908116921690846112f5565b60009081526008602052604081206005015560018055565b60165481565b60115481565b600081815260086020526040812060050154819061082c5760009150506108ad565b60008381526008602052604090206003015443101561087b576000838152600860205260409020600c810154600290910154610874919061086e90439061171c565b90611767565b90506108aa565b6000838152600860205260409020600c81015460028201546003909201546108a79261086e919061171c565b90505b90505b919050565b60155481565b60608060095467ffffffffffffffff811180156108d457600080fd5b506040519080825280602002602001820160405280156108fe578160200160208202803683370190505b50905060005b60095481101561095c576000818152600860205260409020600981015483516001600160a01b039091169084908490811061093b57fe5b6001600160a01b039092166020928302919091019091015250600101610904565b50905090565b60125481565b6109706112f1565b6000546001600160a01b0390811691161461099d5760405162461bcd60e51b81526004016105679061246a565b601a55565b600260015414156109c55760405162461bcd60e51b8152600401610567906124d6565b60026001556000818152600860205260409020600901546001600160a01b03163314610a035760405162461bcd60e51b8152600401610567906122f3565b600081815260086020526040902060050154610a315760405162461bcd60e51b81526004016105679061235a565b600081815260086020526040812060030154431015610a7a576000828152600860205260409020600c810154600290910154610a73919061086e90439061171c565b9050610aa9565b6000828152600860205260409020600c8101546002820154600390920154610aa69261086e919061171c565b90505b600b54610ac0906001600160a01b031682846117a1565b600082815260086020526040902060030154431115610af75760008281526008602052604090206003810154600290910155610b0d565b6000828152600860205260409020436002909101555b505060018055565b601d5481565b60135481565b610b296112f1565b6000546001600160a01b03908116911614610b565760405162461bcd60e51b81526004016105679061246a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610ba86112f1565b6000546001600160a01b03908116911614610bd55760405162461bcd60e51b81526004016105679061246a565b601395909555601493909355601591909155601655601755601855565b600c546001600160a01b031681565b601c5481565b60008060005b60095481101561095c57600081815260086020526040902060098101546001600160a01b0316331415610c4d57600a810154610c4a908490611835565b92505b50600101610c0d565b601a5481565b60025481565b601e5481565b6000546001600160a01b031690565b610c7f611ebb565b5060009081526008602081815260409283902083516101a081018552815481526001820154928101929092526002810154938201939093526003830154606082015260048301546080820152600583015460a0820152600683015460c0820152600783015460e08201529082015461010082015260098201546001600160a01b0316610120820152600a820154610140820152600b820154610160820152600c9091015461018082015290565b60175481565b60105481565b610d406112f1565b6000546001600160a01b03908116911614610d6d5760405162461bcd60e51b81526004016105679061246a565b600d9b909b55600e99909955600f97909755601095909555601193909355601291909155601355601455601555601655601755601855565b601b5481565b60095481565b60608060095467ffffffffffffffff81118015610dcd57600080fd5b50604051908082528060200260200182016040528015610e0757816020015b610df4611ebb565b815260200190600190039081610dec5790505b50905060005b600954811015610ef757600081815260086020526040902060098101546001600160a01b0386811691161415610eee57604080516101a08101825282548152600183015460208201526002830154918101919091526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e0820152600882015461010082015260098201546001600160a01b0316610120820152600a820154610140820152600b820154610160820152600c8201546101808201528351849084908110610ee257fe5b60200260200101819052505b50600101610e0d565b5092915050565b60055481565b610f0c6112f1565b6000546001600160a01b03908116911614610f395760405162461bcd60e51b81526004016105679061246a565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b600d5481565b600b546001600160a01b031681565b60066020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080154908060090160009054906101000a90046001600160a01b03169080600a01549080600b01549080600c015490508d565b6000908152600860205260409020600a015490565b600260015414156110215760405162461bcd60e51b8152600401610567906124d6565b600260019081558214806110355750816002145b806110405750816003145b8061104b5750816004145b806110565750816005145b806110615750816006145b61107d5760405162461bcd60e51b81526004016105679061238a565b601a5481101561109f5760405162461bcd60e51b8152600401610567906123fa565b81600114156110ce57600d54601354600c546110c99291339185906001600160a01b03168761185a565b610b0d565b81600214156110f857600e54601454600c546110c99291339185906001600160a01b03168761185a565b816003141561112257600f54601554600c546110c99291339185906001600160a01b03168761185a565b816004141561114c57601054601654600c546110c99291339185906001600160a01b03168761185a565b816005141561117657601154601754600c546110c99291339185906001600160a01b03168761185a565b601254601854600c54610b0d9291339185906001600160a01b03168761185a565b60045481565b600781815481106111aa57fe5b6000918252602090912001546001600160a01b0316905081565b6019546001600160a01b031681565b6111db6112f1565b6000546001600160a01b039081169116146112085760405162461bcd60e51b81526004016105679061246a565b61121181611a31565b50565b600a805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561129a5780601f1061126f5761010080835404028352916020019161129a565b820191906000526020600020905b81548152906001019060200180831161127d57829003601f168201915b505050505081565b6112aa6112f1565b6000546001600160a01b039081169116146112d75760405162461bcd60e51b81526004016105679061246a565b601b93909355601c91909155601d55601e55565b600e5481565b3390565b60008181526008602052604090206003015443101561152e57600061134b60646113456064611345601c54600860008981526020019081526020016000206005015461176790919063ffffffff16565b90611ab2565b601954909150611368906001600160a01b03868116911683611af4565b600082815260086020526040902060050154611384908261171c565b60008381526008602052604090206005018190556113ae906001600160a01b038616903390611af4565b6000828152600860205260408120600c8101546002909101546113d7919061086e90439061171c565b60008481526008602052604081206006810154600b90910154929350909161140a9184916114049161171c565b9061171c565b9050611455601960009054906101000a90046001600160a01b031661144460646113456064611345601e548961176790919063ffffffff16565b6001600160a01b038a169190611af4565b6114823361144461147b60646113456064611345601e548a61176790919063ffffffff16565b859061171c565b600084815260086020526040902043600290910155601f546114b1906001600160a01b03898116911683611af4565b602054604051634099614b60e11b81526001600160a01b0390911690638132c296906114e190849060040161251c565b600060405180830381600087803b1580156114fb57600080fd5b505af115801561150f573d6000803e3d6000fd5b5050506000858152600860205260408120600501555061171692505050565b600081815260086020526040902060050154611556906001600160a01b038516903390611af4565b600081815260086020526040902060050154611572908061171c565b600082815260086020526040812060058101929092556002820154600390920154909114156115a3575060006115c8565b60008281526008602052604090206006810154600b909101546115c59161171c565b90505b601954601e54611603916001600160a01b0316906115f29060649061134590829082908890611767565b6001600160a01b0388169190611af4565b611630336115f261162960646113456064611345601e548961176790919063ffffffff16565b849061171c565b600082815260086020526040812060058101919091556003810154600290910154141561171457601f5460008381526008602052604090206006810154600b9091015461168b926001600160a01b0316916115f2919061171c565b602080546000848152600890925260409091206006810154600b909101546001600160a01b0390921691638132c296916116c5919061171c565b6040518263ffffffff1660e01b81526004016116e1919061251c565b600060405180830381600087803b1580156116fb57600080fd5b505af115801561170f573d6000803e3d6000fd5b505050505b505b50505050565b600061175e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b4f565b90505b92915050565b60008261177657506000611761565b8282028284828161178357fe5b041461175e5760405162461bcd60e51b815260040161056790612429565b60006117c260646113456064611345601e548861176790919063ffffffff16565b6019549091506117df906001600160a01b03868116911683611af4565b6117fe336117ed858461171c565b6001600160a01b0387169190611af4565b60008281526008602052604090206006015461181a9084611835565b60009283526008602052604090922060060191909155505050565b60008282018381101561175e5760405162461bcd60e51b815260040161056790612323565b600061187b60646113456064611345601b548961176790919063ffffffff16565b60195490915061189a906001600160a01b038581169133911684611b7b565b6020546001600160a01b0316636b0c90626118bc606461134581818a8e611767565b60016040518363ffffffff1660e01b81526004016118db9291906125aa565b600060405180830381600087803b1580156118f557600080fd5b505af1158015611909573d6000803e3d6000fd5b50505050600061192c606461134560646113458c8a61176790919063ffffffff16565b602054601d549192506001600160a01b031690634cd7755f9061195b9060649061134590829082908890611767565b6019546040516001600160e01b031960e085901b16815261198c92916001600160a01b031690600190600401612525565b600060405180830381600087803b1580156119a657600080fd5b505af11580156119ba573d6000803e3d6000fd5b506119d6925050506001600160a01b0385163330858903611b7b565b8760006119ea606461134581818b87611767565b90506000611a018961134560648181818e8a611767565b9050611a248643611a12818d611835565b8b898d036000808a3360008c8c611b9c565b5050505050505050505050565b6001600160a01b038116611a575760405162461bcd60e51b8152600401610567906122ad565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600061175e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ce1565b611b4a8363a9059cbb60e01b8484604051602401611b13929190612187565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611d18565b505050565b60008184841115611b735760405162461bcd60e51b81526004016105679190612230565b505050900390565b611716846323b872dd60e01b858585604051602401611b1393929190612163565b604051806101a0016040528060095481526020018d81526020018c81526020018b81526020018a8152602001898152602001888152602001878152602001868152602001856001600160a01b0316815260200184815260200183815260200182815250600860006009548152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015561010082015181600801556101208201518160090160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061014082015181600a015561016082015181600b015561018082015181600c0155905050600960008154809291906001019190505550505050505050505050505050565b60008183611d025760405162461bcd60e51b81526004016105679190612230565b506000838581611d0e57fe5b0495945050505050565b6060611d6d826040518060400160405280602081526020017f5361666542455032303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611da79092919063ffffffff16565b805190915015611b4a5780806020019051810190611d8b9190611f53565b611b4a5760405162461bcd60e51b815260040161056790612263565b6060611db68484600085611dbe565b949350505050565b6060611dc985611e82565b611de55760405162461bcd60e51b81526004016105679061249f565b60006060866001600160a01b03168587604051611e029190612133565b60006040518083038185875af1925050503d8060008114611e3f576040519150601f19603f3d011682016040523d82523d6000602084013e611e44565b606091505b50915091508115611e58579150611db69050565b805115611e685780518082602001fd5b8360405162461bcd60e51b81526004016105679190612230565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611db6575050151592915050565b604051806101a0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b600060208284031215611f3d578081fd5b81356001600160a01b038116811461175e578182fd5b600060208284031215611f64578081fd5b8151801515811461175e578182fd5b60008060408385031215611f85578081fd5b50508035926020909101359150565b600060208284031215611fa5578081fd5b5035919050565b60008060008060808587031215611fc1578182fd5b5050823594602084013594506040840135936060013592509050565b60008060008060008060c08789031215611ff5578182fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806000806000806000806000806000806101808d8f031215612041578586fd5b50508a359c60208c01359c5060408c01359b60608101359b5060808101359a5060a0810135995060c0810135985060e08101359750610100810135965061012081013595506101408101359450610160013592509050565b6001600160a01b03169052565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008082015181840152506101208082015161210f82850182612099565b50506101408181015190830152610160808201519083015261018090810151910152565b600082516121458184602087016125b8565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156121e15783516001600160a01b0316835292840192918401916001016121bc565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156121e15761221c8385516120a6565b928401926101a09290920191600101612209565b600060208252825180602084015261224f8160408501602087016125b8565b601f01601f19169190910160400192915050565b6020808252602a908201527f5361666542455032303a204245503230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b602080825260169082015275165bdd48191bc81b9bdd081bdddb881d1a1a5cc81a5960521b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526016908201527520b63932b0b23c903bb4ba34323930bb903a37b5b2b760511b604082015260600190565b602080825260149082015273636f6e747261637420646f65736e20657869747360601b604082015260600190565b60208082526022908201527f4e6f7420616c6c6f7720746f207472616e73666572207a65726f2062616c616e604082015261636560f01b606082015260800190565b602080825260159082015274416d6f756e7420696e63656564206d696e696d756d60581b604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6101a0810161176182846120a6565b90815260200190565b9283526001600160a01b03919091166020830152604082015260600190565b9c8d5260208d019b909b5260408c019990995260608b019790975260808a019590955260a089019390935260c088019190915260e08701526101008601526001600160a01b03166101208501526101408401526101608301526101808201526101a00190565b918252602082015260400190565b60005b838110156125d35781810151838201526020016125bb565b83811115611716575050600091015256fea2646970667358221220c09860e036c768952484f23d1511337ae5e1b8a3013e58dd9f3157fadb8726cc64736f6c634300060c00330000000000000000000000009f3bcbe48e8b754f331dfc694a894e8e686ac31d000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d5600000000000000000000000026304442cd46cb3cee1a83a48f400ef43a3d0b5c000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000044255534400000000000000000000000000000000000000000000000000000000

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

0000000000000000000000009f3bcbe48e8b754f331dfc694a894e8e686ac31d000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d5600000000000000000000000026304442cd46cb3cee1a83a48f400ef43a3d0b5c000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000044255534400000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _rewardToken (address): 0x9f3bcbe48e8b754f331dfc694a894e8e686ac31d
Arg [1] : _syrupToken (address): 0xe9e7cea3dedca5984780bafc599bd69add087d56
Arg [2] : _adaptorAddress (address): 0x26304442cd46cb3cee1a83a48f400ef43a3d0b5c
Arg [3] : _poolName (string): BUSD

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000009f3bcbe48e8b754f331dfc694a894e8e686ac31d
Arg [1] : 000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56
Arg [2] : 00000000000000000000000026304442cd46cb3cee1a83a48f400ef43a3d0b5c
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 4255534400000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

38304:16398:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39350:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52060:465;;;;;;:::i;:::-;;:::i;:::-;;39504:24;;;:::i;39063:37::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;39632:26::-;;;:::i;48180:1526::-;;;;;;:::i;:::-;;:::i;39567:25::-;;;:::i;39410:24::-;;;:::i;51383:525::-;;;;;;:::i;:::-;;:::i;39535:25::-;;;:::i;41756:289::-;;;:::i;:::-;;;;;;;:::i;39441:24::-;;;:::i;53060:145::-;;;;;;:::i;:::-;;:::i;50181:810::-;;;;;;:::i;:::-;;:::i;39798:35::-;;;:::i;39472:24::-;;;:::i;20521:140::-;;;:::i;52537:511::-;;;;;;:::i;:::-;;:::i;39256:28::-;;;:::i;:::-;;;;;;;:::i;39768:23::-;;;:::i;50999:376::-;;;:::i;39708:25::-;;;:::i;38851:29::-;;;:::i;39840:23::-;;;:::i;19879:79::-;;;:::i;41646:106::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;39599:26::-;;;:::i;39380:23::-;;;:::i;53388:933::-;;;;;;:::i;:::-;;:::i;39740:21::-;;;:::i;39157:26::-;;;:::i;42053:372::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;38949:24::-;;;:::i;53217:159::-;;;;;;:::i;:::-;;:::i;39291:22::-;;;:::i;39219:30::-;;;:::i;38980:40::-;;;;;;:::i;:::-;;:::i;51920:128::-;;;;;;:::i;:::-;;:::i;43838:1904::-;;;;;;:::i;:::-;;:::i;38915:27::-;;;:::i;39027:29::-;;;;;;:::i;:::-;;:::i;39665:36::-;;;:::i;20816:109::-;;;;;;:::i;:::-;;:::i;39190:22::-;;;:::i;:::-;;;;;;;:::i;54333:366::-;;;;;;:::i;:::-;;:::i;39321:22::-;;;:::i;39350:23::-;;;;:::o;52060:465::-;20101:12;:10;:12::i;:::-;20091:6;;-1:-1:-1;;;;;20091:6:0;;;:22;;;20083:67;;;;-1:-1:-1;;;20083:67:0;;;;;;;:::i;:::-;;;;;;;;;52306:10:::1;:24:::0;;;;52341:10:::1;:24:::0;;;;52376:11:::1;:26:::0;;;;52413:11:::1;:26:::0;52450:12:::1;:28:::0;52489:12:::1;:28:::0;52060:465::o;39504:24::-;;;;:::o;39063:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39063:37:0;;;;;;;:::o;39632:26::-;;;;:::o;48180:1526::-;33114:1;33647:7;;:19;;33639:63;;;;-1:-1:-1;;;33639:63:0;;;;;;;:::i;:::-;33114:1;33715:7;:18;48266:12:::1;::::0;;;:7:::1;:12;::::0;;;;:17:::1;;::::0;-1:-1:-1;;;;;48266:17:0::1;48287:10;48266:31;48258:66;;;;-1:-1:-1::0;;;48258:66:0::1;;;;;;;:::i;:::-;48372:1;48343:12:::0;;;:7:::1;:12;::::0;;;;:26:::1;;::::0;48335:77:::1;;;;-1:-1:-1::0;;;48335:77:0::1;;;;;;;:::i;:::-;48427:12;::::0;;;:7:::1;:12;::::0;;;;:23:::1;::::0;;::::1;::::0;:28:::1;48423:1225;;;48500:16;::::0;48535:14:::1;::::0;48568:10:::1;::::0;48472:142:::1;::::0;-1:-1:-1;;;;;48500:16:0;;::::1;::::0;48535:14:::1;::::0;48596:3;48472:9:::1;:142::i;:::-;48423:1225;;;48636:12;::::0;;;:7:::1;:12;::::0;;;;:23:::1;;::::0;48663:1:::1;48636:28;48632:1016;;;48709:16;::::0;48744:14:::1;::::0;48777:10:::1;::::0;48681:143:::1;::::0;-1:-1:-1;;;;;48709:16:0;;::::1;::::0;48744:14:::1;::::0;48806:3;48681:9:::1;:143::i;48632:1016::-;48846:12;::::0;;;:7:::1;:12;::::0;;;;:23:::1;;::::0;48873:1:::1;48846:28;48842:806;;;48919:16;::::0;48954:14:::1;::::0;48987:11:::1;::::0;48891:144:::1;::::0;-1:-1:-1;;;;;48919:16:0;;::::1;::::0;48954:14:::1;::::0;49017:3;48891:9:::1;:144::i;48842:806::-;49057:12;::::0;;;:7:::1;:12;::::0;;;;:23:::1;;::::0;49084:1:::1;49057:28;49053:595;;;49130:16;::::0;49165:14:::1;::::0;49198:11:::1;::::0;49102:144:::1;::::0;-1:-1:-1;;;;;49130:16:0;;::::1;::::0;49165:14:::1;::::0;49228:3;49102:9:::1;:144::i;49053:595::-;49268:12;::::0;;;:7:::1;:12;::::0;;;;:23:::1;;::::0;49295:1:::1;49268:28;49264:384;;;49341:16;::::0;49376:14:::1;::::0;49409:12:::1;::::0;49313:145:::1;::::0;-1:-1:-1;;;;;49341:16:0;;::::1;::::0;49376:14:::1;::::0;49440:3;49313:9:::1;:145::i;49264:384::-;49519:16;::::0;49554:14:::1;::::0;49587:12:::1;::::0;49491:145:::1;::::0;-1:-1:-1;;;;;49519:16:0;;::::1;::::0;49554:14:::1;::::0;49618:3;49491:9:::1;:145::i;:::-;49697:1;49668:12:::0;;;:7:::1;:12;::::0;;;;:26:::1;;:30:::0;33070:1;33760:22;;48180:1526::o;39567:25::-;;;;:::o;39410:24::-;;;;:::o;51383:525::-;51446:7;51501:12;;;:7;:12;;;;;:26;;;51446:7;;51497:72;;51556:1;51549:8;;;;;51497:72;51583:12;;;;:7;:12;;;;;:21;;;51607:12;-1:-1:-1;51579:292:0;;;51699:12;;;;:7;:12;;;;;:27;;;;51669:23;;;;;51651:76;;51699:27;51652:41;;:12;;:16;:41::i;:::-;51651:47;;:76::i;:::-;51636:91;;51579:292;;;51831:12;;;;:7;:12;;;;;:27;;;;51801:23;;;;51775:21;;;;;51774:85;;51775:50;;:21;:25;:50::i;51774:85::-;51759:100;;51579:292;51888:12;-1:-1:-1;51383:525:0;;;;:::o;39535:25::-;;;;:::o;41756:289::-;41799:16;41825:21;41863:14;;41849:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41849:29:0;;41825:53;;41892:6;41887:131;41908:14;;41904:1;:18;41887:131;;;41942:19;41964:10;;;:7;:10;;;;;41997:11;;;;41987:7;;-1:-1:-1;;;;;41997:11:0;;;;41987:4;;41972:1;;41987:7;;;;;;-1:-1:-1;;;;;41987:21:0;;;:7;;;;;;;;;;;:21;-1:-1:-1;41924:3:0;;41887:131;;;-1:-1:-1;42034:4:0;-1:-1:-1;41756:289:0;:::o;39441:24::-;;;;:::o;53060:145::-;20101:12;:10;:12::i;:::-;20091:6;;-1:-1:-1;;;;;20091:6:0;;;:22;;;20083:67;;;;-1:-1:-1;;;20083:67:0;;;;;;;:::i;:::-;53167:13:::1;:30:::0;53060:145::o;50181:810::-;33114:1;33647:7;;:19;;33639:63;;;;-1:-1:-1;;;33639:63:0;;;;;;;:::i;:::-;33114:1;33715:7;:18;50254:12:::1;::::0;;;:7:::1;:12;::::0;;;;:17:::1;;::::0;-1:-1:-1;;;;;50254:17:0::1;50275:10;50254:31;50246:66;;;;-1:-1:-1::0;;;50246:66:0::1;;;;;;;:::i;:::-;50360:1;50331:12:::0;;;:7:::1;:12;::::0;;;;:26:::1;;::::0;50323:65:::1;;;;-1:-1:-1::0;;;50323:65:0::1;;;;;;;:::i;:::-;50399:15;50429:12:::0;;;:7:::1;:12;::::0;;;;:21:::1;;::::0;50453:12:::1;-1:-1:-1::0;50425:307:0::1;;;50553:12;::::0;;;:7:::1;:12;::::0;;;;:27:::1;::::0;::::1;::::0;50523:23:::1;::::0;;::::1;::::0;50505:76:::1;::::0;50553:27;50506:41:::1;::::0;:12:::1;::::0;:16:::1;:41::i;50505:76::-;50482:99;;50425:307;;;50692:12;::::0;;;:7:::1;:12;::::0;;;;:27:::1;::::0;::::1;::::0;50663:23:::1;::::0;::::1;::::0;50637:21:::1;::::0;;::::1;::::0;:83:::1;::::0;:50:::1;::::0;:21;:25:::1;:50::i;:83::-;50614:106;;50425:307;50758:16;::::0;50742:47:::1;::::0;-1:-1:-1;;;;;50758:16:0::1;50776:7:::0;50785:3;50742:15:::1;:47::i;:::-;50819:12;::::0;;;:7:::1;:12;::::0;;;;:21:::1;;::::0;50804:12:::1;:36;50800:184;;;50882:12;::::0;;;:7:::1;:12;::::0;;;;:21:::1;::::0;::::1;::::0;50855:23:::1;::::0;;::::1;:48:::0;50800:184:::1;;;50934:12;::::0;;;:7:::1;:12;::::0;;;;50960::::1;50934:23;::::0;;::::1;:38:::0;50800:184:::1;-1:-1:-1::0;;33070:1:0;33760:22;;50181:810::o;39798:35::-;;;;:::o;39472:24::-;;;;:::o;20521:140::-;20101:12;:10;:12::i;:::-;20091:6;;-1:-1:-1;;;;;20091:6:0;;;:22;;;20083:67;;;;-1:-1:-1;;;20083:67:0;;;;;;;:::i;:::-;20620:1:::1;20604:6:::0;;20583:40:::1;::::0;-1:-1:-1;;;;;20604:6:0;;::::1;::::0;20583:40:::1;::::0;20620:1;;20583:40:::1;20651:1;20634:19:::0;;-1:-1:-1;;;;;;20634:19:0::1;::::0;;20521:140::o;52537:511::-;20101:12;:10;:12::i;:::-;20091:6;;-1:-1:-1;;;;;20091:6:0;;;:22;;;20083:67;;;;-1:-1:-1;;;20083:67:0;;;;;;;:::i;:::-;52800:12:::1;:28:::0;;;;52840:12:::1;:28:::0;;;;52880:13:::1;:30:::0;;;;52922:13:::1;:30:::0;52964:14:::1;:32:::0;53008:14:::1;:32:::0;52537:511::o;39256:28::-;;;-1:-1:-1;;;;;39256:28:0;;:::o;39768:23::-;;;;:::o;50999:376::-;51055:7;51075:16;51107:6;51102:240;51123:14;;51119:1;:18;51102:240;;;51161:19;51183:10;;;:7;:10;;;;;51216:11;;;;-1:-1:-1;;;;;51216:11:0;51231:10;51216:25;51212:118;;;51290:19;;;;51277:33;;:8;;:12;:33::i;:::-;51266:44;;51212:118;-1:-1:-1;51139:3:0;;51102:240;;39708:25;;;;:::o;38851:29::-;;;;:::o;39840:23::-;;;;:::o;19879:79::-;19917:7;19944:6;-1:-1:-1;;;;;19944:6:0;19879:79;:::o;41646:106::-;41698:11;;:::i;:::-;-1:-1:-1;41725:21:0;;;;:7;:21;;;;;;;;;41718:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41718:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41646:106::o;39599:26::-;;;;:::o;39380:23::-;;;;:::o;53388:933::-;20101:12;:10;:12::i;:::-;20091:6;;-1:-1:-1;;;;;20091:6:0;;;:22;;;20083:67;;;;-1:-1:-1;;;20083:67:0;;;;;;;:::i;:::-;53812:10:::1;:24:::0;;;;53851:10:::1;:24:::0;;;;53890:11:::1;:26:::0;;;;53931:11:::1;:26:::0;;;;53972:12:::1;:28:::0;;;;54015:12:::1;:28:::0;;;;54058:12:::1;:28:::0;54101:12:::1;:28:::0;54144:13:::1;:30:::0;54189:13:::1;:30:::0;54234:14:::1;:32:::0;54281:14:::1;:32:::0;53388:933::o;39740:21::-;;;;:::o;39157:26::-;;;;:::o;42053:372::-;42112:13;42135:19;42168:14;;42157:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;42135:48;;42197:6;42192:210;42213:14;;42209:1;:18;42192:210;;;42259:19;42281:10;;;:7;:10;;;;;42310:11;;;;-1:-1:-1;;;;;42310:32:0;;;:11;;:32;42306:87;;;42363:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42363:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:5;;:2;;42366:1;;42363:5;;;;;;;;;;;:14;;;;42306:87;-1:-1:-1;42229:3:0;;42192:210;;;-1:-1:-1;42417:2:0;42053:372;-1:-1:-1;;42053:372:0:o;38949:24::-;;;;:::o;53217:159::-;20101:12;:10;:12::i;:::-;20091:6;;-1:-1:-1;;;;;20091:6:0;;;:22;;;20083:67;;;;-1:-1:-1;;;20083:67:0;;;;;;;:::i;:::-;53327:21:::1;:41:::0;;-1:-1:-1;;;;;;53327:41:0::1;-1:-1:-1::0;;;;;53327:41:0;;;::::1;::::0;;;::::1;::::0;;53217:159::o;39291:22::-;;;;:::o;39219:30::-;;;-1:-1:-1;;;;;39219:30:0;;:::o;38980:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;38980:40:0;;;;;;;;;;;;;;;;;;;:::o;51920:128::-;51988:7;52015:12;;;:7;:12;;;;;:25;;;;51920:128::o;43838:1904::-;33114:1;33647:7;;:19;;33639:63;;;;-1:-1:-1;;;33639:63:0;;;;;;;:::i;:::-;33114:1;33715:7;:18;;;43954:14;::::1;::::0;:32:::1;;;43972:9;43985:1;43972:14;43954:32;:50;;;;43990:9;44003:1;43990:14;43954:50;:68;;;;44008:9;44021:1;44008:14;43954:68;:86;;;;44026:9;44039:1;44026:14;43954:86;:104;;;;44044:9;44057:1;44044:14;43954:104;43946:137;;;;-1:-1:-1::0;;;43946:137:0::1;;;;;;;:::i;:::-;44113:13;;44102:7;:24;;44094:58;;;;-1:-1:-1::0;;;44094:58:0::1;;;;;;;:::i;:::-;44167:9;44180:1;44167:14;44163:1572;;;44225:10;::::0;44292:12:::1;::::0;44349:14:::1;::::0;44198:208:::1;::::0;44225:10;44262::::1;::::0;44323:7;;-1:-1:-1;;;;;44349:14:0::1;44382:9:::0;44198:8:::1;:208::i;:::-;44163:1572;;;44428:9;44441:1;44428:14;44424:1311;;;44486:10;::::0;44553:12:::1;::::0;44610:14:::1;::::0;44459:208:::1;::::0;44486:10;44523::::1;::::0;44584:7;;-1:-1:-1;;;;;44610:14:0::1;44643:9:::0;44459:8:::1;:208::i;44424:1311::-;44689:9;44702:1;44689:14;44685:1050;;;44747:11;::::0;44815:13:::1;::::0;44873:14:::1;::::0;44720:228:::1;::::0;44747:11;44785:10:::1;::::0;44847:7;;-1:-1:-1;;;;;44873:14:0::1;44906:9:::0;44720:8:::1;:228::i;44685:1050::-;44970:9;44983:1;44970:14;44966:769;;;45028:11;::::0;45096:13:::1;::::0;45154:14:::1;::::0;45001:210:::1;::::0;45028:11;45066:10:::1;::::0;45128:7;;-1:-1:-1;;;;;45154:14:0::1;45187:9:::0;45001:8:::1;:210::i;44966:769::-;45233:9;45246:1;45233:14;45229:506;;;45291:12;::::0;45360:14:::1;::::0;45419::::1;::::0;45264:214:::1;::::0;45291:12;45330:10:::1;::::0;45393:7;;-1:-1:-1;;;;;45419:14:0::1;45452:9:::0;45264:8:::1;:214::i;45229:506::-;45538:12;::::0;45607:14:::1;::::0;45666::::1;::::0;45511:212:::1;::::0;45538:12;45577:10:::1;::::0;45640:7;;-1:-1:-1;;;;;45666:14:0::1;45699:9:::0;45511:8:::1;:212::i;38915:27::-:0;;;;:::o;39027:29::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;39027:29:0;;-1:-1:-1;39027:29:0;:::o;39665:36::-;;;-1:-1:-1;;;;;39665:36:0;;:::o;20816:109::-;20101:12;:10;:12::i;:::-;20091:6;;-1:-1:-1;;;;;20091:6:0;;;:22;;;20083:67;;;;-1:-1:-1;;;20083:67:0;;;;;;;:::i;:::-;20889:28:::1;20908:8;20889:18;:28::i;:::-;20816:109:::0;:::o;39190:22::-;;;;;;;;;;;;;;;-1:-1:-1;;39190:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;54333:366::-;20101:12;:10;:12::i;:::-;20091:6;;-1:-1:-1;;;;;20091:6:0;;;:22;;;20083:67;;;;-1:-1:-1;;;20083:67:0;;;;;;;:::i;:::-;54527:9:::1;:23:::0;;;;54562:11:::1;:27:::0;;;;54601:23:::1;:51:::0;54664:11:::1;:27:::0;54333:366::o;39321:22::-;;;;:::o;18609:98::-;18689:10;18609:98;:::o;45750:2422::-;45925:12;;;;:7;:12;;;;;:21;;;45949:12;-1:-1:-1;45921:2234:0;;;45978:21;46002:61;46059:3;46002:52;46050:3;46002:43;46033:11;;46002:7;:12;46010:3;46002:12;;;;;;;;;;;:26;;;:30;;:43;;;;:::i;:::-;:47;;:52::i;:61::-;46120:21;;45978:85;;-1:-1:-1;46078:110:0;;-1:-1:-1;;;;;46078:23:0;;;;46120:21;45978:85;46078:23;:110::i;:::-;46232:12;;;;:7;:12;;;;;:26;;;:45;;46263:13;46232:30;:45::i;:::-;46203:12;;;;:7;:12;;;;;:26;;:74;;;46292:73;;-1:-1:-1;;;;;46292:23:0;;;46324:10;;46292:23;:73::i;:::-;46380:18;46447:12;;;:7;:12;;;;;:27;;;;46418:23;;;;;46401:74;;46447:27;46401:41;;:12;;:16;:41::i;:74::-;46490:26;46551:12;;;:7;:12;;;;;:26;;;;46519:27;;;;;46380:95;;-1:-1:-1;46490:26:0;;46519:75;;46380:95;;46519:59;;:31;:59::i;:::-;:63;;:75::i;:::-;46490:104;;46609:98;46638:21;;;;;;;;;-1:-1:-1;;;;;46638:21:0;46661:45;46702:3;46661:36;46693:3;46661:27;46676:11;;46661:10;:14;;:27;;;;:::i;:45::-;-1:-1:-1;;;;;46609:28:0;;;:98;:28;:98::i;:::-;46722:112;46759:10;46772:61;46787:45;46828:3;46787:36;46819:3;46787:27;46802:11;;46787:10;:14;;:27;;;;:::i;:45::-;46772:10;;:14;:61::i;46722:112::-;46849:12;;;;:7;:12;;;;;46875;46849:23;;;;:38;46931:14;;46902:64;;-1:-1:-1;;;;;46902:28:0;;;;46931:14;46947:18;46902:28;:64::i;:::-;46981:2;;:29;;-1:-1:-1;;;46981:29:0;;-1:-1:-1;;;;;46981:2:0;;;;:9;;:29;;46991:18;;46981:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;47072:1:0;47043:12;;;:7;:12;;;;;:26;;:30;-1:-1:-1;45921:2234:0;;-1:-1:-1;;;45921:2234:0;;47150:12;;;;:7;:12;;;;;:26;;;47105:72;;-1:-1:-1;;;;;47105:23:0;;;47137:10;;47105:23;:72::i;:::-;47252:12;;;;:7;:12;;;;;:26;;;47221:58;;47252:26;47221:30;:58::i;:::-;47192:12;;;;:7;:12;;;;;:26;;;:87;;;;47361:23;;;;47335:21;;;;;47192:12;;47335:49;47330:223;;;-1:-1:-1;47421:1:0;47330:223;;;47510:12;;;;:7;:12;;;;;:26;;;;47478:27;;;;;:59;;:31;:59::i;:::-;47462:75;;47330:223;47596:21;;47637:11;;47567:101;;-1:-1:-1;;;;;47596:21:0;;47619:48;;47663:3;;47619:39;;47663:3;;47619:39;;:13;;:17;:30::i;:48::-;-1:-1:-1;;;;;47567:28:0;;;:101;:28;:101::i;:::-;47683:118;47720:10;47733:67;47751:48;47795:3;47751:39;47786:3;47751:30;47769:11;;47751:13;:17;;:30;;;;:::i;:48::-;47733:13;;:17;:67::i;47683:118::-;47845:1;47816:12;;;:7;:12;;;;;:26;;;:30;;;;47892:21;;;;47865:23;;;;;:48;47861:283;;;47963:14;;;48011:12;;;:7;:12;;;;;:26;;;;47979:27;;;;;47934:105;;-1:-1:-1;;;;;47963:14:0;;47979:59;;:27;:31;:59::i;47934:105::-;48058:2;;;;48100:12;;;:7;:12;;;;;;;:26;;;;48068:27;;;;;-1:-1:-1;;;;;48058:2:0;;;;:9;;48068:59;;:27;:31;:59::i;:::-;48058:70;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47861:283;45921:2234;;45750:2422;;;;:::o;1475:136::-;1533:7;1560:43;1564:1;1567;1560:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1553:50;;1475:136;;;;;:::o;2399:250::-;2457:7;2481:6;2477:47;;-1:-1:-1;2511:1:0;2504:8;;2477:47;2548:5;;;2552:1;2548;:5;:1;2572:5;;;;;:10;2564:56;;;;-1:-1:-1;;;2564:56:0;;;;;;;:::i;49714:459::-;49849:17;49869:48;49913:3;49869:39;49904:3;49869:30;49887:11;;49869:13;:17;;:30;;;;:::i;:48::-;49957:21;;49849:68;;-1:-1:-1;49928:62:0;;-1:-1:-1;;;;;49928:28:0;;;;49957:21;49849:68;49928:28;:62::i;:::-;50001:79;50038:10;50051:28;:13;50069:9;50051:17;:28::i;:::-;-1:-1:-1;;;;;50001:28:0;;;:79;:28;:79::i;:::-;50120:12;;;;:7;:12;;;;;:26;;;:45;;50151:13;50120:30;:45::i;:::-;50091:12;;;;:7;:12;;;;;;:26;;:74;;;;-1:-1:-1;;;49714:459:0:o;1011:181::-;1069:7;1101:5;;;1125:6;;;;1117:46;;;;-1:-1:-1;;;1117:46:0;;;;;;;:::i;42439:1391::-;42658:11;42672:40;42708:3;42672:31;42699:3;42672:22;42684:9;;42672:7;:11;;:22;;;;:::i;:40::-;42799:21;;42658:54;;-1:-1:-1;42723:126:0;;-1:-1:-1;;;;;42723:27:0;;;;42773:10;;42799:21;42658:54;42723:27;:126::i;:::-;42860:2;;-1:-1:-1;;;;;42860:2:0;:9;42870:46;42912:3;42870:37;42912:3;42870:37;:7;42882:15;42870:11;:28::i;:46::-;42918:1;42860:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42931:13;42947:46;42989:3;42947:37;42980:3;42947:28;42959:15;42947:7;:11;;:28;;;;:::i;:46::-;43004:2;;43023:23;;42931:62;;-1:-1:-1;;;;;;43004:2:0;;:8;;43013:52;;43061:3;;43013:43;;43061:3;;43013:43;;42931:62;;43013:9;:34::i;:52::-;43067:21;;43004:88;;-1:-1:-1;;;;;;43004:88:0;;;;;;;;;;-1:-1:-1;;;;;43067:21:0;;;;43004:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43103:128:0;;-1:-1:-1;;;;;;;;43103:27:0;;43153:10;43187:4;43207:13;;;43103:27;:128::i;:::-;43260:15;43242;43316:46;43358:3;43316:37;43358:3;43316:37;:7;43260:15;43316:11;:28::i;:46::-;43286:76;-1:-1:-1;43373:22:0;43407:60;43452:14;43408:38;43442:3;43408:38;43442:3;43408:38;:7;43420;43408:11;:20::i;43407:60::-;43373:94;-1:-1:-1;43478:336:0;43502:9;43527:12;43555:32;43527:12;43572:14;43555:16;:32::i;:::-;43603:7;43636:3;43626:7;:13;43655:1;43672;43689:7;43720:10;43747:1;43764:19;43799:14;43478:9;:336::i;:::-;42439:1391;;;;;;;;;;;:::o;21031:266::-;-1:-1:-1;;;;;21119:22:0;;21097:110;;;;-1:-1:-1;;;21097:110:0;;;;;;;:::i;:::-;21244:6;;;21223:38;;-1:-1:-1;;;;;21223:38:0;;;;21244:6;;;21223:38;;;21272:6;:17;;-1:-1:-1;;;;;;21272:17:0;-1:-1:-1;;;;;21272:17:0;;;;;;;;;;21031:266::o;3125:132::-;3183:7;3210:39;3214:1;3217;3210:39;;;;;;;;;;;;;;;;;:3;:39::i;14945:248::-;15062:123;15096:5;15139:23;;;15164:2;15168:5;15116:58;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;15116:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;15116:58:0;-1:-1:-1;;;;;;15116:58:0;;;;;;;;;;15062:19;:123::i;:::-;14945:248;;;:::o;1914:226::-;2034:7;2070:12;2062:6;;;;2054:29;;;;-1:-1:-1;;;2054:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2106:5:0;;;1914:226::o;15201:285::-;15345:133;15379:5;15422:27;;;15451:4;15457:2;15461:5;15399:68;;;;;;;;;;:::i;40943:699::-;41408:199;;;;;;;;41413:14;;41408:199;;;;41429:9;41408:199;;;;41440:11;41408:199;;;;41453:9;41408:199;;;;41464:14;41408:199;;;;41480:14;41408:199;;;;41496:14;41408:199;;;;41512:19;41408:199;;;;41533:15;41408:199;;;;41550:8;-1:-1:-1;;;;;41408:199:0;;;;;41560:13;41408:199;;;;41575:14;41408:199;;;;41591:15;41408:199;;;41382:7;:23;41390:14;;41382:23;;;;;;;;;;;:225;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41382:225:0;;;;;-1:-1:-1;;;;;41382:225:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41618:14;;:16;;;;;;;;;;;;;40943:699;;;;;;;;;;;;:::o;3753:225::-;3873:7;3908:12;3901:5;3893:28;;;;-1:-1:-1;;;3893:28:0;;;;;;;;:::i;:::-;;3932:9;3948:1;3944;:5;;;;;;;3753:225;-1:-1:-1;;;;;3753:225:0:o;17561:446::-;17644:23;17683:118;17729:4;17683:118;;;;;;;;;;;;;;;;;17691:5;-1:-1:-1;;;;;17683:27:0;;;:118;;;;;:::i;:::-;17816:17;;17644:157;;-1:-1:-1;17816:21:0;17812:188;;17891:10;17880:30;;;;;;;;;;;;:::i;:::-;17854:134;;;;-1:-1:-1;;;17854:134:0;;;;;;;:::i;11983:230::-;12120:12;12152:53;12175:6;12183:4;12189:1;12192:12;12152:22;:53::i;:::-;12145:60;11983:230;-1:-1:-1;;;;11983:230:0:o;13604:748::-;13777:12;13810:18;13821:6;13810:10;:18::i;:::-;13802:60;;;;-1:-1:-1;;;13802:60:0;;;;;;;:::i;:::-;13876:12;13890:23;13930:6;-1:-1:-1;;;;;13930:11:0;13949:8;13959:4;13930:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13875:89;;;;13979:7;13975:370;;;14010:10;-1:-1:-1;14003:17:0;;-1:-1:-1;14003:17:0;13975:370;14057:17;;:21;14053:281;;14162:10;14156:17;14223:15;14210:10;14206:2;14202:19;14195:44;14110:148;14305:12;14298:20;;-1:-1:-1;;;14298:20:0;;;;;;;;:::i;9594:352::-;9654:4;9846:20;;9733:66;9895:23;;;;;;:42;;-1:-1:-1;;9922:15:0;;;9887:51;-1:-1:-1;;9594:352:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;549:241::-;;653:2;641:9;632:7;628:23;624:32;621:2;;;-1:-1;;659:12;621:2;72:20;;-1:-1;;;;;30425:54;;31419:35;;31409:2;;-1:-1;;31458:12;797:257;;909:2;897:9;888:7;884:23;880:32;877:2;;;-1:-1;;915:12;877:2;223:6;217:13;31565:5;30259:13;30252:21;31543:5;31540:32;31530:2;;-1:-1;;31576:12;1061:364;;;1181:2;1169:9;1160:7;1156:23;1152:32;1149:2;;;-1:-1;;1187:12;1149:2;-1:-1;;343:20;;;1338:2;1377:22;;;479:20;;-1:-1;1143:282::o;1432:241::-;;1536:2;1524:9;1515:7;1511:23;1507:32;1504:2;;;-1:-1;;1542:12;1504:2;-1:-1;479:20;;1498:175;-1:-1;1498:175::o;1680:617::-;;;;;1835:3;1823:9;1814:7;1810:23;1806:33;1803:2;;;-1:-1;;1842:12;1803:2;-1:-1;;479:20;;;1994:2;2033:22;;479:20;;-1:-1;2102:2;2141:22;;479:20;;2210:2;2249:22;479:20;;-1:-1;1797:500;-1:-1;1797:500::o;2304:869::-;;;;;;;2493:3;2481:9;2472:7;2468:23;2464:33;2461:2;;;-1:-1;;2500:12;2461:2;-1:-1;;479:20;;;2652:2;2691:22;;479:20;;-1:-1;2760:2;2799:22;;479:20;;2868:2;2907:22;;479:20;;-1:-1;2976:3;3016:22;;479:20;;-1:-1;3085:3;3125:22;479:20;;-1:-1;2455:718;-1:-1;2455:718::o;3180:1629::-;;;;;;;;;;;;;3473:3;3461:9;3452:7;3448:23;3444:33;3441:2;;;-1:-1;;3480:12;3441:2;-1:-1;;479:20;;;3632:2;3671:22;;479:20;;-1:-1;3740:2;3779:22;;479:20;;3848:2;3887:22;;479:20;;-1:-1;3956:3;3996:22;;479:20;;-1:-1;4065:3;4105:22;;479:20;;-1:-1;4174:3;4214:22;;479:20;;-1:-1;4283:3;4323:22;;479:20;;-1:-1;4392:3;4432:22;;479:20;;-1:-1;4501:3;4541:22;;479:20;;-1:-1;4610:3;4651:22;;479:20;;-1:-1;4720:3;4761:22;479:20;;-1:-1;3435:1374;-1:-1;3435:1374::o;5270:103::-;-1:-1;;;;;30425:54;5331:37;;5325:48::o;12653:2267::-;12852:16;12846:23;7742:3;7735:36;13023:4;13016:5;13012:16;13006:23;13023:4;13085:3;13081:14;7735:36;13181:4;13174:5;13170:16;13164:23;13181:4;13245:3;13241:14;7735:36;13339:4;13332:5;13328:16;13322:23;13339:4;13403:3;13399:14;7735:36;13502:4;13495:5;13491:16;13485:23;13502:4;13566:3;13562:14;7735:36;13665:4;13658:5;13654:16;13648:23;13665:4;13729:3;13725:14;7735:36;13828:4;13821:5;13817:16;13811:23;13828:4;13892:3;13888:14;7735:36;13996:4;13989:5;13985:16;13979:23;13996:4;14060:3;14056:14;7735:36;14160:6;;14153:5;14149:18;14143:25;14160:6;14226:3;14222:16;7735:36;;14318:6;;14311:5;14307:18;14301:25;14332:65;14318:6;14384:3;14380:16;14366:12;14332:65;:::i;:::-;-1:-1;;14484:6;14473:18;;;14467:25;14546:16;;;7735:36;14652:6;14641:18;;;14635:25;14714:16;;;7735:36;14820:6;14809:18;;;14803:25;14882:16;;7735:36;12753:2167::o;17484:271::-;;7312:5;28658:12;7423:52;7468:6;7463:3;7456:4;7449:5;7445:16;7423:52;:::i;:::-;7487:16;;;;;17618:137;-1:-1;;17618:137::o;17762:222::-;-1:-1;;;;;30425:54;;;;5331:37;;17889:2;17874:18;;17860:124::o;17991:444::-;-1:-1;;;;;30425:54;;;5331:37;;30425:54;;;;18338:2;18323:18;;5331:37;18421:2;18406:18;;7735:36;;;;18174:2;18159:18;;18145:290::o;18442:333::-;-1:-1;;;;;30425:54;;;;5331:37;;18761:2;18746:18;;7735:36;18597:2;18582:18;;18568:207::o;18782:370::-;18959:2;18973:47;;;28658:12;;18944:18;;;29493:19;;;18782:370;;18959:2;28332:14;;;;29533;;;;18782:370;5939:260;5964:6;5961:1;5958:13;5939:260;;;6025:13;;-1:-1;;;;;30425:54;5331:37;;29211:14;;;;4970;;;;30436:42;5979:9;5939:260;;;-1:-1;19026:116;;18930:222;-1:-1;;;;;;18930:222::o;19159:458::-;19380:2;19394:47;;;28658:12;;19365:18;;;29493:19;;;19159:458;;19380:2;28332:14;;;;29533;;;;19159:458;6796:326;6821:6;6818:1;6815:13;6796:326;;;5130:90;5216:3;6888:6;6882:13;5130:90;:::i;:::-;29211:14;;;;5249:6;5240:16;;;;;6843:1;6836:9;6796:326;;19881:310;;20028:2;20049:17;20042:47;8194:5;28658:12;29505:6;20028:2;20017:9;20013:18;29493:19;8288:52;8333:6;29533:14;20017:9;29533:14;20028:2;8314:5;8310:16;8288:52;:::i;:::-;31339:7;31323:14;-1:-1;;31319:28;8352:39;;;;29533:14;8352:39;;19999:192;-1:-1;;19999:192::o;20198:416::-;20398:2;20412:47;;;8628:2;20383:18;;;29493:19;8664:34;29533:14;;;8644:55;-1:-1;;;8719:12;;;8712:34;8765:12;;;20369:245::o;20621:416::-;20821:2;20835:47;;;9016:2;20806:18;;;29493:19;9052:34;29533:14;;;9032:55;-1:-1;;;9107:12;;;9100:30;9149:12;;;20792:245::o;21044:416::-;21244:2;21258:47;;;9400:2;21229:18;;;29493:19;-1:-1;;;29533:14;;;9416:45;9480:12;;;21215:245::o;21467:416::-;21667:2;21681:47;;;9731:2;21652:18;;;29493:19;9767:29;29533:14;;;9747:50;9816:12;;;21638:245::o;21890:416::-;22090:2;22104:47;;;10067:2;22075:18;;;29493:19;-1:-1;;;29533:14;;;10083:45;10147:12;;;22061:245::o;22313:416::-;22513:2;22527:47;;;10398:2;22498:18;;;29493:19;-1:-1;;;29533:14;;;10414:43;10476:12;;;22484:245::o;22736:416::-;22936:2;22950:47;;;10727:2;22921:18;;;29493:19;10763:34;29533:14;;;10743:55;-1:-1;;;10818:12;;;10811:26;10856:12;;;22907:245::o;23159:416::-;23359:2;23373:47;;;11107:2;23344:18;;;29493:19;-1:-1;;;29533:14;;;11123:44;11186:12;;;23330:245::o;23582:416::-;23782:2;23796:47;;;11437:2;23767:18;;;29493:19;11473:34;29533:14;;;11453:55;-1:-1;;;11528:12;;;11521:25;11565:12;;;23753:245::o;24005:416::-;24205:2;24219:47;;;24190:18;;;29493:19;11852:34;29533:14;;;11832:55;11906:12;;;24176:245::o;24428:416::-;24628:2;24642:47;;;12157:2;24613:18;;;29493:19;12193:31;29533:14;;;12173:52;12244:12;;;24599:245::o;24851:416::-;25051:2;25065:47;;;12495:2;25036:18;;;29493:19;12531:33;29533:14;;;12511:54;12584:12;;;25022:245::o;25274:311::-;25445:3;25430:19;;25460:115;25434:9;25548:6;25460:115;:::i;25592:222::-;7735:36;;;25719:2;25704:18;;25690:124::o;25821:460::-;7735:36;;;-1:-1;;;;;30425:54;;;;26176:2;26161:18;;5331:37;26267:2;26252:18;;7979:58;26012:2;25997:18;;25983:298::o;26288:1566::-;7735:36;;;26915:2;26900:18;;7735:36;;;;26998:2;26983:18;;7735:36;;;;27081:2;27066:18;;7735:36;;;;27164:3;27149:19;;7735:36;;;;27248:3;27233:19;;7735:36;;;;27332:3;27317:19;;7735:36;;;;27416:3;27401:19;;7735:36;27500:3;27485:19;;7735:36;-1:-1;;;;;30425:54;27584:3;27569:19;;5331:37;27669:3;27654:19;;7735:36;27754:3;27739:19;;7735:36;27839:3;27824:19;;7735:36;26752:3;26737:19;;26723:1131::o;27861:349::-;7735:36;;;28196:2;28181:18;;7979:58;28024:2;28009:18;;27995:215::o;30979:268::-;31044:1;31051:101;31065:6;31062:1;31059:13;31051:101;;;31132:11;;;31126:18;31113:11;;;31106:39;31087:2;31080:10;31051:101;;;31167:6;31164:1;31161:13;31158:2;;;-1:-1;;31044:1;31214:16;;31207:27;31028:219::o

Swarm Source

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