Contract 0xe3c10989ddc5df5b1b9c0e6229c2e4e0862fde3e 12

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xa5f1fc385059b75988f554ae64d8f75eb0f3f2e7429989f7de9208178b7734f7Withdraw1855472012024-02-29 3:28:282 hrs 38 mins ago0x49519579d9d7f1e782daff0d1139c6f6c7b51235 IN  DODO: DODO Mining V10 ETH0.00010249 0.1
0x679c90c31ba9cfb31e7d9b611000d708b75ed0bc5e96167f7f592937266e3a70Withdraw1852915592024-02-28 9:24:3620 hrs 42 mins ago0xb60d601606351dc78a4f5493aa2aacc06a3b19e3 IN  DODO: DODO Mining V10 ETH0.00017381 0.1
0x7e8c74e75d229b2baabcbacc1ca5595faa0a20633fb9de92118b54245813675bDeposit1852854252024-02-28 8:59:0621 hrs 7 mins ago0x3c93cb48ebae48b1581fb1855272511f84a38a67 IN  DODO: DODO Mining V10 ETH0.000100530.1
0xe15b158196feb16d70ac9d9b61fc1a85256c316320c2fe588be65db9b80ca07bDeposit1852462162024-02-28 6:14:5223 hrs 52 mins ago0x5f093855944da65f2abbc4b13c51e855368de93e IN  DODO: DODO Mining V10 ETH0.00008271 0.1
0x78596dbe2a0f793ca31ba5443389cbbd1a64d2b03013b04ca2df339b051c2bddClaim1852444302024-02-28 6:07:2323 hrs 59 mins ago0x8ecd87e1dc7a80a0c6f012572959a6661ad3f4c0 IN  DODO: DODO Mining V10 ETH0.00005879 0.1
0x7f52380d6c4911ada13c6512af0461ae62f243ffd597d35cdc14a25cc08451bdDeposit1852441352024-02-28 6:06:111 day ago0x5f093855944da65f2abbc4b13c51e855368de93e IN  DODO: DODO Mining V10 ETH0.00007024 0.1
0x48b92b35748351421bf893c8bdf3352a988c93f75be95e193db7abd83265d53dWithdraw1850452492024-02-27 15:44:051 day 14 hrs ago0x48f4600e2b2912ad6643eb87397825d3b35cc41b IN  DODO: DODO Mining V10 ETH0.00011047 0.1
0xcc0b800953c0bc586e488b08bf6da1fdffd1c9b26891641a87f6f963f2fc3ad5Claim1849373892024-02-27 8:10:521 day 21 hrs ago0x0f3563d5a39f6add7e60630bd14f9d8ded0cdc5e IN  DODO: DODO Mining V10 ETH0.0000672 0.1
0x1cb6777bb650703ca1162e1606f2b97d6d209298fc39281fb7362579efe68404Claim1849373432024-02-27 8:10:411 day 21 hrs ago0x0f3563d5a39f6add7e60630bd14f9d8ded0cdc5e IN  DODO: DODO Mining V10 ETH0.00006891 0.1
0x126bb5c063cee5906e861c8af9b36333e5d83e19e4e00ce22d6c3898007560f4Withdraw1849357922024-02-27 8:04:111 day 22 hrs ago0xc88f0df6ff56d39c08f56864407d05bffac59851 IN  DODO: DODO Mining V10 ETH0.00007768 0.1
0xfd6873f04a619a02c81a17c3b3ec90c033a641527c1c5729eb2c1222ba33d1d4Withdraw1849356862024-02-27 8:03:441 day 22 hrs ago0xc88f0df6ff56d39c08f56864407d05bffac59851 IN  DODO: DODO Mining V10 ETH0.00007768 0.1
0xf8554c60a519b692e42211f08a9257ae39251e3cef064fcc4842d78094155c68Claim1849173822024-02-27 6:46:371 day 23 hrs ago0x48f4600e2b2912ad6643eb87397825d3b35cc41b IN  DODO: DODO Mining V10 ETH0.00008381 0.1
0xbb1294f078d4a9e1262981c32a4b4fba190f352ffa3549d94ac64e0cfa3c5ecfDeposit1848231002024-02-27 0:02:082 days 6 hrs ago0x77956a9d1b9901bbe4cfc2ed37db17500fbe7b0c IN  DODO: DODO Mining V10 ETH0.00008789 0.1
0xf7c29515b3a2a0e44b269759482248b7bc13525a78f0a3f52cfc64150dea3160Claim1848035122024-02-26 22:34:392 days 7 hrs ago0xc88f0df6ff56d39c08f56864407d05bffac59851 IN  DODO: DODO Mining V10 ETH0.00006343 0.1
0xe8a06af88f1649246670f0ff3beb93c40f122d074b3c61f8c7e17e3e2e30982dClaim1848034522024-02-26 22:34:222 days 7 hrs ago0xc88f0df6ff56d39c08f56864407d05bffac59851 IN  DODO: DODO Mining V10 ETH0.00006514 0.1
0x2983f5a135544fbfb1c83e3e6757edc69013fe9844733510a85759c915d0a8fbClaim1846108132024-02-26 8:55:092 days 21 hrs ago0x7049e4343ce902240caedfd093559250ff890cef IN  DODO: DODO Mining V10 ETH0.000052740.1
0x97ca88c752723bd702be26292cb19fec4c423b4262d5df81f1f83a001e57b20fDeposit1845647202024-02-26 5:39:503 days 27 mins ago0x23dd6eff5b6ba247314e98d2383c95c2128ab620 IN  DODO: DODO Mining V10 ETH0.00005589 0.1
0x845149eb8898ebade595ea4493021efe2c8e80e8040573181a5f29fcd505b3dbDeposit1845645802024-02-26 5:39:143 days 27 mins ago0x23dd6eff5b6ba247314e98d2383c95c2128ab620 IN  DODO: DODO Mining V10 ETH0.00005784 0.1
0x4bca2211ce0e2dd39c99205258276cb0f3034bcf0a2daa2e1c4c174ddd0481acDeposit1844268672024-02-25 19:44:213 days 10 hrs ago0x77eddfa59228809f8ed3b33d8222157334e9772e IN  DODO: DODO Mining V10 ETH0.00007659 0.1
0x2a8a0e42990be77ef3d255e061bc8055464e20e0e945b1b72e7d2bad7299da43Deposit1843476562024-02-25 14:06:323 days 16 hrs ago0x3bcf5b484a8628fc8bcf4eb97985ed6157a9cc12 IN  DODO: DODO Mining V10 ETH0.0000733 0.1
0x1fc97c323be206d80bf8c15a9eccb5a3f75dc3952c9310ec6d1695555f0479ddWithdraw1840896382024-02-24 19:27:314 days 10 hrs ago0xd782fca6176afc510c6b935f5cd87e3de7d2b0e9 IN  DODO: DODO Mining V10 ETH0.00008974 0.1
0xb7a2b7412ae51ddf93077417cefc9670544dc6bd8fba575add3664fd0778deeeWithdraw1839766522024-02-24 11:24:414 days 18 hrs ago0xc02ba178c6cd19151ab412bfc2107bae2a5bf113 IN  DODO: DODO Mining V10 ETH0.000071780.1
0x7b405b84fe5f9135a153472144d9ae65a75429c159d71b3f94745f9c59ec25caWithdraw1839599572024-02-24 10:13:474 days 19 hrs ago0xdfcd81bc07ec3d842cc415eaa1ecfae1136a9f17 IN  DODO: DODO Mining V10 ETH0.000065270.1
0xf864d5bd5c106a2eabe0ad4ea3d6541e4f898a839c4165d49c6015aa10308165Withdraw1839516682024-02-24 9:38:254 days 20 hrs ago0xbb99fc6c76abf646f90554702508bc2f34096305 IN  DODO: DODO Mining V10 ETH0.000078010.1
0x7b058fd913602bce8bc9716bbc6fad0032f36bd48a272779cd46190fbfeb8c2eWithdraw1839504332024-02-24 9:33:044 days 20 hrs ago0x17f05443b71e3924c5f94951435fa1b5b4b5f6a0 IN  DODO: DODO Mining V10 ETH0.000070030.1
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x5d11535698099d162464a33f4b37f86294f4e879d1ef83891ec343f1e508034c720462642023-03-21 7:32:53344 days 22 hrs ago DODO: DODO Mining V1 0x82b423848cdd98740fb57f961fa692739f9916330 ETH
0x5d11535698099d162464a33f4b37f86294f4e879d1ef83891ec343f1e508034c720462642023-03-21 7:32:53344 days 22 hrs ago DODO: DODO Mining V1 0x82b423848cdd98740fb57f961fa692739f9916330 ETH
0xc5b6d7093555e644e03529e24a15ec8deb7fca14ab692391e0f18bc04280dbd9720461262023-03-21 7:32:18344 days 22 hrs ago DODO: DODO Mining V1 0x82b423848cdd98740fb57f961fa692739f9916330 ETH
0xc5b6d7093555e644e03529e24a15ec8deb7fca14ab692391e0f18bc04280dbd9720461262023-03-21 7:32:18344 days 22 hrs ago DODO: DODO Mining V1 0x7e5a52371e6716adcd1ea7dc7e165ab3a54f75e10 ETH
0xc5b6d7093555e644e03529e24a15ec8deb7fca14ab692391e0f18bc04280dbd9720461262023-03-21 7:32:18344 days 22 hrs ago DODO: DODO Mining V1 0x82b423848cdd98740fb57f961fa692739f9916330 ETH
0xe7a5f04501280dbf9fb6874cb916f1c995bb7668a81cb0820b0d1c0b9ea74cf9719993412023-03-21 4:19:36345 days 1 hr ago DODO: DODO Mining V1 0x7ebd8a1803ce082d4de609c0aa0813dd842bd4db0 ETH
0xe7a5f04501280dbf9fb6874cb916f1c995bb7668a81cb0820b0d1c0b9ea74cf9719993412023-03-21 4:19:36345 days 1 hr ago DODO: DODO Mining V1 0x7e5a52371e6716adcd1ea7dc7e165ab3a54f75e10 ETH
0xe7a5f04501280dbf9fb6874cb916f1c995bb7668a81cb0820b0d1c0b9ea74cf9719993412023-03-21 4:19:36345 days 1 hr ago DODO: DODO Mining V1 0x7ebd8a1803ce082d4de609c0aa0813dd842bd4db0 ETH
0x706c2bca35721c1d94380b9871f146edd52e008eec8adee3ac0680438bd6c4b6718540042023-03-20 18:05:40345 days 12 hrs ago DODO: DODO Mining V1 0x82b423848cdd98740fb57f961fa692739f9916330 ETH
0x706c2bca35721c1d94380b9871f146edd52e008eec8adee3ac0680438bd6c4b6718540042023-03-20 18:05:40345 days 12 hrs ago DODO: DODO Mining V1 0x82b423848cdd98740fb57f961fa692739f9916330 ETH
0x59a023f01f325060d5d47c7ee67636524d55d07110a59a424564e486ae557cb7718532462023-03-20 18:02:36345 days 12 hrs ago DODO: DODO Mining V1 0x82b423848cdd98740fb57f961fa692739f9916330 ETH
0x59a023f01f325060d5d47c7ee67636524d55d07110a59a424564e486ae557cb7718532462023-03-20 18:02:36345 days 12 hrs ago DODO: DODO Mining V1 0x7e5a52371e6716adcd1ea7dc7e165ab3a54f75e10 ETH
0x59a023f01f325060d5d47c7ee67636524d55d07110a59a424564e486ae557cb7718532462023-03-20 18:02:36345 days 12 hrs ago DODO: DODO Mining V1 0x82b423848cdd98740fb57f961fa692739f9916330 ETH
0x59a023f01f325060d5d47c7ee67636524d55d07110a59a424564e486ae557cb7718532462023-03-20 18:02:36345 days 12 hrs ago 0x2b179cc69407168b55d11a0c79c7e4b0c3c139fb DODO: DODO Mining V10 ETH
0x59a023f01f325060d5d47c7ee67636524d55d07110a59a424564e486ae557cb7718532462023-03-20 18:02:36345 days 12 hrs ago 0x2b179cc69407168b55d11a0c79c7e4b0c3c139fb DODO: DODO Mining V10 ETH
0xa08bfdfeb79da53499d28f81a10879febb9db67579707c22f9aacd8670778e3f718346712023-03-20 16:45:31345 days 13 hrs ago DODO: DODO Mining V1 0x7ebd8a1803ce082d4de609c0aa0813dd842bd4db0 ETH
0xa08bfdfeb79da53499d28f81a10879febb9db67579707c22f9aacd8670778e3f718346712023-03-20 16:45:31345 days 13 hrs ago DODO: DODO Mining V1 0x7e5a52371e6716adcd1ea7dc7e165ab3a54f75e10 ETH
0xa08bfdfeb79da53499d28f81a10879febb9db67579707c22f9aacd8670778e3f718346712023-03-20 16:45:31345 days 13 hrs ago DODO: DODO Mining V1 0x7ebd8a1803ce082d4de609c0aa0813dd842bd4db0 ETH
0xed575716f090dcd48c88a0337e3f60d3920bcec54aea874428a65719e188acdc718248562023-03-20 16:05:17345 days 14 hrs ago DODO: DODO Mining V1 0x82b423848cdd98740fb57f961fa692739f9916330 ETH
0xed575716f090dcd48c88a0337e3f60d3920bcec54aea874428a65719e188acdc718248562023-03-20 16:05:17345 days 14 hrs ago DODO: DODO Mining V1 0x82b423848cdd98740fb57f961fa692739f9916330 ETH
0x1265b1bbb3a67aa635f44549541ceda7ba6961999f83c45c3c67e865e426d91a718247862023-03-20 16:04:59345 days 14 hrs ago DODO: DODO Mining V1 0x7ebd8a1803ce082d4de609c0aa0813dd842bd4db0 ETH
0x1265b1bbb3a67aa635f44549541ceda7ba6961999f83c45c3c67e865e426d91a718247862023-03-20 16:04:59345 days 14 hrs ago DODO: DODO Mining V1 0x7ebd8a1803ce082d4de609c0aa0813dd842bd4db0 ETH
0xa0c87bd52bd20180d2f549b75abc6c260fab27d222ebc6ac35a7fe415b045292718232572023-03-20 15:58:40345 days 14 hrs ago DODO: DODO Mining V1 0x82b423848cdd98740fb57f961fa692739f9916330 ETH
0xa0c87bd52bd20180d2f549b75abc6c260fab27d222ebc6ac35a7fe415b045292718232572023-03-20 15:58:40345 days 14 hrs ago DODO: DODO Mining V1 0x82b423848cdd98740fb57f961fa692739f9916330 ETH
0x0d4c468b1fecca794cd6204dabc7b8ba52784c2ff76285e7826947851a8d0714718228862023-03-20 15:57:14345 days 14 hrs ago DODO: DODO Mining V1 0x7ebd8a1803ce082d4de609c0aa0813dd842bd4db0 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DODOMine

Compiler Version
v0.6.9+commit.3e3065ac

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2021-09-02
*/

// File: contracts/lib/Ownable.sol

/*

    Copyright 2020 DODO ZOO.
    SPDX-License-Identifier: Apache-2.0

*/

pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;

/**
 * @title Ownable
 * @author DODO Breeder
 *
 * @notice Ownership related functions
 */
contract Ownable {
    address public _OWNER_;
    address public _NEW_OWNER_;

    // ============ Events ============

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

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

    // ============ Modifiers ============

    modifier onlyOwner() {
        require(msg.sender == _OWNER_, "NOT_OWNER");
        _;
    }

    // ============ Functions ============

    constructor() internal {
        _OWNER_ = msg.sender;
        emit OwnershipTransferred(address(0), _OWNER_);
    }

    function transferOwnership(address newOwner) external onlyOwner {
        emit OwnershipTransferPrepared(_OWNER_, newOwner);
        _NEW_OWNER_ = newOwner;
    }

    function claimOwnership() external {
        require(msg.sender == _NEW_OWNER_, "INVALID_CLAIM");
        emit OwnershipTransferred(_OWNER_, _NEW_OWNER_);
        _OWNER_ = _NEW_OWNER_;
        _NEW_OWNER_ = address(0);
    }
}

// File: contracts/lib/SafeMath.sol

/**
 * @title SafeMath
 * @author DODO Breeder
 *
 * @notice Math operations with safety checks that revert on error
 */
library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "MUL_ERROR");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "DIVIDING_ERROR");
        return a / b;
    }

    function divCeil(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 quotient = div(a, b);
        uint256 remainder = a - quotient * b;
        if (remainder > 0) {
            return quotient + 1;
        } else {
            return quotient;
        }
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SUB_ERROR");
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "ADD_ERROR");
        return c;
    }

    function sqrt(uint256 x) internal pure returns (uint256 y) {
        uint256 z = x / 2 + 1;
        y = x;
        while (z < y) {
            y = z;
            z = (x / z + z) / 2;
        }
    }
}

// File: contracts/lib/DecimalMath.sol

/**
 * @title DecimalMath
 * @author DODO Breeder
 *
 * @notice Functions for fixed point number with 18 decimals
 */
library DecimalMath {
    using SafeMath for uint256;

    uint256 internal constant ONE = 10**18;
    uint256 internal constant ONE2 = 10**36;

    function mulFloor(uint256 target, uint256 d) internal pure returns (uint256) {
        return target.mul(d) / (10**18);
    }

    function mulCeil(uint256 target, uint256 d) internal pure returns (uint256) {
        return target.mul(d).divCeil(10**18);
    }

    function divFloor(uint256 target, uint256 d) internal pure returns (uint256) {
        return target.mul(10**18).div(d);
    }

    function divCeil(uint256 target, uint256 d) internal pure returns (uint256) {
        return target.mul(10**18).divCeil(d);
    }

    function reciprocalFloor(uint256 target) internal pure returns (uint256) {
        return uint256(10**36).div(target);
    }

    function reciprocalCeil(uint256 target) internal pure returns (uint256) {
        return uint256(10**36).divCeil(target);
    }
}

// File: contracts/intf/IERC20.sol


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    /**
     * @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:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `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);
}

// File: contracts/lib/SafeERC20.sol

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 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 SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using SafeMath for uint256;

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

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

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    /**
     * @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(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves.

        // A Solidity high level call has three parts:
        //  1. The target address is checked to verify it contains contract code
        //  2. The call itself is made, and success asserted
        //  3. The return value is decoded, which in turn checks the size of the returned data.
        // solhint-disable-next-line max-line-length

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) {
            // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

// File: contracts/DODOToken/DODORewardVault.sol



interface IDODORewardVault {
    function reward(address to, uint256 amount) external;
}


contract DODORewardVault is Ownable {
    using SafeERC20 for IERC20;

    address public dodoToken;

    constructor(address _dodoToken) public {
        dodoToken = _dodoToken;
    }

    function reward(address to, uint256 amount) external onlyOwner {
        IERC20(dodoToken).safeTransfer(to, amount);
    }
}

// File: contracts/DODOToken/DODOMine.sol

contract DODOMine is Ownable {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    // Info of each user.
    struct UserInfo {
        uint256 amount; // How many LP tokens the user has provided.
        uint256 rewardDebt; // Reward debt. See explanation below.
        //
        // We do some fancy math here. Basically, any point in time, the amount of DODOs
        // entitled to a user but is pending to be distributed is:
        //
        //   pending reward = (user.amount * pool.accDODOPerShare) - user.rewardDebt
        //
        // Whenever a user deposits or withdraws LP tokens to a pool. Here's what happens:
        //   1. The pool's `accDODOPerShare` (and `lastRewardBlock`) gets updated.
        //   2. User receives the pending reward sent to his/her address.
        //   3. User's `amount` gets updated.
        //   4. User's `rewardDebt` gets updated.
    }

    // Info of each pool.
    struct PoolInfo {
        address lpToken; // Address of LP token contract.
        uint256 allocPoint; // How many allocation points assigned to this pool. DODOs to distribute per block.
        uint256 lastRewardBlock; // Last block number that DODOs distribution occurs.
        uint256 accDODOPerShare; // Accumulated DODOs per share, times 1e12. See below.
    }

    address public dodoRewardVault;
    uint256 public dodoPerBlock;

    // Info of each pool.
    PoolInfo[] public poolInfos;
    mapping(address => uint256) public lpTokenRegistry;

    // Info of each user that stakes LP tokens.
    mapping(uint256 => mapping(address => UserInfo)) public userInfo;
    mapping(address => uint256) public realizedReward;

    // Total allocation points. Must be the sum of all allocation points in all pools.
    uint256 public totalAllocPoint = 0;
    // The block number when DODO mining starts.
    uint256 public startBlock;

    event Deposit(address indexed user, uint256 indexed pid, uint256 amount);
    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount);
    event Claim(address indexed user, uint256 amount);

    constructor(address _dodoToken, uint256 _startBlock) public {
        dodoRewardVault = address(new DODORewardVault(_dodoToken));
        startBlock = _startBlock;
    }

    // ============ Modifiers ============

    modifier lpTokenExist(address lpToken) {
        require(lpTokenRegistry[lpToken] > 0, "LP Token Not Exist");
        _;
    }

    modifier lpTokenNotExist(address lpToken) {
        require(lpTokenRegistry[lpToken] == 0, "LP Token Already Exist");
        _;
    }

    // ============ Helper ============

    function poolLength() external view returns (uint256) {
        return poolInfos.length;
    }

    function getPid(address _lpToken) public view lpTokenExist(_lpToken) returns (uint256) {
        return lpTokenRegistry[_lpToken] - 1;
    }

    function getUserLpBalance(address _lpToken, address _user) public view returns (uint256) {
        uint256 pid = getPid(_lpToken);
        return userInfo[pid][_user].amount;
    }

    // ============ Ownable ============

    function addLpToken(
        address _lpToken,
        uint256 _allocPoint,
        bool _withUpdate
    ) public lpTokenNotExist(_lpToken) onlyOwner {
        if (_withUpdate) {
            massUpdatePools();
        }
        uint256 lastRewardBlock = block.number > startBlock ? block.number : startBlock;
        totalAllocPoint = totalAllocPoint.add(_allocPoint);
        poolInfos.push(
            PoolInfo({
                lpToken: _lpToken,
                allocPoint: _allocPoint,
                lastRewardBlock: lastRewardBlock,
                accDODOPerShare: 0
            })
        );
        lpTokenRegistry[_lpToken] = poolInfos.length;
    }

    function setLpToken(
        address _lpToken,
        uint256 _allocPoint,
        bool _withUpdate
    ) public onlyOwner {
        if (_withUpdate) {
            massUpdatePools();
        }
        uint256 pid = getPid(_lpToken);
        totalAllocPoint = totalAllocPoint.sub(poolInfos[pid].allocPoint).add(_allocPoint);
        poolInfos[pid].allocPoint = _allocPoint;
    }

    function setReward(uint256 _dodoPerBlock, bool _withUpdate) external onlyOwner {
        if (_withUpdate) {
            massUpdatePools();
        }
        dodoPerBlock = _dodoPerBlock;
    }

    // ============ View Rewards ============

    function getPendingReward(address _lpToken, address _user) external view returns (uint256) {
        uint256 pid = getPid(_lpToken);
        PoolInfo storage pool = poolInfos[pid];
        UserInfo storage user = userInfo[pid][_user];
        uint256 accDODOPerShare = pool.accDODOPerShare;
        uint256 lpSupply = IERC20(pool.lpToken).balanceOf(address(this));
        if (block.number > pool.lastRewardBlock && lpSupply != 0) {
            uint256 DODOReward = block
                .number
                .sub(pool.lastRewardBlock)
                .mul(dodoPerBlock)
                .mul(pool.allocPoint)
                .div(totalAllocPoint);
            accDODOPerShare = accDODOPerShare.add(DecimalMath.divFloor(DODOReward, lpSupply));
        }
        return DecimalMath.mulFloor(user.amount, accDODOPerShare).sub(user.rewardDebt);
    }

    function getAllPendingReward(address _user) external view returns (uint256) {
        uint256 length = poolInfos.length;
        uint256 totalReward = 0;
        for (uint256 pid = 0; pid < length; ++pid) {
            if (userInfo[pid][_user].amount == 0 || poolInfos[pid].allocPoint == 0) {
                continue; // save gas
            }
            PoolInfo storage pool = poolInfos[pid];
            UserInfo storage user = userInfo[pid][_user];
            uint256 accDODOPerShare = pool.accDODOPerShare;
            uint256 lpSupply = IERC20(pool.lpToken).balanceOf(address(this));
            if (block.number > pool.lastRewardBlock && lpSupply != 0) {
                uint256 DODOReward = block
                    .number
                    .sub(pool.lastRewardBlock)
                    .mul(dodoPerBlock)
                    .mul(pool.allocPoint)
                    .div(totalAllocPoint);
                accDODOPerShare = accDODOPerShare.add(DecimalMath.divFloor(DODOReward, lpSupply));
            }
            totalReward = totalReward.add(
                DecimalMath.mulFloor(user.amount, accDODOPerShare).sub(user.rewardDebt)
            );
        }
        return totalReward;
    }

    function getRealizedReward(address _user) external view returns (uint256) {
        return realizedReward[_user];
    }

    function getDlpMiningSpeed(address _lpToken) external view returns (uint256) {
        uint256 pid = getPid(_lpToken);
        PoolInfo storage pool = poolInfos[pid];
        return dodoPerBlock.mul(pool.allocPoint).div(totalAllocPoint);
    }

    // ============ Update Pools ============

    // Update reward vairables for all pools. Be careful of gas spending!
    function massUpdatePools() public {
        uint256 length = poolInfos.length;
        for (uint256 pid = 0; pid < length; ++pid) {
            updatePool(pid);
        }
    }

    // Update reward variables of the given pool to be up-to-date.
    function updatePool(uint256 _pid) public {
        PoolInfo storage pool = poolInfos[_pid];
        if (block.number <= pool.lastRewardBlock) {
            return;
        }
        uint256 lpSupply = IERC20(pool.lpToken).balanceOf(address(this));
        if (lpSupply == 0) {
            pool.lastRewardBlock = block.number;
            return;
        }
        uint256 DODOReward = block
            .number
            .sub(pool.lastRewardBlock)
            .mul(dodoPerBlock)
            .mul(pool.allocPoint)
            .div(totalAllocPoint);
        pool.accDODOPerShare = pool.accDODOPerShare.add(DecimalMath.divFloor(DODOReward, lpSupply));
        pool.lastRewardBlock = block.number;
    }

    // ============ Deposit & Withdraw & Claim ============
    // Deposit & withdraw will also trigger claim

    function deposit(address _lpToken, uint256 _amount) public {
        uint256 pid = getPid(_lpToken);
        PoolInfo storage pool = poolInfos[pid];
        UserInfo storage user = userInfo[pid][msg.sender];
        updatePool(pid);
        if (user.amount > 0) {
            uint256 pending = DecimalMath.mulFloor(user.amount, pool.accDODOPerShare).sub(
                user.rewardDebt
            );
            safeDODOTransfer(msg.sender, pending);
        }
        IERC20(pool.lpToken).safeTransferFrom(address(msg.sender), address(this), _amount);
        user.amount = user.amount.add(_amount);
        user.rewardDebt = DecimalMath.mulFloor(user.amount, pool.accDODOPerShare);
        emit Deposit(msg.sender, pid, _amount);
    }

    function withdraw(address _lpToken, uint256 _amount) public {
        uint256 pid = getPid(_lpToken);
        PoolInfo storage pool = poolInfos[pid];
        UserInfo storage user = userInfo[pid][msg.sender];
        require(user.amount >= _amount, "withdraw too much");
        updatePool(pid);
        uint256 pending = DecimalMath.mulFloor(user.amount, pool.accDODOPerShare).sub(
            user.rewardDebt
        );
        safeDODOTransfer(msg.sender, pending);
        user.amount = user.amount.sub(_amount);
        user.rewardDebt = DecimalMath.mulFloor(user.amount, pool.accDODOPerShare);
        IERC20(pool.lpToken).safeTransfer(address(msg.sender), _amount);
        emit Withdraw(msg.sender, pid, _amount);
    }

    function withdrawAll(address _lpToken) public {
        uint256 balance = getUserLpBalance(_lpToken, msg.sender);
        withdraw(_lpToken, balance);
    }

    // Withdraw without caring about rewards. EMERGENCY ONLY.
    function emergencyWithdraw(address _lpToken) public {
        uint256 pid = getPid(_lpToken);
        PoolInfo storage pool = poolInfos[pid];
        UserInfo storage user = userInfo[pid][msg.sender];
        IERC20(pool.lpToken).safeTransfer(address(msg.sender), user.amount);
        user.amount = 0;
        user.rewardDebt = 0;
    }

    function claim(address _lpToken) public {
        uint256 pid = getPid(_lpToken);
        if (userInfo[pid][msg.sender].amount == 0 || poolInfos[pid].allocPoint == 0) {
            return; // save gas
        }
        PoolInfo storage pool = poolInfos[pid];
        UserInfo storage user = userInfo[pid][msg.sender];
        updatePool(pid);
        uint256 pending = DecimalMath.mulFloor(user.amount, pool.accDODOPerShare).sub(
            user.rewardDebt
        );
        user.rewardDebt = DecimalMath.mulFloor(user.amount, pool.accDODOPerShare);
        safeDODOTransfer(msg.sender, pending);
    }

    function claimAll() public {
        uint256 length = poolInfos.length;
        uint256 pending = 0;
        for (uint256 pid = 0; pid < length; ++pid) {
            if (userInfo[pid][msg.sender].amount == 0 || poolInfos[pid].allocPoint == 0) {
                continue; // save gas
            }
            PoolInfo storage pool = poolInfos[pid];
            UserInfo storage user = userInfo[pid][msg.sender];
            updatePool(pid);
            pending = pending.add(
                DecimalMath.mulFloor(user.amount, pool.accDODOPerShare).sub(user.rewardDebt)
            );
            user.rewardDebt = DecimalMath.mulFloor(user.amount, pool.accDODOPerShare);
        }
        safeDODOTransfer(msg.sender, pending);
    }

    // Safe DODO transfer function
    function safeDODOTransfer(address _to, uint256 _amount) internal {
        IDODORewardVault(dodoRewardVault).reward(_to, _amount);
        realizedReward[_to] = realizedReward[_to].add(_amount);
        emit Claim(_to, _amount);
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_dodoToken","type":"address"},{"internalType":"uint256","name":"_startBlock","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferPrepared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"_NEW_OWNER_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_OWNER_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"addLpToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dodoPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dodoRewardVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getAllPendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"}],"name":"getDlpMiningSpeed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"getPendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"}],"name":"getPid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getRealizedReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"getUserLpBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lpTokenRegistry","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfos","outputs":[{"internalType":"address","name":"lpToken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"accDODOPerShare","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"realizedReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"setLpToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_dodoPerBlock","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"setReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"}],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260006008553480156200001657600080fd5b5060405162003caa38038062003caa83398181016040528101906200003c9190620001bc565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381604051620001079062000180565b6200011391906200020e565b604051809103906000f08015801562000130573d6000803e3d6000fd5b50600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060098190555050506200029d565b610d148062002f9683390190565b6000815190506200019f8162000269565b92915050565b600081519050620001b68162000283565b92915050565b60008060408385031215620001d057600080fd5b6000620001e0858286016200018e565b9250506020620001f385828601620001a5565b9150509250929050565b62000208816200022b565b82525050565b6000602082019050620002256000830184620001fd565b92915050565b600062000238826200023f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b62000274816200022b565b81146200028057600080fd5b50565b6200028e816200025f565b81146200029a57600080fd5b50565b612ce980620002ad6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636ff1c9bc11610104578063d1058e59116100a2578063f3fef3a311610071578063f3fef3a314610533578063fa09e6301461054f578063fb7276f41461056b578063fe0f3a131461059b576101da565b8063d1058e59146104ad578063ec83a76a146104b7578063f146b809146104e7578063f2fde38b14610517576101da565b80638af70336116100de5780638af703361461042457806393f1a40b146104425780639599af1314610473578063bea006e014610491576101da565b80636ff1c9bc146103ce5780637f10179f146103ea5780638456db1514610406576101da565b806343b55f351161017c57806351eb05a61161014b57806351eb05a614610345578063630b5ba114610361578063689d84e41461036b5780636dc2cc8c1461039e576101da565b806343b55f35146102d157806347e7ef241461030157806348cd4cb11461031d5780634e71e0c81461033b576101da565b806319a78f55116101b857806319a78f55146102395780631e83409a1461026957806334ea5389146102855780633d16433e146102a1576101da565b8063081e3eda146101df57806316048bc4146101fd57806317caf6f11461021b575b600080fd5b6101e76105cb565b6040516101f49190612b88565b60405180910390f35b6102056105d8565b6040516102129190612968565b60405180910390f35b6102236105fd565b6040516102309190612b88565b60405180910390f35b610253600480360381019061024e9190612462565b610603565b6040516102609190612b88565b60405180910390f35b610283600480360381019061027e9190612439565b61066e565b005b61029f600480360381019061029a91906124da565b6107da565b005b6102bb60048036038101906102b69190612439565b6108f9565b6040516102c89190612b88565b60405180910390f35b6102eb60048036038101906102e69190612439565b610911565b6040516102f89190612b88565b60405180910390f35b61031b6004803603810190610316919061249e565b6109e1565b005b610325610b8f565b6040516103329190612b88565b60405180910390f35b610343610b95565b005b61035f600480360381019061035a9190612552565b610d68565b005b610369610ef3565b005b61038560048036038101906103809190612552565b610f23565b60405161039594939291906129e3565b60405180910390f35b6103b860048036038101906103b39190612439565b610f80565b6040516103c59190612b88565b60405180910390f35b6103e860048036038101906103e39190612439565b610fc9565b005b61040460048036038101906103ff91906125e0565b6110b6565b005b61040e61115f565b60405161041b9190612968565b60405180910390f35b61042c611185565b6040516104399190612b88565b60405180910390f35b61045c600480360381019061045791906125a4565b61118b565b60405161046a929190612ba3565b60405180910390f35b61047b6111bc565b6040516104889190612968565b60405180910390f35b6104ab60048036038101906104a691906124da565b6111e2565b005b6104b561144f565b005b6104d160048036038101906104cc9190612439565b6115e5565b6040516104de9190612b88565b60405180910390f35b61050160048036038101906104fc9190612439565b6115fd565b60405161050e9190612b88565b60405180910390f35b610531600480360381019061052c9190612439565b6118b7565b005b61054d6004803603810190610548919061249e565b611a05565b005b61056960048036038101906105649190612439565b611bea565b005b61058560048036038101906105809190612439565b611c06565b6040516105929190612b88565b60405180910390f35b6105b560048036038101906105b09190612462565b611c69565b6040516105c29190612b88565b60405180910390f35b6000600480549050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b60008061060f84610911565b90506006600082815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015491505092915050565b600061067982610911565b905060006006600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414806106fb57506000600482815481106106e757fe5b906000526020600020906004020160010154145b1561070657506107d7565b60006004828154811061071557fe5b9060005260206000209060040201905060006006600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061078283610d68565b60006107ac826001015461079e84600001548660030154611e67565b611e9590919063ffffffff16565b90506107c082600001548460030154611e67565b82600101819055506107d23382611ee5565b505050505b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086090612ac8565b60405180910390fd5b801561087857610877610ef3565b5b600061088384610911565b90506108ca836108bc6004848154811061089957fe5b906000526020600020906004020160010154600854611e9590919063ffffffff16565b61205b90919063ffffffff16565b60088190555082600482815481106108de57fe5b90600052602060002090600402016001018190555050505050565b60056020528060005260406000206000915090505481565b6000816000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098d90612ae8565b60405180910390fd5b6001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403915050919050565b60006109ec83610911565b90506000600482815481106109fd57fe5b9060005260206000209060040201905060006006600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610a6a83610d68565b600081600001541115610aaf576000610aa18260010154610a9384600001548660030154611e67565b611e9590919063ffffffff16565b9050610aad3382611ee5565b505b610b003330868560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166120b0909392919063ffffffff16565b610b1784826000015461205b90919063ffffffff16565b8160000181905550610b3181600001548360030154611e67565b8160010181905550823373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1586604051610b809190612b88565b60405180910390a35050505050565b60095481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1c90612a28565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060048281548110610d7757fe5b9060005260206000209060040201905080600201544311610d985750610ef0565b60008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610df79190612968565b60206040518083038186803b158015610e0f57600080fd5b505afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e47919061257b565b90506000811415610e62574382600201819055505050610ef0565b6000610eb9600854610eab8560010154610e9d600354610e8f896002015443611e9590919063ffffffff16565b61213990919063ffffffff16565b61213990919063ffffffff16565b6121a990919063ffffffff16565b9050610edb610ec882846121ff565b846003015461205b90919063ffffffff16565b83600301819055504383600201819055505050505b50565b6000600480549050905060008090505b81811015610f1f57610f1481610d68565b806001019050610f03565b5050565b60048181548110610f3057fe5b90600052602060002090600402016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905084565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610fd482610911565b9050600060048281548110610fe557fe5b9060005260206000209060040201905060006006600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061109c3382600001548460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122369092919063ffffffff16565b600081600001819055506000816001018190555050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c90612ac8565b60405180910390fd5b801561115457611153610ef3565b5b816003819055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b6006602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b826000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125c90612b48565b60405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb90612ac8565b60405180910390fd5b811561130357611302610ef3565b5b6000600954431161131657600954611318565b435b905061132f8460085461205b90919063ffffffff16565b600881905550600460405180608001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018381526020016000815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301555050600480549050600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b60006004805490509050600080905060008090505b828110156115d65760006006600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414806114ec57506000600482815481106114d857fe5b906000526020600020906004020160010154145b156114f6576115cb565b60006004828154811061150557fe5b9060005260206000209060040201905060006006600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061157283610d68565b6115ac61159d826001015461158f84600001548660030154611e67565b611e9590919063ffffffff16565b8561205b90919063ffffffff16565b93506115c081600001548360030154611e67565b816001018190555050505b806001019050611464565b506115e13382611ee5565b5050565b60076020528060005260406000206000915090505481565b6000806004805490509050600080905060008090505b828110156118ac5760006006600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154148061169b575060006004828154811061168757fe5b906000526020600020906004020160010154145b156116a5576118a1565b6000600482815481106116b457fe5b9060005260206000209060040201905060006006600084815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260030154905060008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117809190612968565b60206040518083038186803b15801561179857600080fd5b505afa1580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d0919061257b565b90508360020154431180156117e6575060008114155b1561186457600061184260085461183487600101546118266003546118188b6002015443611e9590919063ffffffff16565b61213990919063ffffffff16565b61213990919063ffffffff16565b6121a990919063ffffffff16565b905061186061185182846121ff565b8461205b90919063ffffffff16565b9250505b61189a61188b846001015461187d866000015486611e67565b611e9590919063ffffffff16565b8761205b90919063ffffffff16565b9550505050505b806001019050611613565b508092505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193d90612ac8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6260405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611a1083610911565b9050600060048281548110611a2157fe5b9060005260206000209060040201905060006006600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508381600001541015611acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac390612aa8565b60405180910390fd5b611ad583610d68565b6000611aff8260010154611af184600001548660030154611e67565b611e9590919063ffffffff16565b9050611b0b3382611ee5565b611b22858360000154611e9590919063ffffffff16565b8260000181905550611b3c82600001548460030154611e67565b8260010181905550611b9333868560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122369092919063ffffffff16565b833373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56887604051611bda9190612b88565b60405180910390a3505050505050565b6000611bf68233610603565b9050611c028282611a05565b5050565b600080611c1283610911565b9050600060048281548110611c2357fe5b90600052602060002090600402019050611c60600854611c52836001015460035461213990919063ffffffff16565b6121a990919063ffffffff16565b92505050919050565b600080611c7584610911565b9050600060048281548110611c8657fe5b9060005260206000209060040201905060006006600084815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260030154905060008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d529190612968565b60206040518083038186803b158015611d6a57600080fd5b505afa158015611d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da2919061257b565b9050836002015443118015611db8575060008114155b15611e36576000611e14600854611e068760010154611df8600354611dea8b6002015443611e9590919063ffffffff16565b61213990919063ffffffff16565b61213990919063ffffffff16565b6121a990919063ffffffff16565b9050611e32611e2382846121ff565b8461205b90919063ffffffff16565b9250505b611e5a8360010154611e4c856000015485611e67565b611e9590919063ffffffff16565b9550505050505092915050565b6000670de0b6b3a7640000611e85838561213990919063ffffffff16565b81611e8c57fe5b04905092915050565b600082821115611eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed190612a88565b60405180910390fd5b818303905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321670f2283836040518363ffffffff1660e01b8152600401611f429291906129ba565b600060405180830381600087803b158015611f5c57600080fd5b505af1158015611f70573d6000803e3d6000fd5b50505050611fc681600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205b90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d48260405161204f9190612b88565b60405180910390a25050565b6000808284019050838110156120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d90612b08565b60405180910390fd5b8091505092915050565b612133846323b872dd60e01b8585856040516024016120d193929190612983565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122bc565b50505050565b60008083141561214c57600090506121a3565b600082840290508284828161215d57fe5b041461219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219590612b68565b60405180910390fd5b809150505b92915050565b60008082116121ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e490612a68565b60405180910390fd5b8183816121f657fe5b04905092915050565b600061222e82612220670de0b6b3a76400008661213990919063ffffffff16565b6121a990919063ffffffff16565b905092915050565b6122b78363a9059cbb60e01b84846040516024016122559291906129ba565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122bc565b505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516122e59190612951565b6000604051808303816000865af19150503d8060008114612322576040519150601f19603f3d011682016040523d82523d6000602084013e612327565b606091505b50915091508161236c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236390612a48565b60405180910390fd5b6000815111156123ca578080602001905181019061238a9190612529565b6123c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c090612b28565b60405180910390fd5b5b50505050565b6000813590506123df81612c6e565b92915050565b6000813590506123f481612c85565b92915050565b60008151905061240981612c85565b92915050565b60008135905061241e81612c9c565b92915050565b60008151905061243381612c9c565b92915050565b60006020828403121561244b57600080fd5b6000612459848285016123d0565b91505092915050565b6000806040838503121561247557600080fd5b6000612483858286016123d0565b9250506020612494858286016123d0565b9150509250929050565b600080604083850312156124b157600080fd5b60006124bf858286016123d0565b92505060206124d08582860161240f565b9150509250929050565b6000806000606084860312156124ef57600080fd5b60006124fd868287016123d0565b935050602061250e8682870161240f565b925050604061251f868287016123e5565b9150509250925092565b60006020828403121561253b57600080fd5b6000612549848285016123fa565b91505092915050565b60006020828403121561256457600080fd5b60006125728482850161240f565b91505092915050565b60006020828403121561258d57600080fd5b600061259b84828501612424565b91505092915050565b600080604083850312156125b757600080fd5b60006125c58582860161240f565b92505060206125d6858286016123d0565b9150509250929050565b600080604083850312156125f357600080fd5b60006126018582860161240f565b9250506020612612858286016123e5565b9150509250929050565b61262581612bf3565b82525050565b600061263682612bcc565b6126408185612bd7565b9350612650818560208601612c3b565b80840191505092915050565b6000612669600d83612be2565b91507f494e56414c49445f434c41494d000000000000000000000000000000000000006000830152602082019050919050565b60006126a9602083612be2565b91507f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646000830152602082019050919050565b60006126e9600e83612be2565b91507f4449564944494e475f4552524f520000000000000000000000000000000000006000830152602082019050919050565b6000612729600983612be2565b91507f5355425f4552524f5200000000000000000000000000000000000000000000006000830152602082019050919050565b6000612769601183612be2565b91507f776974686472617720746f6f206d7563680000000000000000000000000000006000830152602082019050919050565b60006127a9600983612be2565b91507f4e4f545f4f574e455200000000000000000000000000000000000000000000006000830152602082019050919050565b60006127e9601283612be2565b91507f4c5020546f6b656e204e6f7420457869737400000000000000000000000000006000830152602082019050919050565b6000612829600983612be2565b91507f4144445f4552524f5200000000000000000000000000000000000000000000006000830152602082019050919050565b6000612869602a83612be2565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b60006128cf601683612be2565b91507f4c5020546f6b656e20416c7265616479204578697374000000000000000000006000830152602082019050919050565b600061290f600983612be2565b91507f4d554c5f4552524f5200000000000000000000000000000000000000000000006000830152602082019050919050565b61294b81612c31565b82525050565b600061295d828461262b565b915081905092915050565b600060208201905061297d600083018461261c565b92915050565b6000606082019050612998600083018661261c565b6129a5602083018561261c565b6129b26040830184612942565b949350505050565b60006040820190506129cf600083018561261c565b6129dc6020830184612942565b9392505050565b60006080820190506129f8600083018761261c565b612a056020830186612942565b612a126040830185612942565b612a1f6060830184612942565b95945050505050565b60006020820190508181036000830152612a418161265c565b9050919050565b60006020820190508181036000830152612a618161269c565b9050919050565b60006020820190508181036000830152612a81816126dc565b9050919050565b60006020820190508181036000830152612aa18161271c565b9050919050565b60006020820190508181036000830152612ac18161275c565b9050919050565b60006020820190508181036000830152612ae18161279c565b9050919050565b60006020820190508181036000830152612b01816127dc565b9050919050565b60006020820190508181036000830152612b218161281c565b9050919050565b60006020820190508181036000830152612b418161285c565b9050919050565b60006020820190508181036000830152612b61816128c2565b9050919050565b60006020820190508181036000830152612b8181612902565b9050919050565b6000602082019050612b9d6000830184612942565b92915050565b6000604082019050612bb86000830185612942565b612bc56020830184612942565b9392505050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000612bfe82612c11565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015612c59578082015181840152602081019050612c3e565b83811115612c68576000848401525b50505050565b612c7781612bf3565b8114612c8257600080fd5b50565b612c8e81612c05565b8114612c9957600080fd5b50565b612ca581612c31565b8114612cb057600080fd5b5056fea26469706673582212206c5ef2855065d11ff39309bb4d76e329941b85d4478ba56a6ef0537c8597a10564736f6c63430006090033608060405234801561001057600080fd5b50604051610d14380380610d148339818101604052810190610032919061014a565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506101bc565b600081519050610144816101a5565b92915050565b60006020828403121561015c57600080fd5b600061016a84828501610135565b91505092915050565b600061017e82610185565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6101ae81610173565b81146101b957600080fd5b50565b610b49806101cb6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806316048bc41461006757806321670f22146100855780634e71e0c8146100a157806375123ff9146100ab5780638456db15146100c9578063f2fde38b146100e7575b600080fd5b61006f610103565b60405161007c9190610968565b60405180910390f35b61009f600480360381019061009a9190610777565b610128565b005b6100a9610208565b005b6100b36103db565b6040516100c09190610968565b60405180910390f35b6100d1610401565b6040516100de9190610968565b60405180910390f35b61010160048036038101906100fc919061074e565b610427565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ae906109ec565b60405180910390fd5b6102048282600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105759092919063ffffffff16565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028f906109ac565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ad906109ec565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6260405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6105f68363a9059cbb60e01b8484604051602401610594929190610983565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506105fb565b505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516106249190610951565b6000604051808303816000865af19150503d8060008114610661576040519150601f19603f3d011682016040523d82523d6000602084013e610666565b606091505b5091509150816106ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906109cc565b60405180910390fd5b60008151111561070957808060200190518101906106c991906107b3565b610708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ff90610a0c565b60405180910390fd5b5b50505050565b60008135905061071e81610ace565b92915050565b60008151905061073381610ae5565b92915050565b60008135905061074881610afc565b92915050565b60006020828403121561076057600080fd5b600061076e8482850161070f565b91505092915050565b6000806040838503121561078a57600080fd5b60006107988582860161070f565b92505060206107a985828601610739565b9150509250929050565b6000602082840312156107c557600080fd5b60006107d384828501610724565b91505092915050565b6107e581610a53565b82525050565b60006107f682610a2c565b6108008185610a37565b9350610810818560208601610a9b565b80840191505092915050565b6000610829600d83610a42565b91507f494e56414c49445f434c41494d000000000000000000000000000000000000006000830152602082019050919050565b6000610869602083610a42565b91507f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646000830152602082019050919050565b60006108a9600983610a42565b91507f4e4f545f4f574e455200000000000000000000000000000000000000000000006000830152602082019050919050565b60006108e9602a83610a42565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b61094b81610a91565b82525050565b600061095d82846107eb565b915081905092915050565b600060208201905061097d60008301846107dc565b92915050565b600060408201905061099860008301856107dc565b6109a56020830184610942565b9392505050565b600060208201905081810360008301526109c58161081c565b9050919050565b600060208201905081810360008301526109e58161085c565b9050919050565b60006020820190508181036000830152610a058161089c565b9050919050565b60006020820190508181036000830152610a25816108dc565b9050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000610a5e82610a71565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610ab9578082015181840152602081019050610a9e565b83811115610ac8576000848401525b50505050565b610ad781610a53565b8114610ae257600080fd5b50565b610aee81610a65565b8114610af957600080fd5b50565b610b0581610a91565b8114610b1057600080fd5b5056fea26469706673582212204dd3b51af84772c0cd791c715df9a4fb26f85a61e90d8f8af99a209c42d9a3c964736f6c6343000609003300000000000000000000000069eb4fa4a2fbd498c257c57ea8b7655a2559a5810000000000000000000000000000000000000000000000000000000000c8a794

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80636ff1c9bc11610104578063d1058e59116100a2578063f3fef3a311610071578063f3fef3a314610533578063fa09e6301461054f578063fb7276f41461056b578063fe0f3a131461059b576101da565b8063d1058e59146104ad578063ec83a76a146104b7578063f146b809146104e7578063f2fde38b14610517576101da565b80638af70336116100de5780638af703361461042457806393f1a40b146104425780639599af1314610473578063bea006e014610491576101da565b80636ff1c9bc146103ce5780637f10179f146103ea5780638456db1514610406576101da565b806343b55f351161017c57806351eb05a61161014b57806351eb05a614610345578063630b5ba114610361578063689d84e41461036b5780636dc2cc8c1461039e576101da565b806343b55f35146102d157806347e7ef241461030157806348cd4cb11461031d5780634e71e0c81461033b576101da565b806319a78f55116101b857806319a78f55146102395780631e83409a1461026957806334ea5389146102855780633d16433e146102a1576101da565b8063081e3eda146101df57806316048bc4146101fd57806317caf6f11461021b575b600080fd5b6101e76105cb565b6040516101f49190612b88565b60405180910390f35b6102056105d8565b6040516102129190612968565b60405180910390f35b6102236105fd565b6040516102309190612b88565b60405180910390f35b610253600480360381019061024e9190612462565b610603565b6040516102609190612b88565b60405180910390f35b610283600480360381019061027e9190612439565b61066e565b005b61029f600480360381019061029a91906124da565b6107da565b005b6102bb60048036038101906102b69190612439565b6108f9565b6040516102c89190612b88565b60405180910390f35b6102eb60048036038101906102e69190612439565b610911565b6040516102f89190612b88565b60405180910390f35b61031b6004803603810190610316919061249e565b6109e1565b005b610325610b8f565b6040516103329190612b88565b60405180910390f35b610343610b95565b005b61035f600480360381019061035a9190612552565b610d68565b005b610369610ef3565b005b61038560048036038101906103809190612552565b610f23565b60405161039594939291906129e3565b60405180910390f35b6103b860048036038101906103b39190612439565b610f80565b6040516103c59190612b88565b60405180910390f35b6103e860048036038101906103e39190612439565b610fc9565b005b61040460048036038101906103ff91906125e0565b6110b6565b005b61040e61115f565b60405161041b9190612968565b60405180910390f35b61042c611185565b6040516104399190612b88565b60405180910390f35b61045c600480360381019061045791906125a4565b61118b565b60405161046a929190612ba3565b60405180910390f35b61047b6111bc565b6040516104889190612968565b60405180910390f35b6104ab60048036038101906104a691906124da565b6111e2565b005b6104b561144f565b005b6104d160048036038101906104cc9190612439565b6115e5565b6040516104de9190612b88565b60405180910390f35b61050160048036038101906104fc9190612439565b6115fd565b60405161050e9190612b88565b60405180910390f35b610531600480360381019061052c9190612439565b6118b7565b005b61054d6004803603810190610548919061249e565b611a05565b005b61056960048036038101906105649190612439565b611bea565b005b61058560048036038101906105809190612439565b611c06565b6040516105929190612b88565b60405180910390f35b6105b560048036038101906105b09190612462565b611c69565b6040516105c29190612b88565b60405180910390f35b6000600480549050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b60008061060f84610911565b90506006600082815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015491505092915050565b600061067982610911565b905060006006600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414806106fb57506000600482815481106106e757fe5b906000526020600020906004020160010154145b1561070657506107d7565b60006004828154811061071557fe5b9060005260206000209060040201905060006006600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061078283610d68565b60006107ac826001015461079e84600001548660030154611e67565b611e9590919063ffffffff16565b90506107c082600001548460030154611e67565b82600101819055506107d23382611ee5565b505050505b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086090612ac8565b60405180910390fd5b801561087857610877610ef3565b5b600061088384610911565b90506108ca836108bc6004848154811061089957fe5b906000526020600020906004020160010154600854611e9590919063ffffffff16565b61205b90919063ffffffff16565b60088190555082600482815481106108de57fe5b90600052602060002090600402016001018190555050505050565b60056020528060005260406000206000915090505481565b6000816000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098d90612ae8565b60405180910390fd5b6001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403915050919050565b60006109ec83610911565b90506000600482815481106109fd57fe5b9060005260206000209060040201905060006006600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610a6a83610d68565b600081600001541115610aaf576000610aa18260010154610a9384600001548660030154611e67565b611e9590919063ffffffff16565b9050610aad3382611ee5565b505b610b003330868560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166120b0909392919063ffffffff16565b610b1784826000015461205b90919063ffffffff16565b8160000181905550610b3181600001548360030154611e67565b8160010181905550823373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1586604051610b809190612b88565b60405180910390a35050505050565b60095481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1c90612a28565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060048281548110610d7757fe5b9060005260206000209060040201905080600201544311610d985750610ef0565b60008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610df79190612968565b60206040518083038186803b158015610e0f57600080fd5b505afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e47919061257b565b90506000811415610e62574382600201819055505050610ef0565b6000610eb9600854610eab8560010154610e9d600354610e8f896002015443611e9590919063ffffffff16565b61213990919063ffffffff16565b61213990919063ffffffff16565b6121a990919063ffffffff16565b9050610edb610ec882846121ff565b846003015461205b90919063ffffffff16565b83600301819055504383600201819055505050505b50565b6000600480549050905060008090505b81811015610f1f57610f1481610d68565b806001019050610f03565b5050565b60048181548110610f3057fe5b90600052602060002090600402016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905084565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610fd482610911565b9050600060048281548110610fe557fe5b9060005260206000209060040201905060006006600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061109c3382600001548460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122369092919063ffffffff16565b600081600001819055506000816001018190555050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c90612ac8565b60405180910390fd5b801561115457611153610ef3565b5b816003819055505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b6006602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b826000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125c90612b48565b60405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb90612ac8565b60405180910390fd5b811561130357611302610ef3565b5b6000600954431161131657600954611318565b435b905061132f8460085461205b90919063ffffffff16565b600881905550600460405180608001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018381526020016000815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301555050600480549050600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b60006004805490509050600080905060008090505b828110156115d65760006006600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414806114ec57506000600482815481106114d857fe5b906000526020600020906004020160010154145b156114f6576115cb565b60006004828154811061150557fe5b9060005260206000209060040201905060006006600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061157283610d68565b6115ac61159d826001015461158f84600001548660030154611e67565b611e9590919063ffffffff16565b8561205b90919063ffffffff16565b93506115c081600001548360030154611e67565b816001018190555050505b806001019050611464565b506115e13382611ee5565b5050565b60076020528060005260406000206000915090505481565b6000806004805490509050600080905060008090505b828110156118ac5760006006600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154148061169b575060006004828154811061168757fe5b906000526020600020906004020160010154145b156116a5576118a1565b6000600482815481106116b457fe5b9060005260206000209060040201905060006006600084815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260030154905060008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117809190612968565b60206040518083038186803b15801561179857600080fd5b505afa1580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d0919061257b565b90508360020154431180156117e6575060008114155b1561186457600061184260085461183487600101546118266003546118188b6002015443611e9590919063ffffffff16565b61213990919063ffffffff16565b61213990919063ffffffff16565b6121a990919063ffffffff16565b905061186061185182846121ff565b8461205b90919063ffffffff16565b9250505b61189a61188b846001015461187d866000015486611e67565b611e9590919063ffffffff16565b8761205b90919063ffffffff16565b9550505050505b806001019050611613565b508092505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193d90612ac8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6260405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611a1083610911565b9050600060048281548110611a2157fe5b9060005260206000209060040201905060006006600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508381600001541015611acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac390612aa8565b60405180910390fd5b611ad583610d68565b6000611aff8260010154611af184600001548660030154611e67565b611e9590919063ffffffff16565b9050611b0b3382611ee5565b611b22858360000154611e9590919063ffffffff16565b8260000181905550611b3c82600001548460030154611e67565b8260010181905550611b9333868560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122369092919063ffffffff16565b833373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56887604051611bda9190612b88565b60405180910390a3505050505050565b6000611bf68233610603565b9050611c028282611a05565b5050565b600080611c1283610911565b9050600060048281548110611c2357fe5b90600052602060002090600402019050611c60600854611c52836001015460035461213990919063ffffffff16565b6121a990919063ffffffff16565b92505050919050565b600080611c7584610911565b9050600060048281548110611c8657fe5b9060005260206000209060040201905060006006600084815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260030154905060008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d529190612968565b60206040518083038186803b158015611d6a57600080fd5b505afa158015611d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da2919061257b565b9050836002015443118015611db8575060008114155b15611e36576000611e14600854611e068760010154611df8600354611dea8b6002015443611e9590919063ffffffff16565b61213990919063ffffffff16565b61213990919063ffffffff16565b6121a990919063ffffffff16565b9050611e32611e2382846121ff565b8461205b90919063ffffffff16565b9250505b611e5a8360010154611e4c856000015485611e67565b611e9590919063ffffffff16565b9550505050505092915050565b6000670de0b6b3a7640000611e85838561213990919063ffffffff16565b81611e8c57fe5b04905092915050565b600082821115611eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed190612a88565b60405180910390fd5b818303905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321670f2283836040518363ffffffff1660e01b8152600401611f429291906129ba565b600060405180830381600087803b158015611f5c57600080fd5b505af1158015611f70573d6000803e3d6000fd5b50505050611fc681600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205b90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d48260405161204f9190612b88565b60405180910390a25050565b6000808284019050838110156120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d90612b08565b60405180910390fd5b8091505092915050565b612133846323b872dd60e01b8585856040516024016120d193929190612983565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122bc565b50505050565b60008083141561214c57600090506121a3565b600082840290508284828161215d57fe5b041461219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219590612b68565b60405180910390fd5b809150505b92915050565b60008082116121ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e490612a68565b60405180910390fd5b8183816121f657fe5b04905092915050565b600061222e82612220670de0b6b3a76400008661213990919063ffffffff16565b6121a990919063ffffffff16565b905092915050565b6122b78363a9059cbb60e01b84846040516024016122559291906129ba565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122bc565b505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516122e59190612951565b6000604051808303816000865af19150503d8060008114612322576040519150601f19603f3d011682016040523d82523d6000602084013e612327565b606091505b50915091508161236c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236390612a48565b60405180910390fd5b6000815111156123ca578080602001905181019061238a9190612529565b6123c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c090612b28565b60405180910390fd5b5b50505050565b6000813590506123df81612c6e565b92915050565b6000813590506123f481612c85565b92915050565b60008151905061240981612c85565b92915050565b60008135905061241e81612c9c565b92915050565b60008151905061243381612c9c565b92915050565b60006020828403121561244b57600080fd5b6000612459848285016123d0565b91505092915050565b6000806040838503121561247557600080fd5b6000612483858286016123d0565b9250506020612494858286016123d0565b9150509250929050565b600080604083850312156124b157600080fd5b60006124bf858286016123d0565b92505060206124d08582860161240f565b9150509250929050565b6000806000606084860312156124ef57600080fd5b60006124fd868287016123d0565b935050602061250e8682870161240f565b925050604061251f868287016123e5565b9150509250925092565b60006020828403121561253b57600080fd5b6000612549848285016123fa565b91505092915050565b60006020828403121561256457600080fd5b60006125728482850161240f565b91505092915050565b60006020828403121561258d57600080fd5b600061259b84828501612424565b91505092915050565b600080604083850312156125b757600080fd5b60006125c58582860161240f565b92505060206125d6858286016123d0565b9150509250929050565b600080604083850312156125f357600080fd5b60006126018582860161240f565b9250506020612612858286016123e5565b9150509250929050565b61262581612bf3565b82525050565b600061263682612bcc565b6126408185612bd7565b9350612650818560208601612c3b565b80840191505092915050565b6000612669600d83612be2565b91507f494e56414c49445f434c41494d000000000000000000000000000000000000006000830152602082019050919050565b60006126a9602083612be2565b91507f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646000830152602082019050919050565b60006126e9600e83612be2565b91507f4449564944494e475f4552524f520000000000000000000000000000000000006000830152602082019050919050565b6000612729600983612be2565b91507f5355425f4552524f5200000000000000000000000000000000000000000000006000830152602082019050919050565b6000612769601183612be2565b91507f776974686472617720746f6f206d7563680000000000000000000000000000006000830152602082019050919050565b60006127a9600983612be2565b91507f4e4f545f4f574e455200000000000000000000000000000000000000000000006000830152602082019050919050565b60006127e9601283612be2565b91507f4c5020546f6b656e204e6f7420457869737400000000000000000000000000006000830152602082019050919050565b6000612829600983612be2565b91507f4144445f4552524f5200000000000000000000000000000000000000000000006000830152602082019050919050565b6000612869602a83612be2565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b60006128cf601683612be2565b91507f4c5020546f6b656e20416c7265616479204578697374000000000000000000006000830152602082019050919050565b600061290f600983612be2565b91507f4d554c5f4552524f5200000000000000000000000000000000000000000000006000830152602082019050919050565b61294b81612c31565b82525050565b600061295d828461262b565b915081905092915050565b600060208201905061297d600083018461261c565b92915050565b6000606082019050612998600083018661261c565b6129a5602083018561261c565b6129b26040830184612942565b949350505050565b60006040820190506129cf600083018561261c565b6129dc6020830184612942565b9392505050565b60006080820190506129f8600083018761261c565b612a056020830186612942565b612a126040830185612942565b612a1f6060830184612942565b95945050505050565b60006020820190508181036000830152612a418161265c565b9050919050565b60006020820190508181036000830152612a618161269c565b9050919050565b60006020820190508181036000830152612a81816126dc565b9050919050565b60006020820190508181036000830152612aa18161271c565b9050919050565b60006020820190508181036000830152612ac18161275c565b9050919050565b60006020820190508181036000830152612ae18161279c565b9050919050565b60006020820190508181036000830152612b01816127dc565b9050919050565b60006020820190508181036000830152612b218161281c565b9050919050565b60006020820190508181036000830152612b418161285c565b9050919050565b60006020820190508181036000830152612b61816128c2565b9050919050565b60006020820190508181036000830152612b8181612902565b9050919050565b6000602082019050612b9d6000830184612942565b92915050565b6000604082019050612bb86000830185612942565b612bc56020830184612942565b9392505050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000612bfe82612c11565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015612c59578082015181840152602081019050612c3e565b83811115612c68576000848401525b50505050565b612c7781612bf3565b8114612c8257600080fd5b50565b612c8e81612c05565b8114612c9957600080fd5b50565b612ca581612c31565b8114612cb057600080fd5b5056fea26469706673582212206c5ef2855065d11ff39309bb4d76e329941b85d4478ba56a6ef0537c8597a10564736f6c63430006090033

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

00000000000000000000000069eb4fa4a2fbd498c257c57ea8b7655a2559a5810000000000000000000000000000000000000000000000000000000000c8a794

-----Decoded View---------------
Arg [0] : _dodoToken (address): 0x69Eb4FA4a2fbd498C257C57Ea8b7655a2559A581
Arg [1] : _startBlock (uint256): 13150100

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000069eb4fa4a2fbd498c257c57ea8b7655a2559a581
Arg [1] : 0000000000000000000000000000000000000000000000000000000000c8a794


Deployed ByteCode Sourcemap

10067:11992:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12756:96;;;:::i;:::-;;;;;;;;;;;;;;;;306:22;;;:::i;:::-;;;;;;;;;;;;;;;;11863:34;;;:::i;:::-;;;;;;;;;;;;;;;;13010:183;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;20400:617;;;;;;;;;;;;;;;;:::i;:::-;;13934:390;;;;;;;;;;;;;;;;:::i;:::-;;11538:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12860:142;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;18307:754;;;;;;;;;;;;;;;;:::i;:::-;;11954:25;;;:::i;:::-;;;;;;;;;;;;;;;;1097:230;;;:::i;:::-;;17466:719;;;;;;;;;;;;;;;;:::i;:::-;;17209:181;;;:::i;:::-;;11504:27;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16701:121;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;20048:344;;;;;;;;;;;;;;;;:::i;:::-;;14332:197;;;;;;;;;;;;;;;;:::i;:::-;;335:26;;;:::i;:::-;;;;;;;;;;;;;;;;11441:27;;;:::i;:::-;;;;;;;;;;;;;;;;11646:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;11404:30;;;:::i;:::-;;;;;;;;;;;;;;;;13245:681;;;;;;;;;;;;;;;;:::i;:::-;;21025:749;;;:::i;:::-;;11717:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;15459:1234;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;924:165;;;;;;;;;;;;;;;;:::i;:::-;;19069:741;;;;;;;;;;;;;;;;:::i;:::-;;19818:159;;;;;;;;;;;;;;;;:::i;:::-;;16830:247;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14586:865;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12756:96;12801:7;12828:9;:16;;;;12821:23;;12756:96;:::o;306:22::-;;;;;;;;;;;;;:::o;11863:34::-;;;;:::o;13010:183::-;13090:7;13110:11;13124:16;13131:8;13124:6;:16::i;:::-;13110:30;;13158:8;:13;13167:3;13158:13;;;;;;;;;;;:20;13172:5;13158:20;;;;;;;;;;;;;;;:27;;;13151:34;;;13010:183;;;;:::o;20400:617::-;20451:11;20465:16;20472:8;20465:6;:16::i;:::-;20451:30;;20532:1;20496:8;:13;20505:3;20496:13;;;;;;;;;;;:25;20510:10;20496:25;;;;;;;;;;;;;;;:32;;;:37;:71;;;;20566:1;20537:9;20547:3;20537:14;;;;;;;;;;;;;;;;;;:25;;;:30;20496:71;20492:122;;;20584:7;;;20492:122;20624:21;20648:9;20658:3;20648:14;;;;;;;;;;;;;;;;;;20624:38;;20673:21;20697:8;:13;20706:3;20697:13;;;;;;;;;;;:25;20711:10;20697:25;;;;;;;;;;;;;;;20673:49;;20733:15;20744:3;20733:10;:15::i;:::-;20759;20777:100;20851:4;:15;;;20777:55;20798:4;:11;;;20811:4;:20;;;20777;:55::i;:::-;:59;;:100;;;;:::i;:::-;20759:118;;20906:55;20927:4;:11;;;20940:4;:20;;;20906;:55::i;:::-;20888:4;:15;;:73;;;;20972:37;20989:10;21001:7;20972:16;:37::i;:::-;20400:617;;;;;;:::o;13934:390::-;702:7;;;;;;;;;;;688:21;;:10;:21;;;680:43;;;;;;;;;;;;;;;;;;;;;;14077:11:::1;14073:61;;;14105:17;:15;:17::i;:::-;14073:61;14144:11;14158:16;14165:8;14158:6;:16::i;:::-;14144:30;;14203:63;14254:11;14203:46;14223:9;14233:3;14223:14;;;;;;;;;;;;;;;;;;:25;;;14203:15;;:19;;:46;;;;:::i;:::-;:50;;:63;;;;:::i;:::-;14185:15;:81;;;;14305:11;14277:9;14287:3;14277:14;;;;;;;;;;;;;;;;;;:25;;:39;;;;734:1;13934:390:::0;;;:::o;11538:50::-;;;;;;;;;;;;;;;;;:::o;12860:142::-;12938:7;12919:8;12516:1;12489:15;:24;12505:7;12489:24;;;;;;;;;;;;;;;;:28;12481:59;;;;;;;;;;;;;;;;;;;;;;12993:1:::1;12965:15;:25;12981:8;12965:25;;;;;;;;;;;;;;;;:29;12958:36;;12860:142:::0;;;;:::o;18307:754::-;18377:11;18391:16;18398:8;18391:6;:16::i;:::-;18377:30;;18418:21;18442:9;18452:3;18442:14;;;;;;;;;;;;;;;;;;18418:38;;18467:21;18491:8;:13;18500:3;18491:13;;;;;;;;;;;:25;18505:10;18491:25;;;;;;;;;;;;;;;18467:49;;18527:15;18538:3;18527:10;:15::i;:::-;18571:1;18557:4;:11;;;:15;18553:226;;;18589:15;18607:108;18685:4;:15;;;18607:55;18628:4;:11;;;18641:4;:20;;;18607;:55::i;:::-;:59;;:108;;;;:::i;:::-;18589:126;;18730:37;18747:10;18759:7;18730:16;:37::i;:::-;18553:226;;18789:82;18835:10;18856:4;18863:7;18796:4;:12;;;;;;;;;;;;18789:37;;;;:82;;;;;;:::i;:::-;18896:24;18912:7;18896:4;:11;;;:15;;:24;;;;:::i;:::-;18882:4;:11;;:38;;;;18949:55;18970:4;:11;;;18983:4;:20;;;18949;:55::i;:::-;18931:4;:15;;:73;;;;19040:3;19028:10;19020:33;;;19045:7;19020:33;;;;;;;;;;;;;;;18307:754;;;;;:::o;11954:25::-;;;;:::o;1097:230::-;1165:11;;;;;;;;;;;1151:25;;:10;:25;;;1143:51;;;;;;;;;;;;;;;;;;;;;;1240:11;;;;;;;;;;;1210:42;;1231:7;;;;;;;;;;;1210:42;;;;;;;;;;;;1273:11;;;;;;;;;;;1263:7;;:21;;;;;;;;;;;;;;;;;;1317:1;1295:11;;:24;;;;;;;;;;;;;;;;;;1097:230::o;17466:719::-;17518:21;17542:9;17552:4;17542:15;;;;;;;;;;;;;;;;;;17518:39;;17588:4;:20;;;17572:12;:36;17568:75;;17625:7;;;17568:75;17653:16;17679:4;:12;;;;;;;;;;;;17672:30;;;17711:4;17672:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17653:64;;17744:1;17732:8;:13;17728:102;;;17785:12;17762:4;:20;;:35;;;;17812:7;;;;17728:102;17840:18;17861:168;18013:15;;17861:133;17978:4;:15;;;17861:98;17946:12;;17861:66;17906:4;:20;;;17861:26;:44;;:66;;;;:::i;:::-;:84;;:98;;;;:::i;:::-;:116;;:133;;;;:::i;:::-;:151;;:168;;;;:::i;:::-;17840:189;;18063:68;18088:42;18109:10;18121:8;18088:20;:42::i;:::-;18063:4;:20;;;:24;;:68;;;;:::i;:::-;18040:4;:20;;:91;;;;18165:12;18142:4;:20;;:35;;;;17466:719;;;;;:::o;17209:181::-;17254:14;17271:9;:16;;;;17254:33;;17303:11;17317:1;17303:15;;17298:85;17326:6;17320:3;:12;17298:85;;;17356:15;17367:3;17356:10;:15::i;:::-;17334:5;;;;;17298:85;;;;17209:181;:::o;11504:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16701:121::-;16766:7;16793:14;:21;16808:5;16793:21;;;;;;;;;;;;;;;;16786:28;;16701:121;;;:::o;20048:344::-;20111:11;20125:16;20132:8;20125:6;:16::i;:::-;20111:30;;20152:21;20176:9;20186:3;20176:14;;;;;;;;;;;;;;;;;;20152:38;;20201:21;20225:8;:13;20234:3;20225:13;;;;;;;;;;;:25;20239:10;20225:25;;;;;;;;;;;;;;;20201:49;;20261:67;20303:10;20316:4;:11;;;20268:4;:12;;;;;;;;;;;;20261:33;;;;:67;;;;;:::i;:::-;20353:1;20339:4;:11;;:15;;;;20383:1;20365:4;:15;;:19;;;;20048:344;;;;:::o;14332:197::-;702:7;;;;;;;;;;;688:21;;:10;:21;;;680:43;;;;;;;;;;;;;;;;;;;;;;14426:11:::1;14422:61;;;14454:17;:15;:17::i;:::-;14422:61;14508:13;14493:12;:28;;;;14332:197:::0;;:::o;335:26::-;;;;;;;;;;;;;:::o;11441:27::-;;;;:::o;11646:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11404:30::-;;;;;;;;;;;;;:::o;13245:681::-;13379:8;12657:1;12629:15;:24;12645:7;12629:24;;;;;;;;;;;;;;;;:29;12621:64;;;;;;;;;;;;;;;;;;;;;;702:7:::1;::::0;::::1;;;;;;;;;688:21;;:10;:21;;;680:43;;;;;;;;;;;;;;;;;;;;;;13414:11:::2;13410:61;;;13442:17;:15;:17::i;:::-;13410:61;13481:23;13522:10;;13507:12;:25;:53;;13550:10;;13507:53;;;13535:12;13507:53;13481:79;;13589:32;13609:11;13589:15;;:19;;:32;;;;:::i;:::-;13571:15;:50;;;;13632:9;13661:191;;;;;;;;13698:8;13661:191;;;;;;13737:11;13661:191;;;;13784:15;13661:191;;;;13835:1;13661:191;;::::0;13632:231:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13902:9;:16;;;;13874:15;:25;13890:8;13874:25;;;;;;;;;;;;;;;:44;;;;734:1;13245:681:::0;;;;:::o;21025:749::-;21063:14;21080:9;:16;;;;21063:33;;21107:15;21125:1;21107:19;;21142:11;21156:1;21142:15;;21137:582;21165:6;21159:3;:12;21137:582;;;21235:1;21199:8;:13;21208:3;21199:13;;;;;;;;;;;:25;21213:10;21199:25;;;;;;;;;;;;;;;:32;;;:37;:71;;;;21269:1;21240:9;21250:3;21240:14;;;;;;;;;;;;;;;;;;:25;;;:30;21199:71;21195:132;;;21291:8;;21195:132;21341:21;21365:9;21375:3;21365:14;;;;;;;;;;;;;;;;;;21341:38;;21394:21;21418:8;:13;21427:3;21418:13;;;;;;;;;;;:25;21432:10;21418:25;;;;;;;;;;;;;;;21394:49;;21458:15;21469:3;21458:10;:15::i;:::-;21498:121;21528:76;21588:4;:15;;;21528:55;21549:4;:11;;;21562:4;:20;;;21528;:55::i;:::-;:59;;:76;;;;:::i;:::-;21498:7;:11;;:121;;;;:::i;:::-;21488:131;;21652:55;21673:4;:11;;;21686:4;:20;;;21652;:55::i;:::-;21634:4;:15;;:73;;;;21137:582;;;21173:5;;;;;21137:582;;;;21729:37;21746:10;21758:7;21729:16;:37::i;:::-;21025:749;;:::o;11717:49::-;;;;;;;;;;;;;;;;;:::o;15459:1234::-;15526:7;15546:14;15563:9;:16;;;;15546:33;;15590:19;15612:1;15590:23;;15629:11;15643:1;15629:15;;15624:1033;15652:6;15646:3;:12;15624:1033;;;15717:1;15686:8;:13;15695:3;15686:13;;;;;;;;;;;:20;15700:5;15686:20;;;;;;;;;;;;;;;:27;;;:32;:66;;;;15751:1;15722:9;15732:3;15722:14;;;;;;;;;;;;;;;;;;:25;;;:30;15686:66;15682:127;;;15773:8;;15682:127;15823:21;15847:9;15857:3;15847:14;;;;;;;;;;;;;;;;;;15823:38;;15876:21;15900:8;:13;15909:3;15900:13;;;;;;;;;;;:20;15914:5;15900:20;;;;;;;;;;;;;;;15876:44;;15935:23;15961:4;:20;;;15935:46;;15996:16;16022:4;:12;;;;;;;;;;;;16015:30;;;16054:4;16015:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15996:64;;16094:4;:20;;;16079:12;:35;:52;;;;;16130:1;16118:8;:13;;16079:52;16075:422;;;16152:18;16173:208;16365:15;;16173:165;16322:4;:15;;;16173:122;16282:12;;16173:82;16234:4;:20;;;16173:34;:60;;:82;;;;:::i;:::-;:108;;:122;;;;:::i;:::-;:148;;:165;;;;:::i;:::-;:191;;:208;;;;:::i;:::-;16152:229;;16418:63;16438:42;16459:10;16471:8;16438:20;:42::i;:::-;16418:15;:19;;:63;;;;:::i;:::-;16400:81;;16075:422;;16525:120;16559:71;16614:4;:15;;;16559:50;16580:4;:11;;;16593:15;16559:20;:50::i;:::-;:54;;:71;;;;:::i;:::-;16525:11;:15;;:120;;;;:::i;:::-;16511:134;;15624:1033;;;;;15660:5;;;;;15624:1033;;;;16674:11;16667:18;;;;15459:1234;;;:::o;924:165::-;702:7;;;;;;;;;;;688:21;;:10;:21;;;680:43;;;;;;;;;;;;;;;;;;;;;;1039:8:::1;1004:44;;1030:7;::::0;::::1;;;;;;;;;1004:44;;;;;;;;;;;;1073:8;1059:11;;:22;;;;;;;;;;;;;;;;;;924:165:::0;:::o;19069:741::-;19140:11;19154:16;19161:8;19154:6;:16::i;:::-;19140:30;;19181:21;19205:9;19215:3;19205:14;;;;;;;;;;;;;;;;;;19181:38;;19230:21;19254:8;:13;19263:3;19254:13;;;;;;;;;;;:25;19268:10;19254:25;;;;;;;;;;;;;;;19230:49;;19313:7;19298:4;:11;;;:22;;19290:52;;;;;;;;;;;;;;;;;;;;;;19353:15;19364:3;19353:10;:15::i;:::-;19379;19397:100;19471:4;:15;;;19397:55;19418:4;:11;;;19431:4;:20;;;19397;:55::i;:::-;:59;;:100;;;;:::i;:::-;19379:118;;19508:37;19525:10;19537:7;19508:16;:37::i;:::-;19570:24;19586:7;19570:4;:11;;;:15;;:24;;;;:::i;:::-;19556:4;:11;;:38;;;;19623:55;19644:4;:11;;;19657:4;:20;;;19623;:55::i;:::-;19605:4;:15;;:73;;;;19689:63;19731:10;19744:7;19696:4;:12;;;;;;;;;;;;19689:33;;;;:63;;;;;:::i;:::-;19789:3;19777:10;19768:34;;;19794:7;19768:34;;;;;;;;;;;;;;;19069:741;;;;;;:::o;19818:159::-;19875:15;19893:38;19910:8;19920:10;19893:16;:38::i;:::-;19875:56;;19942:27;19951:8;19961:7;19942:8;:27::i;:::-;19818:159;;:::o;16830:247::-;16898:7;16918:11;16932:16;16939:8;16932:6;:16::i;:::-;16918:30;;16959:21;16983:9;16993:3;16983:14;;;;;;;;;;;;;;;;;;16959:38;;17015:54;17053:15;;17015:33;17032:4;:15;;;17015:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;17008:61;;;;16830:247;;;:::o;14586:865::-;14668:7;14688:11;14702:16;14709:8;14702:6;:16::i;:::-;14688:30;;14729:21;14753:9;14763:3;14753:14;;;;;;;;;;;;;;;;;;14729:38;;14778:21;14802:8;:13;14811:3;14802:13;;;;;;;;;;;:20;14816:5;14802:20;;;;;;;;;;;;;;;14778:44;;14833:23;14859:4;:20;;;14833:46;;14890:16;14916:4;:12;;;;;;;;;;;;14909:30;;;14948:4;14909:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14890:64;;14984:4;:20;;;14969:12;:35;:52;;;;;15020:1;15008:8;:13;;14969:52;14965:390;;;15038:18;15059:188;15231:15;;15059:149;15192:4;:15;;;15059:110;15156:12;;15059:74;15112:4;:20;;;15059:30;:52;;:74;;;;:::i;:::-;:96;;:110;;;;:::i;:::-;:132;;:149;;;;:::i;:::-;:171;;:188;;;;:::i;:::-;15038:209;;15280:63;15300:42;15321:10;15333:8;15300:20;:42::i;:::-;15280:15;:19;;:63;;;;:::i;:::-;15262:81;;14965:390;;15372:71;15427:4;:15;;;15372:50;15393:4;:11;;;15406:15;15372:20;:50::i;:::-;:54;;:71;;;;:::i;:::-;15365:78;;;;;;;14586:865;;;;:::o;3050:127::-;3118:7;3162:6;3145:13;3156:1;3145:6;:10;;:13;;;;:::i;:::-;:24;;;;;;3138:31;;3050:127;;;;:::o;2203:137::-;2261:7;2294:1;2289;:6;;2281:28;;;;;;;;;;;;;;;;;;;;;;2331:1;2327;:5;2320:12;;2203:137;;;;:::o;21818:238::-;21911:15;;;;;;;;;;;21894:40;;;21935:3;21940:7;21894:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21981:32;22005:7;21981:14;:19;21996:3;21981:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;21959:14;:19;21974:3;21959:19;;;;;;;;;;;;;;;:54;;;;22035:3;22029:19;;;22040:7;22029:19;;;;;;;;;;;;;;;21818:238;;:::o;2348:161::-;2406:7;2426:9;2442:1;2438;:5;2426:17;;2467:1;2462;:6;;2454:28;;;;;;;;;;;;;;;;;;;;;;2500:1;2493:8;;;2348:161;;;;:::o;7133:285::-;7277:133;7311:5;7354:27;;;7383:4;7389:2;7393:5;7331:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7277:19;:133::i;:::-;7133:285;;;;:::o;1524:226::-;1582:7;1611:1;1606;:6;1602:47;;;1636:1;1629:8;;;;1602:47;1661:9;1677:1;1673;:5;1661:17;;1706:1;1701;1697;:5;;;;;;:10;1689:32;;;;;;;;;;;;;;;;;;;;;;1741:1;1734:8;;;1524:226;;;;;:::o;1758:141::-;1816:7;1848:1;1844;:5;1836:32;;;;;;;;;;;;;;;;;;;;;;1890:1;1886;:5;;;;;;1879:12;;1758:141;;;;:::o;3324:128::-;3392:7;3419:25;3442:1;3419:18;3430:6;3419;:10;;:18;;;;:::i;:::-;:22;;:25;;;;:::i;:::-;3412:32;;3324:128;;;;:::o;6914:211::-;7031:86;7051:5;7081:23;;;7106:2;7110:5;7058:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7031:19;:86::i;:::-;6914:211;;;:::o;8487:1046::-;9147:12;9161:23;9196:5;9188:19;;9208:4;9188:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9146:67;;;;9232:7;9224:52;;;;;;;;;;;;;;;;;;;;;;9313:1;9293:10;:17;:21;9289:237;;;9448:10;9437:30;;;;;;;;;;;;;;9429:85;;;;;;;;;;;;;;;;;;;;;;9289:237;8487:1046;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:124;;219:6;206:20;197:29;;231:30;255:5;231:30;;;191:75;;;;;273:128;;354:6;348:13;339:22;;366:30;390:5;366:30;;;333:68;;;;;408:130;;488:6;475:20;466:29;;500:33;527:5;500:33;;;460:78;;;;;545:134;;629:6;623:13;614:22;;641:33;668:5;641:33;;;608:71;;;;;686:241;;790:2;778:9;769:7;765:23;761:32;758:2;;;806:1;803;796:12;758:2;841:1;858:53;903:7;894:6;883:9;879:22;858:53;;;848:63;;820:97;752:175;;;;;934:366;;;1055:2;1043:9;1034:7;1030:23;1026:32;1023:2;;;1071:1;1068;1061:12;1023:2;1106:1;1123:53;1168:7;1159:6;1148:9;1144:22;1123:53;;;1113:63;;1085:97;1213:2;1231:53;1276:7;1267:6;1256:9;1252:22;1231:53;;;1221:63;;1192:98;1017:283;;;;;;1307:366;;;1428:2;1416:9;1407:7;1403:23;1399:32;1396:2;;;1444:1;1441;1434:12;1396:2;1479:1;1496:53;1541:7;1532:6;1521:9;1517:22;1496:53;;;1486:63;;1458:97;1586:2;1604:53;1649:7;1640:6;1629:9;1625:22;1604:53;;;1594:63;;1565:98;1390:283;;;;;;1680:485;;;;1815:2;1803:9;1794:7;1790:23;1786:32;1783:2;;;1831:1;1828;1821:12;1783:2;1866:1;1883:53;1928:7;1919:6;1908:9;1904:22;1883:53;;;1873:63;;1845:97;1973:2;1991:53;2036:7;2027:6;2016:9;2012:22;1991:53;;;1981:63;;1952:98;2081:2;2099:50;2141:7;2132:6;2121:9;2117:22;2099:50;;;2089:60;;2060:95;1777:388;;;;;;2172:257;;2284:2;2272:9;2263:7;2259:23;2255:32;2252:2;;;2300:1;2297;2290:12;2252:2;2335:1;2352:61;2405:7;2396:6;2385:9;2381:22;2352:61;;;2342:71;;2314:105;2246:183;;;;;2436:241;;2540:2;2528:9;2519:7;2515:23;2511:32;2508:2;;;2556:1;2553;2546:12;2508:2;2591:1;2608:53;2653:7;2644:6;2633:9;2629:22;2608:53;;;2598:63;;2570:97;2502:175;;;;;2684:263;;2799:2;2787:9;2778:7;2774:23;2770:32;2767:2;;;2815:1;2812;2805:12;2767:2;2850:1;2867:64;2923:7;2914:6;2903:9;2899:22;2867:64;;;2857:74;;2829:108;2761:186;;;;;2954:366;;;3075:2;3063:9;3054:7;3050:23;3046:32;3043:2;;;3091:1;3088;3081:12;3043:2;3126:1;3143:53;3188:7;3179:6;3168:9;3164:22;3143:53;;;3133:63;;3105:97;3233:2;3251:53;3296:7;3287:6;3276:9;3272:22;3251:53;;;3241:63;;3212:98;3037:283;;;;;;3327:360;;;3445:2;3433:9;3424:7;3420:23;3416:32;3413:2;;;3461:1;3458;3451:12;3413:2;3496:1;3513:53;3558:7;3549:6;3538:9;3534:22;3513:53;;;3503:63;;3475:97;3603:2;3621:50;3663:7;3654:6;3643:9;3639:22;3621:50;;;3611:60;;3582:95;3407:280;;;;;;3694:113;3777:24;3795:5;3777:24;;;3772:3;3765:37;3759:48;;;3814:356;;3942:38;3974:5;3942:38;;;3992:88;4073:6;4068:3;3992:88;;;3985:95;;4085:52;4130:6;4125:3;4118:4;4111:5;4107:16;4085:52;;;4158:6;4153:3;4149:16;4142:23;;3922:248;;;;;;4178:313;;4338:67;4402:2;4397:3;4338:67;;;4331:74;;4438:15;4434:1;4429:3;4425:11;4418:36;4482:2;4477:3;4473:12;4466:19;;4324:167;;;;4500:332;;4660:67;4724:2;4719:3;4660:67;;;4653:74;;4760:34;4756:1;4751:3;4747:11;4740:55;4823:2;4818:3;4814:12;4807:19;;4646:186;;;;4841:314;;5001:67;5065:2;5060:3;5001:67;;;4994:74;;5101:16;5097:1;5092:3;5088:11;5081:37;5146:2;5141:3;5137:12;5130:19;;4987:168;;;;5164:308;;5324:66;5388:1;5383:3;5324:66;;;5317:73;;5423:11;5419:1;5414:3;5410:11;5403:32;5463:2;5458:3;5454:12;5447:19;;5310:162;;;;5481:317;;5641:67;5705:2;5700:3;5641:67;;;5634:74;;5741:19;5737:1;5732:3;5728:11;5721:40;5789:2;5784:3;5780:12;5773:19;;5627:171;;;;5807:308;;5967:66;6031:1;6026:3;5967:66;;;5960:73;;6066:11;6062:1;6057:3;6053:11;6046:32;6106:2;6101:3;6097:12;6090:19;;5953:162;;;;6124:318;;6284:67;6348:2;6343:3;6284:67;;;6277:74;;6384:20;6380:1;6375:3;6371:11;6364:41;6433:2;6428:3;6424:12;6417:19;;6270:172;;;;6451:308;;6611:66;6675:1;6670:3;6611:66;;;6604:73;;6710:11;6706:1;6701:3;6697:11;6690:32;6750:2;6745:3;6741:12;6734:19;;6597:162;;;;6768:379;;6928:67;6992:2;6987:3;6928:67;;;6921:74;;7028:34;7024:1;7019:3;7015:11;7008:55;7097:12;7092:2;7087:3;7083:12;7076:34;7138:2;7133:3;7129:12;7122:19;;6914:233;;;;7156:322;;7316:67;7380:2;7375:3;7316:67;;;7309:74;;7416:24;7412:1;7407:3;7403:11;7396:45;7469:2;7464:3;7460:12;7453:19;;7302:176;;;;7487:308;;7647:66;7711:1;7706:3;7647:66;;;7640:73;;7746:11;7742:1;7737:3;7733:11;7726:32;7786:2;7781:3;7777:12;7770:19;;7633:162;;;;7803:113;7886:24;7904:5;7886:24;;;7881:3;7874:37;7868:48;;;7923:271;;8076:93;8165:3;8156:6;8076:93;;;8069:100;;8186:3;8179:10;;8057:137;;;;;8201:222;;8328:2;8317:9;8313:18;8305:26;;8342:71;8410:1;8399:9;8395:17;8386:6;8342:71;;;8299:124;;;;;8430:444;;8613:2;8602:9;8598:18;8590:26;;8627:71;8695:1;8684:9;8680:17;8671:6;8627:71;;;8709:72;8777:2;8766:9;8762:18;8753:6;8709:72;;;8792;8860:2;8849:9;8845:18;8836:6;8792:72;;;8584:290;;;;;;;8881:333;;9036:2;9025:9;9021:18;9013:26;;9050:71;9118:1;9107:9;9103:17;9094:6;9050:71;;;9132:72;9200:2;9189:9;9185:18;9176:6;9132:72;;;9007:207;;;;;;9221:556;;9432:3;9421:9;9417:19;9409:27;;9447:71;9515:1;9504:9;9500:17;9491:6;9447:71;;;9529:72;9597:2;9586:9;9582:18;9573:6;9529:72;;;9612;9680:2;9669:9;9665:18;9656:6;9612:72;;;9695;9763:2;9752:9;9748:18;9739:6;9695:72;;;9403:374;;;;;;;;9784:416;;9984:2;9973:9;9969:18;9961:26;;10034:9;10028:4;10024:20;10020:1;10009:9;10005:17;9998:47;10059:131;10185:4;10059:131;;;10051:139;;9955:245;;;;10207:416;;10407:2;10396:9;10392:18;10384:26;;10457:9;10451:4;10447:20;10443:1;10432:9;10428:17;10421:47;10482:131;10608:4;10482:131;;;10474:139;;10378:245;;;;10630:416;;10830:2;10819:9;10815:18;10807:26;;10880:9;10874:4;10870:20;10866:1;10855:9;10851:17;10844:47;10905:131;11031:4;10905:131;;;10897:139;;10801:245;;;;11053:416;;11253:2;11242:9;11238:18;11230:26;;11303:9;11297:4;11293:20;11289:1;11278:9;11274:17;11267:47;11328:131;11454:4;11328:131;;;11320:139;;11224:245;;;;11476:416;;11676:2;11665:9;11661:18;11653:26;;11726:9;11720:4;11716:20;11712:1;11701:9;11697:17;11690:47;11751:131;11877:4;11751:131;;;11743:139;;11647:245;;;;11899:416;;12099:2;12088:9;12084:18;12076:26;;12149:9;12143:4;12139:20;12135:1;12124:9;12120:17;12113:47;12174:131;12300:4;12174:131;;;12166:139;;12070:245;;;;12322:416;;12522:2;12511:9;12507:18;12499:26;;12572:9;12566:4;12562:20;12558:1;12547:9;12543:17;12536:47;12597:131;12723:4;12597:131;;;12589:139;;12493:245;;;;12745:416;;12945:2;12934:9;12930:18;12922:26;;12995:9;12989:4;12985:20;12981:1;12970:9;12966:17;12959:47;13020:131;13146:4;13020:131;;;13012:139;;12916:245;;;;13168:416;;13368:2;13357:9;13353:18;13345:26;;13418:9;13412:4;13408:20;13404:1;13393:9;13389:17;13382:47;13443:131;13569:4;13443:131;;;13435:139;;13339:245;;;;13591:416;;13791:2;13780:9;13776:18;13768:26;;13841:9;13835:4;13831:20;13827:1;13816:9;13812:17;13805:47;13866:131;13992:4;13866:131;;;13858:139;;13762:245;;;;14014:416;;14214:2;14203:9;14199:18;14191:26;;14264:9;14258:4;14254:20;14250:1;14239:9;14235:17;14228:47;14289:131;14415:4;14289:131;;;14281:139;;14185:245;;;;14437:222;;14564:2;14553:9;14549:18;14541:26;;14578:71;14646:1;14635:9;14631:17;14622:6;14578:71;;;14535:124;;;;;14666:333;;14821:2;14810:9;14806:18;14798:26;;14835:71;14903:1;14892:9;14888:17;14879:6;14835:71;;;14917:72;14985:2;14974:9;14970:18;14961:6;14917:72;;;14792:207;;;;;;15006:121;;15099:5;15093:12;15083:22;;15064:63;;;;15135:144;;15270:3;15255:18;;15248:31;;;;;15288:163;;15403:6;15398:3;15391:19;15440:4;15435:3;15431:14;15416:29;;15384:67;;;;;15459:91;;15521:24;15539:5;15521:24;;;15510:35;;15504:46;;;;15557:85;;15630:5;15623:13;15616:21;15605:32;;15599:43;;;;15649:121;;15722:42;15715:5;15711:54;15700:65;;15694:76;;;;15777:72;;15839:5;15828:16;;15822:27;;;;15857:268;15922:1;15929:101;15943:6;15940:1;15937:13;15929:101;;;16019:1;16014:3;16010:11;16004:18;16000:1;15995:3;15991:11;15984:39;15965:2;15962:1;15958:10;15953:15;;15929:101;;;16045:6;16042:1;16039:13;16036:2;;;16110:1;16101:6;16096:3;16092:16;16085:27;16036:2;15906:219;;;;;16133:117;16202:24;16220:5;16202:24;;;16195:5;16192:35;16182:2;;16241:1;16238;16231:12;16182:2;16176:74;;16257:111;16323:21;16338:5;16323:21;;;16316:5;16313:32;16303:2;;16359:1;16356;16349:12;16303:2;16297:71;;16375:117;16444:24;16462:5;16444:24;;;16437:5;16434:35;16424:2;;16483:1;16480;16473:12;16424:2;16418:74;

Metadata Hash

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