Contract 0x86A327715d707BCa24983b1145D1F6c40C5d4A74

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0x6d24ae8e266a89ac77f2300d9df641d2f81c40437dec996d6d60cc461aa0497881971832021-06-11 6:39:141 day 4 hrs ago0x0f7149ad75f2045c99d0f5ce8ee3723d646a7bc0 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364315
0x259e9b8312ffeacbcb7e938427cfcee8d2b1c2eeae0e9141934ae81b264453c581848282021-06-10 20:20:361 day 14 hrs ago0xa189eb010b66b88405fdaab17402c8b3334be8d6 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364255
0x7ade905fc7ef1469cfa221cf5e7db0fa70968560845067864b5b1622b1be523181793602021-06-10 15:44:421 day 19 hrs ago0xd38307a1f7472785851cb82f79d62ae8d7032288 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364315
0x0e6244dcecdd20740db771ab8fee5edffca4a1b99bc48e617e7683fea5f663f781317102021-06-08 23:53:103 days 11 hrs ago0x38ab0fde4f152bdbc9e8ac44f0e9f56f092fbe79 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364315
0xb189569af4d93a07e7c668478f7221af7711a0750842f3bc76d7f91a28d65fbc81269862021-06-08 19:56:033 days 15 hrs ago0x8a2e711b5535791bf70a86594ca6f5fefa527463 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364255
0x31b285af4950104bdedc7ccefaa9e808e0d83defb35b29bbcf3d5e7f9a928c5d80793702021-06-07 4:11:245 days 6 hrs ago0xb4a81bd3037ff444b9eed9e7162b1645678f38fd IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000439315
0xc50da54b9f61efa0f8525783b381abc3cf93794ac766c60afc077d8baceed9f580452822021-06-05 23:43:496 days 11 hrs ago0xfca3e0b210a08d588d20ad3978d1cfc4dbee3e79 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364255
0xa402886319c540f497e7d10d188ce611c00b47a82d6fad2df5bd0620e98f8eb779886312021-06-04 0:24:028 days 10 hrs ago0xa30bb56e45e9aff3b785af70a7472d5b791f1c04 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364255
0x07340e5b620d4183c49944065eacf70d1dc068199370e6da9742a3a8ce3f96b979683592021-06-03 7:26:209 days 3 hrs ago0xd0fbbf7e5d7fbba3b2afd608415ada965a573481 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000289315
0x7f7a6a19b90bec91a9fa2e91726764f6c643ed404189b9693e97750b40b7ff2a79376542021-06-02 5:46:3510 days 5 hrs ago0x698fa6437475f3f86df33ea0cb612ad529954811 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364255
0x19bef4c3fe93df177e6c5891120f95ca45feb5fa2162621e3ec6f43adff2861179186022021-06-01 13:52:1910 days 21 hrs ago0x33eb3465d687d80cf9e3c85e6a9016d1471a9154 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000363805
0x7f16c538500936aed343b9dede5b7e3d409d8de5ba3162541ac80c9e56735e6879119862021-06-01 8:20:5011 days 2 hrs ago0x6aef3fe427791a2548df3d280e1d5631e8a3d72c IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364255
0xfa602cefc328585f159cf29df12ee445dd3ecaa514df662a92af9c2082d12b2779115642021-06-01 7:59:4411 days 3 hrs ago0x6bccb6a41306aabda33efd02695568fab8dad50a IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364255
0x8f346a1775bf927f15bec8d87dac2a6fcae477408806ea8548fe9840f1e01e3779069182021-06-01 4:04:3911 days 7 hrs ago0x5973c4404614b3870e3842fcc69e2f5bfcfa9ee6 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.002732145
0x55d6ca03074a639d4bfa040533d069117c713775cfec7c58b237ec751bc9718879044522021-06-01 2:01:1811 days 9 hrs ago0xd0fbbf7e5d7fbba3b2afd608415ada965a573481 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364315
0x96d5a30890c4ab10b936ed0366f8420fa0bae66f5edd0e759f4288d94ed43cf279044482021-06-01 2:01:0611 days 9 hrs ago0xd0fbbf7e5d7fbba3b2afd608415ada965a573481 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000288865
0x1bb82021371e312e6b49c5e7e37cde02469040cd35d598e6dd99bb7d5315fb5979042652021-06-01 1:51:5711 days 9 hrs ago0xd0fbbf7e5d7fbba3b2afd608415ada965a573481 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364315
0xdeafd75b3671f591439185bc035bff30b8b4a4c9c76844bcc15795146ced1fc779042532021-06-01 1:51:2111 days 9 hrs ago0xd0fbbf7e5d7fbba3b2afd608415ada965a573481 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000288805
0x7010effdb690ad21f5ff232bf3b5e2438bacabd1dde56802e40e79ea1cf19ff279036192021-06-01 1:19:3911 days 9 hrs ago0xd79065db570b51de2de67160beb74bad01907a4f IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000288865
0x36520b3d98cf02b90647b226fdd79cb8e55227963be4413d904d8c7370a8835878919292021-05-31 15:32:1411 days 19 hrs ago0x09fdad6e6380d19d6116b31c3509d8babac33513 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364255
0x1caffb581f8f9b7a0d14bca09a709b5cd4c4ce74a7f0976492b0e98d80e0ce1578877182021-05-31 12:00:2511 days 23 hrs ago0x2542a9b6c05c71efedc2aebafc8dec0abde898f7 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364315
0xaa105991e603442c55bf46ee9418e6485317274b79cec1e15e7874b12122f7de78811222021-05-31 6:29:1512 days 4 hrs agoBurgerSwap: Deployer IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000192935
0x915fcedd8768ffbc5a4a3b64528d16b40de821ba711827e3605f7c16727f58d578771112021-05-31 3:07:5012 days 7 hrs ago0x5f9dea11d9028ce7386302fd81d82029b94c4bb6 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364255
0x8131d26d86c0d1920522283fcdff8db232aee785f74894e3d572f56c5b29ccca78482722021-05-30 3:01:1413 days 8 hrs ago0xf248314815e001c15df1e5e45e11eb7b241d9995 IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.000364315
0x872f71114feb0ab74e892f80d29149d98fba1760217815bc119b4a9431654cd478467802021-05-30 1:46:3613 days 9 hrs ago0xd79065db570b51de2de67160beb74bad01907a4f IN  0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB0.002596865
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:5196 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:5196 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:5196 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:5196 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:5196 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: USDT-BURGER0 BNB
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:5196 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:5196 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0x903120703e4a711fa313e9f600d8bdce3d664e3f8d7b14676dfe08d0827e7c4254712782021-03-07 11:56:5196 days 23 hrs ago 0xbf6527834dbb89cdc97a79fcd62e6c08b19f8ec0 0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:4296 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:4296 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:4296 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:4296 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:4296 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER-bKANGAL0 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:4296 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:4296 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0xdcd0149b14a698675e675c69ccda4857faf58378474efbd660c49fb6c179bed754712352021-03-07 11:54:4296 days 23 hrs ago 0xbf6527834dbb89cdc97a79fcd62e6c08b19f8ec0 0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4296 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4296 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0x9154c2684aef8d106babcb19aa81d4fabf7581ec0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4296 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4296 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4296 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER-KOGE0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4296 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 0xe7f6824706aeee33542088eb2fdd2d69e37455b60 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4296 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4296 days 23 hrs ago 0xbf6527834dbb89cdc97a79fcd62e6c08b19f8ec0 0x86a327715d707bca24983b1145d1f6c40c5d4a740 BNB
0x3f92c143186ca7433d4d28c9ac9ac1f7ddcb975b25816d7f4502a54e2c35c80654711752021-03-07 11:51:4296 days 23 hrs ago 0x86a327715d707bca24983b1145d1f6c40c5d4a74 BurgerSwap: BURGER Token0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DemaxPool

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2020-09-24
*/

// Dependency file: contracts/interfaces/IDemaxConfig.sol

// pragma solidity >=0.5.0;

interface IDemaxConfig {
    function governor() external view returns (address);
    function dev() external view returns (address);
    function PERCENT_DENOMINATOR() external view returns (uint);
    function getConfig(bytes32 _name) external view returns (uint minValue, uint maxValue, uint maxSpan, uint value, uint enable);
    function getConfigValue(bytes32 _name) external view returns (uint);
    function changeConfigValue(bytes32 _name, uint _value) external returns (bool);
    function checkToken(address _token) external view returns(bool);
    function checkPair(address tokenA, address tokenB) external view returns (bool);
    function listToken(address _token) external returns (bool);
    function getDefaultListTokens() external returns (address[] memory);
    function platform() external view returns  (address);
    function addToken(address _token) external returns (bool);
}
// Dependency file: contracts/libraries/ConfigNames.sol

// pragma solidity >=0.5.16;

library ConfigNames {
    bytes32 public constant PRODUCE_DGAS_RATE = bytes32('PRODUCE_DGAS_RATE');
    bytes32 public constant SWAP_FEE_PERCENT = bytes32('SWAP_FEE_PERCENT');
    bytes32 public constant LIST_DGAS_AMOUNT = bytes32('LIST_DGAS_AMOUNT');
    bytes32 public constant UNSTAKE_DURATION = bytes32('UNSTAKE_DURATION');
    bytes32 public constant REMOVE_LIQUIDITY_DURATION = bytes32('REMOVE_LIQUIDITY_DURATION');
    bytes32 public constant TOKEN_TO_DGAS_PAIR_MIN_PERCENT = bytes32('TOKEN_TO_DGAS_PAIR_MIN_PERCENT');
    bytes32 public constant LIST_TOKEN_FAILURE_BURN_PRECENT = bytes32('LIST_TOKEN_FAILURE_BURN_PRECENT');
    bytes32 public constant LIST_TOKEN_SUCCESS_BURN_PRECENT = bytes32('LIST_TOKEN_SUCCESS_BURN_PRECENT');
    bytes32 public constant PROPOSAL_DGAS_AMOUNT = bytes32('PROPOSAL_DGAS_AMOUNT');
    bytes32 public constant VOTE_DURATION = bytes32('VOTE_DURATION');
    bytes32 public constant VOTE_REWARD_PERCENT = bytes32('VOTE_REWARD_PERCENT');
    bytes32 public constant TOKEN_PENGDING_SWITCH = bytes32('TOKEN_PENGDING_SWITCH');
    bytes32 public constant TOKEN_PENGDING_TIME = bytes32('TOKEN_PENGDING_TIME');
    bytes32 public constant LIST_TOKEN_SWITCH = bytes32('LIST_TOKEN_SWITCH');
    bytes32 public constant DEV_PRECENT = bytes32('DEV_PRECENT');
    bytes32 public constant FEE_GOVERNANCE_REWARD_PERCENT = bytes32('FEE_GOVERNANCE_REWARD_PERCENT');
    bytes32 public constant FEE_LP_REWARD_PERCENT = bytes32('FEE_LP_REWARD_PERCENT');
}
// Dependency file: contracts/libraries/SafeMath.sol

// SPDX-License-Identifier: MIT

// pragma solidity ^0.6.0;

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

        return c;
    }

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

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

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

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

        return c;
    }

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

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}
// Dependency file: contracts/interfaces/IDemaxGovernance.sol

// pragma solidity >=0.5.0;

interface IDemaxGovernance {
    function addPair(address _tokenA, address _tokenB) external returns (bool);
    function addReward(uint _value) external returns (bool);
}


// Dependency file: contracts/interfaces/IDemaxFactory.sol

// pragma solidity >=0.5.0;

interface IDemaxFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function contractCodeHash() external view returns (bytes32);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function isPair(address pair) external view returns (bool);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function playerPairs(address player, uint index) external view returns (address pair);
    function getPlayerPairCount(address player) external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);
    function addPlayerPair(address player, address _pair) external returns (bool);
}

// Dependency file: contracts/interfaces/IDemaxPair.sol

// pragma solidity >=0.5.0;

interface IDemaxPair {
  
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function totalSupply() external view returns (uint);
    function balanceOf(address) external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address from, address to, uint amount) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address tokenA, address tokenB, address platform, address dgas) external;
    function swapFee(uint amount, address token, address to) external ;
    function queryReward() external view returns (uint rewardAmount, uint blockNumber);
    function mintReward() external returns (uint rewardAmount);
    function getDGASReserve() external view returns (uint);
}

// Dependency file: contracts/interfaces/IDgas.sol

// pragma solidity >=0.5.0;

interface IDgas {
    function amountPerBlock() external view returns (uint);
    function changeInterestRatePerBlock(uint value) external returns (bool);
    function getProductivity(address user) external view returns (uint, uint);
    function increaseProductivity(address user, uint value) external returns (bool);
    function decreaseProductivity(address user, uint value) external returns (bool);
    function take() external view returns (uint);
    function takeWithBlock() external view returns (uint, uint);
    function mint() external returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function upgradeImpl(address _newImpl) external;
    function upgradeGovernance(address _newGovernor) external;
    function transfer(address to, uint value) external returns (bool);
    function approve(address spender, uint value) external returns (bool);
}
// Dependency file: contracts/libraries/TransferHelper.sol

// SPDX-License-Identifier: GPL-3.0-or-later

// pragma solidity >=0.6.0;

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
    }

    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }

    function safeTransferETH(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: ETH_TRANSFER_FAILED');
    }
}

// Dependency file: contracts/modules/Ownable.sol

// pragma solidity >=0.5.16;

contract Ownable {
    address public owner;

    event OwnerChanged(address indexed _oldOwner, address indexed _newOwner);

    constructor() public {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner, 'Ownable: FORBIDDEN');
        _;
    }

    function changeOwner(address _newOwner) public onlyOwner {
        require(_newOwner != address(0), 'Ownable: INVALID_ADDRESS');
        emit OwnerChanged(owner, _newOwner);
        owner = _newOwner;
    }

}

pragma solidity >= 0.5.1;
// import './modules/Ownable.sol';
// import './libraries/TransferHelper.sol';
// import './interfaces/IDgas.sol';
// import './interfaces/IDemaxPair.sol';
// import './interfaces/IDemaxFactory.sol';
// import './interfaces/IDemaxGovernance.sol';
// import './libraries/SafeMath.sol';
// import './libraries/ConfigNames.sol';
// import './interfaces/IDemaxConfig.sol';

interface IDemaxPlatform {
    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts) ;
    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);
}

contract DemaxPool is Ownable {
    using SafeMath for uint;
    address public DGAS;
    address public FACTORY;
    address public PLATFORM;
    address public WETH;
    address public CONFIG;
    address public GOVERNANCE;
    uint public totalReward;
    
    struct UserInfo {
        uint rewardDebt; // Reward debt. 
        uint rewardEarn; // Reward earn and not minted
    }
    
    event ClaimReward(address indexed user, address indexed pair, address indexed rewardToken, uint amountDGAS);
    event AddReward(address indexed pair, uint amount);

    mapping(address => mapping (address => UserInfo)) public users;
    
    mapping (address => uint) public pairAmountPerShare;
    mapping (address => uint) public pairReward;
    
    function initialize(address _DGAS, address _WETH, address _FACTORY, address _PLATFORM, address _CONFIG, address _GOVERNANCE) external onlyOwner {
        DGAS = _DGAS;
        WETH = _WETH;
        FACTORY = _FACTORY;
        PLATFORM = _PLATFORM;
        CONFIG = _CONFIG;
        GOVERNANCE = _GOVERNANCE;
    }
    
    function upgrade(address _newPool, address[] calldata _pairs) external onlyOwner {
        IDgas(DGAS).approve(_newPool, totalReward);
        for(uint i = 0;i < _pairs.length;i++) {
            if(pairReward[_pairs[i]] > 0) {
                DemaxPool(_newPool).addReward(_pairs[i], pairReward[_pairs[i]]);
                totalReward = totalReward.sub(pairReward[_pairs[i]]);
                pairReward[_pairs[i]] = 0;
            }
        }
    }
    
    function addRewardFromPlatform(address _pair, uint _amount) external {
        require(msg.sender == PLATFORM, "DEMAX POOL: FORBIDDEN");
        uint balanceOf = IDgas(DGAS).balanceOf(address(this));
        require(balanceOf.sub(totalReward) >= _amount, 'DEMAX POOL: ADD_REWARD_EXCEED');
        
        uint rewardAmount = IDemaxConfig(CONFIG).getConfigValue(ConfigNames.FEE_LP_REWARD_PERCENT).mul(_amount).div(10000);
        _addReward(_pair, rewardAmount);
        
        uint remainAmount = _amount.sub(rewardAmount);
        uint governanceAmount = IDemaxConfig(CONFIG).getConfigValue(ConfigNames.FEE_GOVERNANCE_REWARD_PERCENT).mul(remainAmount).div(10000);
        if(governanceAmount > 0) {
            TransferHelper.safeTransfer(DGAS, GOVERNANCE, governanceAmount);
            IDemaxGovernance(GOVERNANCE).addReward(governanceAmount);
        }
        if(remainAmount.sub(governanceAmount) > 0) {
            TransferHelper.safeTransfer(DGAS, address(0), remainAmount.sub(governanceAmount));
        }
        emit AddReward(_pair, rewardAmount);
    }
    
    function addReward(address _pair, uint _amount) external {
        TransferHelper.safeTransferFrom(DGAS, msg.sender, address(this), _amount);
        
        require(IDemaxFactory(FACTORY).isPair(_pair), "DEMAX POOL: INVALID PAIR");
        _addReward(_pair, _amount);
        
        emit AddReward(_pair, _amount);
    }
    
    function preProductivityChanged(address _pair, address _user) external {
        require(msg.sender == PLATFORM, "DEMAX POOL: FORBIDDEN");
        _auditUser(_pair, _user);
    }
    
    function postProductivityChanged(address _pair, address _user) external {
        require(msg.sender == PLATFORM, "DEMAX POOL: FORBIDDEN");
        require(IDemaxFactory(FACTORY).isPair(_pair), "DEMAX POOL: INVALID PAIR");
        
        _updateDebt(_pair, _user);
    }
    
    function _addReward(address _pair, uint _amount) internal {
        pairReward[_pair] = pairReward[_pair].add(_amount);
        uint totalProdutivity = IDemaxPair(_pair).totalSupply();
        if(totalProdutivity > 0) {
            pairAmountPerShare[_pair] = pairAmountPerShare[_pair].add(_amount.mul(1e12).div(totalProdutivity));
            totalReward = totalReward.add(_amount);
        }
    }
    
    function _auditUser(address _pair, address _user) internal {
        require(IDemaxFactory(FACTORY).isPair(_pair), "DEMAX POOL: INVALID PAIR");
    
        uint balance = IDemaxPair(_pair).balanceOf(_user);
        uint accAmountPerShare = pairAmountPerShare[_pair];
        UserInfo storage userInfo = users[_user][_pair];
        uint pending = balance.mul(accAmountPerShare).div(1e12).sub(userInfo.rewardDebt);
        userInfo.rewardEarn = userInfo.rewardEarn.add(pending);
        userInfo.rewardDebt = balance.mul(accAmountPerShare).div(1e12);
    }
    
    function _updateDebt(address _pair, address _user) internal {
        uint balance = IDemaxPair(_pair).balanceOf(_user);
        uint accAmountPerShare = pairAmountPerShare[_pair];
        users[_user][_pair].rewardDebt = balance.mul(accAmountPerShare).div(1e12);
    }
    
    function claimReward(address _pair, address _rewardToken) external {
        _auditUser(_pair, msg.sender);
        UserInfo storage userInfo = users[msg.sender][_pair];
        
        uint amount = userInfo.rewardEarn;
        pairReward[_pair] = pairReward[_pair].sub(amount);
        totalReward = totalReward.sub(amount);
        require(amount > 0, "NOTHING TO MINT");
        
        if(_rewardToken == DGAS) {
            TransferHelper.safeTransfer(DGAS, msg.sender, amount);
        } else if(_rewardToken == WETH) {
            require(IDemaxFactory(FACTORY).isPair(_pair), "DEMAX POOL: INVALID PAIR");
            IDgas(DGAS).approve(PLATFORM, amount);
            address[] memory path = new address[](2);
            path[0] = DGAS;
            path[1] = WETH; 
            IDemaxPlatform(PLATFORM).swapExactTokensForETH(amount, 0, path, msg.sender, block.timestamp + 1);
        } else {
            require(IDemaxFactory(FACTORY).isPair(_pair), "DEMAX POOL: INVALID PAIR");
            IDgas(DGAS).approve(PLATFORM, amount);
            address[] memory path = new address[](2);
            path[0] = DGAS;
            path[1] = _rewardToken;
            IDemaxPlatform(PLATFORM).swapExactTokensForTokens(amount, 0, path, msg.sender, block.timestamp + 1);
        }
        
        userInfo.rewardEarn = 0;
        emit ClaimReward(msg.sender, _pair, _rewardToken, amount);
    }
    
    function queryReward(address _pair, address _user) external view returns(uint) {
        require(IDemaxFactory(FACTORY).isPair(_pair), "DEMAX POOL: INVALID PAIR");
        
        UserInfo memory userInfo = users[msg.sender][_pair];
        uint balance = IDemaxPair(_pair).balanceOf(_user);
        return balance.mul(pairAmountPerShare[_pair]).div(1e12).add(userInfo.rewardEarn).sub(userInfo.rewardDebt);
    }
}

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AddReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"address","name":"rewardToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountDGAS","type":"uint256"}],"name":"ClaimReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"_newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"inputs":[],"name":"CONFIG","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DGAS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GOVERNANCE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PLATFORM","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addRewardFromPlatform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"address","name":"_rewardToken","type":"address"}],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_DGAS","type":"address"},{"internalType":"address","name":"_WETH","type":"address"},{"internalType":"address","name":"_FACTORY","type":"address"},{"internalType":"address","name":"_PLATFORM","type":"address"},{"internalType":"address","name":"_CONFIG","type":"address"},{"internalType":"address","name":"_GOVERNANCE","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairAmountPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"postProductivityChanged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"preProductivityChanged","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"queryReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newPool","type":"address"},{"internalType":"address[]","name":"_pairs","type":"address[]"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"rewardEarn","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052600080546001600160a01b031916331790556122f4806100256000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063a6f9dae1116100ad578063d14cac1a11610071578063d14cac1a1461038a578063d92e82e4146103b8578063e60a6a0b146103c0578063e80ee4fc146103ec578063e8c04d42146104125761012c565b8063a6f9dae114610260578063a9f005b814610286578063aabacc2214610306578063ad5c464814610334578063cc2a9a5b1461033c5761012c565b8063723c2e2d116100f4578063723c2e2d14610214578063750142e61461021c5780637efc77fa146102245780638da5cb5b1461022c5780639feb8f50146102345761012c565b806314627834146101315780632dd31000146101555780632f534ba81461015d5780634953c7821461019d5780635e80536a146101cd575b600080fd5b610139610438565b604080516001600160a01b039092168252519081900360200190f35b610139610447565b61018b6004803603604081101561017357600080fd5b506001600160a01b0381358116916020013516610456565b60408051918252519081900360200190f35b6101cb600480360360408110156101b357600080fd5b506001600160a01b0381358116916020013516610639565b005b6101fb600480360360408110156101e357600080fd5b506001600160a01b0381358116916020013516610e00565b6040805192835260208301919091528051918290030190f35b610139610e24565b61018b610e33565b610139610e39565b610139610e48565b6101cb6004803603604081101561024a57600080fd5b506001600160a01b038135169060200135610e57565b6101cb6004803603602081101561027657600080fd5b50356001600160a01b0316610f74565b6101cb6004803603604081101561029c57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156102c757600080fd5b8201836020820111156102d957600080fd5b803590602001918460208302840111640100000000831117156102fb57600080fd5b50909250905061107e565b6101cb6004803603604081101561031c57600080fd5b506001600160a01b038135811691602001351661132c565b610139611391565b6101cb600480360360c081101561035257600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608082013581169160a00135166113a0565b6101cb600480360360408110156103a057600080fd5b506001600160a01b0381358116916020013516611463565b61013961157c565b6101cb600480360360408110156103d657600080fd5b506001600160a01b03813516906020013561158b565b61018b6004803603602081101561040257600080fd5b50356001600160a01b031661193a565b61018b6004803603602081101561042857600080fd5b50356001600160a01b031661194c565b6006546001600160a01b031681565b6002546001600160a01b031681565b6002546040805163e5e31b1360e01b81526001600160a01b0385811660048301529151600093929092169163e5e31b1391602480820192602092909190829003018186803b1580156104a757600080fd5b505afa1580156104bb573d6000803e3d6000fd5b505050506040513d60208110156104d157600080fd5b5051610512576040805162461bcd60e51b8152602060048201526018602482015260008051602061225a833981519152604482015290519081900360640190fd5b61051a61223f565b503360009081526008602090815260408083206001600160a01b0387811680865291845282852083518085018552815481526001909101548186015283516370a0823160e01b81529188166004830152925192949391926370a0823192602480840193919291829003018186803b15801561059457600080fd5b505afa1580156105a8573d6000803e3d6000fd5b505050506040513d60208110156105be57600080fd5b505182516020848101516001600160a01b0389166000908152600990925260409091205492935061062e9261062291906106169064e8d4a510009061060a90889063ffffffff61195e16565b9063ffffffff6119be16565b9063ffffffff611a0016565b9063ffffffff611a5a16565b925050505b92915050565b6106438233611a9c565b3360009081526008602090815260408083206001600160a01b038616845282528083206001810154600a909352922054610683908263ffffffff611a5a16565b6001600160a01b0385166000908152600a60205260409020556007546106af908263ffffffff611a5a16565b600755806106f6576040805162461bcd60e51b815260206004820152600f60248201526e1393d512125391c81513c813525395608a1b604482015290519081900360640190fd5b6001546001600160a01b038481169116141561072857600154610723906001600160a01b03163383611c6e565b610dad565b6004546001600160a01b0384811691161415610a76576002546040805163e5e31b1360e01b81526001600160a01b0387811660048301529151919092169163e5e31b13916024808301926020929190829003018186803b15801561078b57600080fd5b505afa15801561079f573d6000803e3d6000fd5b505050506040513d60208110156107b557600080fd5b50516107f6576040805162461bcd60e51b8152602060048201526018602482015260008051602061225a833981519152604482015290519081900360640190fd5b6001546003546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561084f57600080fd5b505af1158015610863573d6000803e3d6000fd5b505050506040513d602081101561087957600080fd5b50506040805160028082526060808301845292602083019080368337505060015482519293506001600160a01b0316918391506000906108b557fe5b6001600160a01b0392831660209182029290920101526004548251911690829060019081106108e057fe5b6001600160a01b039283166020918202929092018101919091526003546040516318cbafe560e01b8152600481018681526000602483018190523360648401819052426001016084850181905260a060448601908152895160a4870152895196909816976318cbafe5978b9794968b96949593949360c49091019187810191028083838b5b8381101561097d578181015183820152602001610965565b505050509050019650505050505050600060405180830381600087803b1580156109a657600080fd5b505af11580156109ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156109e357600080fd5b8101908080516040519392919084640100000000821115610a0357600080fd5b908301906020820185811115610a1857600080fd5b8251866020820283011164010000000082111715610a3557600080fd5b82525081516020918201928201910280838360005b83811015610a62578181015183820152602001610a4a565b505050509050016040525050505050610dad565b6002546040805163e5e31b1360e01b81526001600160a01b0387811660048301529151919092169163e5e31b13916024808301926020929190829003018186803b158015610ac357600080fd5b505afa158015610ad7573d6000803e3d6000fd5b505050506040513d6020811015610aed57600080fd5b5051610b2e576040805162461bcd60e51b8152602060048201526018602482015260008051602061225a833981519152604482015290519081900360640190fd5b6001546003546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018590529051919092169163095ea7b39160448083019260209291908290030181600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b505050506040513d6020811015610bb157600080fd5b50506040805160028082526060808301845292602083019080368337505060015482519293506001600160a01b031691839150600090610bed57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381600181518110610c1b57fe5b6001600160a01b039283166020918202929092018101919091526003546040516338ed173960e01b8152600481018681526000602483018190523360648401819052426001016084850181905260a060448601908152895160a4870152895196909816976338ed1739978b9794968b96949593949360c49091019187810191028083838b5b83811015610cb8578181015183820152602001610ca0565b505050509050019650505050505050600060405180830381600087803b158015610ce157600080fd5b505af1158015610cf5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610d1e57600080fd5b8101908080516040519392919084640100000000821115610d3e57600080fd5b908301906020820185811115610d5357600080fd5b8251866020820283011164010000000082111715610d7057600080fd5b82525081516020918201928201910280838360005b83811015610d9d578181015183820152602001610d85565b5050505090500160405250505050505b600060018301556040805182815290516001600160a01b03808616929087169133917ff9ce28130cf0ab6ae397696b8e3f3c22063af7b518a2d85c64520eadcb39155f919081900360200190a450505050565b60086020908152600092835260408084209091529082529020805460019091015482565b6001546001600160a01b031681565b60075481565b6003546001600160a01b031681565b6000546001600160a01b031681565b600154610e6f906001600160a01b0316333084611dd8565b6002546040805163e5e31b1360e01b81526001600160a01b0385811660048301529151919092169163e5e31b13916024808301926020929190829003018186803b158015610ebc57600080fd5b505afa158015610ed0573d6000803e3d6000fd5b505050506040513d6020811015610ee657600080fd5b5051610f27576040805162461bcd60e51b8152602060048201526018602482015260008051602061225a833981519152604482015290519081900360640190fd5b610f318282611f35565b6040805182815290516001600160a01b038416917f9f15a78649bd76613c4a49ca8a67ae948862a0eee791ca3d0380853f9afa624f919081900360200190a25050565b6000546001600160a01b03163314610fc8576040805162461bcd60e51b815260206004820152601260248201527127bbb730b136329d102327a92124a22222a760711b604482015290519081900360640190fd5b6001600160a01b038116611023576040805162461bcd60e51b815260206004820152601860248201527f4f776e61626c653a20494e56414c49445f414444524553530000000000000000604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110d2576040805162461bcd60e51b815260206004820152601260248201527127bbb730b136329d102327a92124a22222a760711b604482015290519081900360640190fd5b6001546007546040805163095ea7b360e01b81526001600160a01b03878116600483015260248201939093529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561112c57600080fd5b505af1158015611140573d6000803e3d6000fd5b505050506040513d602081101561115657600080fd5b50600090505b81811015611326576000600a600085858581811061117657fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002054111561131e57836001600160a01b0316639feb8f508484848181106111c857fe5b905060200201356001600160a01b0316600a60008787878181106111e857fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561126857600080fd5b505af115801561127c573d6000803e3d6000fd5b505050506112d5600a600085858581811061129357fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002054600754611a5a90919063ffffffff16565b6007556000600a818585858181106112e957fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055505b60010161115c565b50505050565b6003546001600160a01b03163314611383576040805162461bcd60e51b81526020600482015260156024820152742222a6a0ac102827a7a61d102327a92124a22222a760591b604482015290519081900360640190fd5b61138d8282611a9c565b5050565b6004546001600160a01b031681565b6000546001600160a01b031633146113f4576040805162461bcd60e51b815260206004820152601260248201527127bbb730b136329d102327a92124a22222a760711b604482015290519081900360640190fd5b600180546001600160a01b03199081166001600160a01b0398891617909155600480548216968816969096179095556002805486169487169490941790935560038054851692861692909217909155600580548416918516919091179055600680549092169216919091179055565b6003546001600160a01b031633146114ba576040805162461bcd60e51b81526020600482015260156024820152742222a6a0ac102827a7a61d102327a92124a22222a760591b604482015290519081900360640190fd5b6002546040805163e5e31b1360e01b81526001600160a01b0385811660048301529151919092169163e5e31b13916024808301926020929190829003018186803b15801561150757600080fd5b505afa15801561151b573d6000803e3d6000fd5b505050506040513d602081101561153157600080fd5b5051611572576040805162461bcd60e51b8152602060048201526018602482015260008051602061225a833981519152604482015290519081900360640190fd5b61138d8282612058565b6005546001600160a01b031681565b6003546001600160a01b031633146115e2576040805162461bcd60e51b81526020600482015260156024820152742222a6a0ac102827a7a61d102327a92124a22222a760591b604482015290519081900360640190fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561162d57600080fd5b505afa158015611641573d6000803e3d6000fd5b505050506040513d602081101561165757600080fd5b5051600754909150829061167290839063ffffffff611a5a16565b10156116c5576040805162461bcd60e51b815260206004820152601d60248201527f44454d415820504f4f4c3a204144445f5245574152445f455843454544000000604482015290519081900360640190fd5b600061177a61271061060a85600560009054906101000a90046001600160a01b03166001600160a01b031663c199de327411915157d31417d49155d0549117d4115490d15395605a1b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561174257600080fd5b505afa158015611756573d6000803e3d6000fd5b505050506040513d602081101561176c57600080fd5b50519063ffffffff61195e16565b90506117868482611f35565b6000611798848363ffffffff611a5a16565b600554604080516360ccef1960e11b81527f4645455f474f5645524e414e43455f5245574152445f50455243454e5400000060048201529051929350600092611814926127109261060a9287926001600160a01b03169163c199de32916024808301926020929190829003018186803b15801561174257600080fd5b905080156118b457600154600654611839916001600160a01b03908116911683611c6e565b60065460408051631d3793b160e21b81526004810184905290516001600160a01b03909216916374de4ec4916024808201926020929091908290030181600087803b15801561188757600080fd5b505af115801561189b573d6000803e3d6000fd5b505050506040513d60208110156118b157600080fd5b50505b60006118c6838363ffffffff611a5a16565b11156118f3576001546118f3906001600160a01b031660006118ee858563ffffffff611a5a16565b611c6e565b6040805184815290516001600160a01b038816917f9f15a78649bd76613c4a49ca8a67ae948862a0eee791ca3d0380853f9afa624f919081900360200190a2505050505050565b600a6020526000908152604090205481565b60096020526000908152604090205481565b60008261196d57506000610633565b8282028284828161197a57fe5b04146119b75760405162461bcd60e51b815260040180806020018281038252602181526020018061227a6021913960400191505060405180910390fd5b9392505050565b60006119b783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612143565b6000828201838110156119b7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006119b783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121e5565b6002546040805163e5e31b1360e01b81526001600160a01b0385811660048301529151919092169163e5e31b13916024808301926020929190829003018186803b158015611ae957600080fd5b505afa158015611afd573d6000803e3d6000fd5b505050506040513d6020811015611b1357600080fd5b5051611b54576040805162461bcd60e51b8152602060048201526018602482015260008051602061225a833981519152604482015290519081900360640190fd5b6000826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611bac57600080fd5b505afa158015611bc0573d6000803e3d6000fd5b505050506040513d6020811015611bd657600080fd5b50516001600160a01b0380851660008181526009602090815260408083205494881683526008825280832093835292905290812080549394509192611c2e9061062264e8d4a5100061060a888863ffffffff61195e16565b6001830154909150611c46908263ffffffff611a0016565b6001830155611c6464e8d4a5100061060a868663ffffffff61195e16565b9091555050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310611ceb5780518252601f199092019160209182019101611ccc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d4d576040519150601f19603f3d011682016040523d82523d6000602084013e611d52565b606091505b5091509150818015611d80575080511580611d805750808060200190516020811015611d7d57600080fd5b50515b611dd1576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b60208310611e5d5780518252601f199092019160209182019101611e3e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611ebf576040519150601f19603f3d011682016040523d82523d6000602084013e611ec4565b606091505b5091509150818015611ef2575080511580611ef25750808060200190516020811015611eef57600080fd5b50515b611f2d5760405162461bcd60e51b815260040180806020018281038252602481526020018061229b6024913960400191505060405180910390fd5b505050505050565b6001600160a01b0382166000908152600a6020526040902054611f5e908263ffffffff611a0016565b6001600160a01b0383166000818152600a602090815260408083209490945583516318160ddd60e01b8152935191936318160ddd9260048083019392829003018186803b158015611fae57600080fd5b505afa158015611fc2573d6000803e3d6000fd5b505050506040513d6020811015611fd857600080fd5b50519050801561205357612023611ffe8261060a8564e8d4a5100063ffffffff61195e16565b6001600160a01b0385166000908152600960205260409020549063ffffffff611a0016565b6001600160a01b03841660009081526009602052604090205560075461204f908363ffffffff611a0016565b6007555b505050565b6000826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156120b057600080fd5b505afa1580156120c4573d6000803e3d6000fd5b505050506040513d60208110156120da57600080fd5b50516001600160a01b03841660009081526009602052604090205490915061211164e8d4a5100061060a848463ffffffff61195e16565b6001600160a01b0393841660009081526008602090815260408083209790961682529590955292909320919091555050565b600081836121cf5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561219457818101518382015260200161217c565b50505050905090810190601f1680156121c15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816121db57fe5b0495945050505050565b600081848411156122375760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561219457818101518382015260200161217c565b505050900390565b60405180604001604052806000815260200160008152509056fe44454d415820504f4f4c3a20494e56414c494420504149520000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220daafc30a9b5ac6b266dba1a75a2353b78d4e0fc2a49606eca0676e400dd6719e64736f6c63430006060033

Deployed ByteCode Sourcemap

15254:6638:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15254:6638:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;15460:25:0;;;:::i;:::-;;;;-1:-1:-1;;;;;15460:25:0;;;;;;;;;;;;;;15347:22;;;:::i;21470:419::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;21470:419:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;20031:1427;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;20031:1427:0;;;;;;;;;;:::i;:::-;;15836:62;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;15836:62:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15321:19;;;:::i;15492:23::-;;;:::i;15376:::-;;;:::i;13849:20::-;;;:::i;17926:331::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;17926:331:0;;;;;;;;:::i;14135:210::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14135:210:0;-1:-1:-1;;;;;14135:210:0;;:::i;16357:459::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;16357:459:0;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;16357:459:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;16357:459:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;16357:459:0;;-1:-1:-1;16357:459:0;-1:-1:-1;16357:459:0;:::i;18269:181::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;18269:181:0;;;;;;;;;;:::i;15406:19::-;;;:::i;16025:320::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;16025:320:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18462:277::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;18462:277:0;;;;;;;;;;:::i;15432:21::-;;;:::i;16828:1086::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;16828:1086:0;;;;;;;;:::i;15969:43::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15969:43:0;-1:-1:-1;;;;;15969:43:0;;:::i;15911:51::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15911:51:0;-1:-1:-1;;;;;15911:51:0;;:::i;15460:25::-;;;-1:-1:-1;;;;;15460:25:0;;:::o;15347:22::-;;;-1:-1:-1;;;;;15347:22:0;;:::o;21470:419::-;21582:7;;21568:36;;;-1:-1:-1;;;21568:36:0;;-1:-1:-1;;;;;21568:36:0;;;;;;;;;21543:4;;21582:7;;;;;21568:29;;:36;;;;;;;;;;;;;;;21582:7;21568:36;;;2:2:-1;;;;27:1;24;17:12;2:2;21568:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21568:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21568:36:0;21560:73;;;;;-1:-1:-1;;;21560:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21560:73:0;;;;;;;;;;;;;;;21654:24;;:::i;:::-;-1:-1:-1;21687:10:0;21681:17;;;;:5;:17;;;;;;;;-1:-1:-1;;;;;21681:24:0;;;;;;;;;;;;21654:51;;;;;;;;;;;;;;;;;;;;21731:34;;-1:-1:-1;;;21731:34:0;;;;;;;;;;;21654:51;;21681:17;:24;;21731:27;;:34;;;;;21681:17;;21731:34;;;;;;21681:24;21731:34;;;2:2:-1;;;;27:1;24;17:12;2:2;21731:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21731:34:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21731:34:0;21861:19;;21731:34;21836:19;;;;-1:-1:-1;;;;;21795:25:0;;21861:19;21795:25;;;:18;:25;;;;;;;;21731:34;;-1:-1:-1;21783:98:0;;:73;;21836:19;21783:48;;21826:4;;21783:38;;21731:34;;21783:38;:11;:38;:::i;:::-;:42;:48;:42;:48;:::i;:::-;:52;:73;:52;:73;:::i;:::-;:77;:98;:77;:98;:::i;:::-;21776:105;;;;21470:419;;;;;:::o;20031:1427::-;20109:29;20120:5;20127:10;20109;:29::i;:::-;20183:10;20149:25;20177:17;;;:5;:17;;;;;;;;-1:-1:-1;;;;;20177:24:0;;;;;;;;;20236:19;;;;20286:10;:17;;;;;;:29;;20236:19;20286:29;:21;:29;:::i;:::-;-1:-1:-1;;;;;20266:17:0;;;;;;:10;:17;;;;;:49;20340:11;;:23;;20356:6;20340:23;:15;:23;:::i;:::-;20326:11;:37;20382:10;20374:38;;;;;-1:-1:-1;;;20374:38:0;;;;;;;;;;;;-1:-1:-1;;;20374:38:0;;;;;;;;;;;;;;;20452:4;;-1:-1:-1;;;;;20436:20:0;;;20452:4;;20436:20;20433:906;;;20501:4;;20473:53;;-1:-1:-1;;;;;20501:4:0;20507:10;20519:6;20473:27;:53::i;:::-;20433:906;;;20563:4;;-1:-1:-1;;;;;20547:20:0;;;20563:4;;20547:20;20544:795;;;20606:7;;20592:36;;;-1:-1:-1;;;20592:36:0;;-1:-1:-1;;;;;20592:36:0;;;;;;;;;20606:7;;;;;20592:29;;:36;;;;;;;;;;;;;;20606:7;20592:36;;;2:2:-1;;;;27:1;24;17:12;2:2;20592:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20592:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20592:36:0;20584:73;;;;;-1:-1:-1;;;20584:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20584:73:0;;;;;;;;;;;;;;;20678:4;;20692:8;;20672:37;;;-1:-1:-1;;;20672:37:0;;-1:-1:-1;;;;;20692:8:0;;;20672:37;;;;;;;;;;;;20678:4;;;;;20672:19;;:37;;;;;;;;;;;;;;20678:4;;20672:37;;;2:2:-1;;;;27:1;24;17:12;2:2;20672:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20672:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;20748:16:0;;;20762:1;20748:16;;;20724:21;20748:16;;;;;20724:21;20748:16;;;;;109:14:-1;20748:16:0;88:42:-1;-1:-1;;20789:4:0;;20779:7;;;;-1:-1:-1;;;;;;20789:4:0;;20779:7;;-1:-1:-1;20789:4:0;;20779:7;;;;-1:-1:-1;;;;;20779:14:0;;;:7;;;;;;;;;:14;20818:4;;20808:7;;20818:4;;;20808;;20818;;20808:7;;;;;;-1:-1:-1;;;;;20808:14:0;;;:7;;;;;;;;;;:14;;;;20853:8;;20838:96;;-1:-1:-1;;;20838:96:0;;;;;;;;20853:8;20838:96;;;;;;20902:10;20838:96;;;;;;20914:15;20853:8;20914:19;20838:96;;;;;;;;;;;;;;;;;;;;;20853:8;;;;;20838:46;;20885:6;;20853:8;;20896:4;;20902:10;;20914:19;;20838:96;;;;;;;;;;;;;;20853:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20838:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20838:96:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20838:96:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;20838:96:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;15:2;7:11;;4:2;;;31:1;28;21:12;4:2;20838:96:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;20838:96:0;;421:4:-1;412:14;;;;20838:96:0;;;;;412:14:-1;20838:96:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20838:96:0;;;;;;;;;;;;20544:795;;;;20989:7;;20975:36;;;-1:-1:-1;;;20975:36:0;;-1:-1:-1;;;;;20975:36:0;;;;;;;;;20989:7;;;;;20975:29;;:36;;;;;;;;;;;;;;20989:7;20975:36;;;2:2:-1;;;;27:1;24;17:12;2:2;20975:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20975:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20975:36:0;20967:73;;;;;-1:-1:-1;;;20967:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20967:73:0;;;;;;;;;;;;;;;21061:4;;21075:8;;21055:37;;;-1:-1:-1;;;21055:37:0;;-1:-1:-1;;;;;21075:8:0;;;21055:37;;;;;;;;;;;;21061:4;;;;;21055:19;;:37;;;;;;;;;;;;;;21061:4;;21055:37;;;2:2:-1;;;;27:1;24;17:12;2:2;21055:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21055:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;21131:16:0;;;21145:1;21131:16;;;21107:21;21131:16;;;;;21107:21;21131:16;;;;;109:14:-1;21131:16:0;88:42:-1;-1:-1;;21172:4:0;;21162:7;;;;-1:-1:-1;;;;;;21172:4:0;;21162:7;;-1:-1:-1;21172:4:0;;21162:7;;;;;;;;;:14;-1:-1:-1;;;;;21162:14:0;;;-1:-1:-1;;;;;21162:14:0;;;;;21201:12;21191:4;21196:1;21191:7;;;;;;;;-1:-1:-1;;;;;21191:22:0;;;:7;;;;;;;;;;:22;;;;21243:8;;21228:99;;-1:-1:-1;;;21228:99:0;;;;;;;;21243:8;21228:99;;;;;;21295:10;21228:99;;;;;;21307:15;21243:8;21307:19;21228:99;;;;;;;;;;;;;;;;;;;;;21243:8;;;;;21228:49;;21278:6;;21243:8;;21289:4;;21295:10;;21307:19;;21228:99;;;;;;;;;;;;;;21243:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;21228:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21228:99:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21228:99:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;21228:99:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;15:2;7:11;;4:2;;;31:1;28;21:12;4:2;21228:99:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;21228:99:0;;421:4:-1;412:14;;;;21228:99:0;;;;;412:14:-1;21228:99:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;21228:99:0;;;;;;;;;;;;20544:795;;21381:1;21359:19;;;:23;21398:52;;;;;;;;-1:-1:-1;;;;;21398:52:0;;;;;;;;21410:10;;21398:52;;;;;;;;;;20031:1427;;;;:::o;15836:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15321:19::-;;;-1:-1:-1;;;;;15321:19:0;;:::o;15492:23::-;;;;:::o;15376:::-;;;-1:-1:-1;;;;;15376:23:0;;:::o;13849:20::-;;;-1:-1:-1;;;;;13849:20:0;;:::o;17926:331::-;18026:4;;17994:73;;-1:-1:-1;;;;;18026:4:0;18032:10;18052:4;18059:7;17994:31;:73::i;:::-;18110:7;;18096:36;;;-1:-1:-1;;;18096:36:0;;-1:-1:-1;;;;;18096:36:0;;;;;;;;;18110:7;;;;;18096:29;;:36;;;;;;;;;;;;;;18110:7;18096:36;;;2:2:-1;;;;27:1;24;17:12;2:2;18096:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18096:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18096:36:0;18088:73;;;;;-1:-1:-1;;;18088:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18088:73:0;;;;;;;;;;;;;;;18172:26;18183:5;18190:7;18172:10;:26::i;:::-;18224:25;;;;;;;;-1:-1:-1;;;;;18224:25:0;;;;;;;;;;;;;17926:331;;:::o;14135:210::-;14079:5;;-1:-1:-1;;;;;14079:5:0;14065:10;:19;14057:50;;;;;-1:-1:-1;;;14057:50:0;;;;;;;;;;;;-1:-1:-1;;;14057:50:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;14211:23:0;::::1;14203:60;;;::::0;;-1:-1:-1;;;14203:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;14292:5;::::0;;14279:30:::1;::::0;-1:-1:-1;;;;;14279:30:0;;::::1;::::0;14292:5;::::1;::::0;14279:30:::1;::::0;::::1;14320:5;:17:::0;;-1:-1:-1;;;;;;14320:17:0::1;-1:-1:-1::0;;;;;14320:17:0;;;::::1;::::0;;;::::1;::::0;;14135:210::o;16357:459::-;14079:5;;-1:-1:-1;;;;;14079:5:0;14065:10;:19;14057:50;;;;;-1:-1:-1;;;14057:50:0;;;;;;;;;;;;-1:-1:-1;;;14057:50:0;;;;;;;;;;;;;;;16455:4:::1;::::0;16479:11:::1;::::0;16449:42:::1;::::0;;-1:-1:-1;;;16449:42:0;;-1:-1:-1;;;;;16449:42:0;;::::1;;::::0;::::1;::::0;;;;;;;;;;16455:4;;;::::1;::::0;16449:19:::1;::::0;:42;;;;;::::1;::::0;;;;;;;;16455:4:::1;::::0;16449:42;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;16449:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;16449:42:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;16506:6:0::1;::::0;-1:-1:-1;16502:307:0::1;16517:17:::0;;::::1;16502:307;;;16582:1;16558:10;:21;16569:6;;16576:1;16569:9;;;;;;;;;;;;;-1:-1:-1::0;;;;;16569:9:0::1;-1:-1:-1::0;;;;;16558:21:0::1;-1:-1:-1::0;;;;;16558:21:0::1;;;;;;;;;;;;;:25;16555:243;;;16614:8;-1:-1:-1::0;;;;;16604:29:0::1;;16634:6;;16641:1;16634:9;;;;;;;;;;;;;-1:-1:-1::0;;;;;16634:9:0::1;16645:10;:21;16656:6;;16663:1;16656:9;;;;;;;;;;;;;-1:-1:-1::0;;;;;16656:9:0::1;-1:-1:-1::0;;;;;16645:21:0::1;-1:-1:-1::0;;;;;16645:21:0::1;;;;;;;;;;;;;16604:63;;;;;;;;;;;;;-1:-1:-1::0;;;;;16604:63:0::1;-1:-1:-1::0;;;;;16604:63:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;16604:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;16604:63:0;;;;16700:38;16716:10;:21;16727:6;;16734:1;16727:9;;;;;;;;;;;;;-1:-1:-1::0;;;;;16727:9:0::1;-1:-1:-1::0;;;;;16716:21:0::1;-1:-1:-1::0;;;;;16716:21:0::1;;;;;;;;;;;;;16700:11;;:15;;:38;;;;:::i;:::-;16686:11;:52:::0;16781:1:::1;16757:10;16781:1:::0;16768:6;;16775:1;16768:9;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;16768:9:0::1;-1:-1:-1::0;;;;;16757:21:0::1;-1:-1:-1::0;;;;;16757:21:0::1;;;;;;;;;;;;:25;;;;16555:243;16535:3;;16502:307;;;;16357:459:::0;;;:::o;18269:181::-;18373:8;;-1:-1:-1;;;;;18373:8:0;18359:10;:22;18351:56;;;;;-1:-1:-1;;;18351:56:0;;;;;;;;;;;;-1:-1:-1;;;18351:56:0;;;;;;;;;;;;;;;18418:24;18429:5;18436;18418:10;:24::i;:::-;18269:181;;:::o;15406:19::-;;;-1:-1:-1;;;;;15406:19:0;;:::o;16025:320::-;14079:5;;-1:-1:-1;;;;;14079:5:0;14065:10;:19;14057:50;;;;;-1:-1:-1;;;14057:50:0;;;;;;;;;;;;-1:-1:-1;;;14057:50:0;;;;;;;;;;;;;;;16180:4:::1;:12:::0;;-1:-1:-1;;;;;;16180:12:0;;::::1;-1:-1:-1::0;;;;;16180:12:0;;::::1;;::::0;;;16203:4:::1;:12:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;16226:7:::1;:18:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;16255:8:::1;:20:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;16286:6:::1;:16:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;16313:10:::1;:24:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;16025:320::o;18462:277::-;18567:8;;-1:-1:-1;;;;;18567:8:0;18553:10;:22;18545:56;;;;;-1:-1:-1;;;18545:56:0;;;;;;;;;;;;-1:-1:-1;;;18545:56:0;;;;;;;;;;;;;;;18634:7;;18620:36;;;-1:-1:-1;;;18620:36:0;;-1:-1:-1;;;;;18620:36:0;;;;;;;;;18634:7;;;;;18620:29;;:36;;;;;;;;;;;;;;18634:7;18620:36;;;2:2:-1;;;;27:1;24;17:12;2:2;18620:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18620:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18620:36:0;18612:73;;;;;-1:-1:-1;;;18612:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;18612:73:0;;;;;;;;;;;;;;;18706:25;18718:5;18725;18706:11;:25::i;15432:21::-;;;-1:-1:-1;;;;;15432:21:0;;:::o;16828:1086::-;16930:8;;-1:-1:-1;;;;;16930:8:0;16916:10;:22;16908:56;;;;;-1:-1:-1;;;16908:56:0;;;;;;;;;;;;-1:-1:-1;;;16908:56:0;;;;;;;;;;;;;;;16998:4;;16992:36;;;-1:-1:-1;;;16992:36:0;;17022:4;16992:36;;;;;;16975:14;;-1:-1:-1;;;;;16998:4:0;;16992:21;;:36;;;;;;;;;;;;;;16998:4;16992:36;;;2:2:-1;;;;27:1;24;17:12;2:2;16992:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16992:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16992:36:0;17061:11;;16992:36;;-1:-1:-1;17077:7:0;;17047:26;;16992:36;;17047:26;:13;:26;:::i;:::-;:37;;17039:79;;;;;-1:-1:-1;;;17039:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17139:17;17159:94;17247:5;17159:83;17234:7;17172:6;;;;;;;;;-1:-1:-1;;;;;17172:6:0;-1:-1:-1;;;;;17159:35:0;;-1:-1:-1;;;17159:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17159:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17159:70:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17159:70:0;;:83;:74;:83;:::i;:94::-;17139:114;;17264:31;17275:5;17282:12;17264:10;:31::i;:::-;17316:17;17336:25;:7;17348:12;17336:25;:11;:25;:::i;:::-;17409:6;;17396:78;;;-1:-1:-1;;;17396:78:0;;2460:40;17396:78;;;;;;17316:45;;-1:-1:-1;17372:21:0;;17396:107;;17497:5;;17396:96;;17316:45;;-1:-1:-1;;;;;17409:6:0;;17396:35;;:78;;;;;;;;;;;;;;17409:6;17396:78;;;2:2:-1;;;;27:1;24;17:12;17396:107:0;17372:131;-1:-1:-1;17517:20:0;;17514:186;;17582:4;;17588:10;;17554:63;;-1:-1:-1;;;;;17582:4:0;;;;17588:10;17600:16;17554:27;:63::i;:::-;17649:10;;17632:56;;;-1:-1:-1;;;17632:56:0;;;;;;;;;;-1:-1:-1;;;;;17649:10:0;;;;17632:38;;:56;;;;;;;;;;;;;;;17649:10;;17632:56;;;2:2:-1;;;;27:1;24;17:12;2:2;17632:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17632:56:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;17514:186:0;17750:1;17713:34;:12;17730:16;17713:34;:16;:34;:::i;:::-;:38;17710:151;;;17796:4;;17768:81;;-1:-1:-1;;;;;17796:4:0;;17814:34;:12;17831:16;17814:34;:16;:34;:::i;:::-;17768:27;:81::i;:::-;17876:30;;;;;;;;-1:-1:-1;;;;;17876:30:0;;;;;;;;;;;;;16828:1086;;;;;;:::o;15969:43::-;;;;;;;;;;;;;:::o;15911:51::-;;;;;;;;;;;;;:::o;4908:471::-;4966:7;5211:6;5207:47;;-1:-1:-1;5241:1:0;5234:8;;5207:47;5278:5;;;5282:1;5278;:5;:1;5302:5;;;;;:10;5294:56;;;;-1:-1:-1;;;5294:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5370:1;4908:471;-1:-1:-1;;;4908:471:0:o;5855:132::-;5913:7;5940:39;5944:1;5947;5940:39;;;;;;;;;;;;;;;;;:3;:39::i;3554:181::-;3612:7;3644:5;;;3668:6;;;;3660:46;;;;;-1:-1:-1;;;3660:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4018:136;4076:7;4103:43;4107:1;4110;4103:43;;;;;;;;;;;;;;;;;:3;:43::i;19169:565::-;19261:7;;19247:36;;;-1:-1:-1;;;19247:36:0;;-1:-1:-1;;;;;19247:36:0;;;;;;;;;19261:7;;;;;19247:29;;:36;;;;;;;;;;;;;;19261:7;19247:36;;;2:2:-1;;;;27:1;24;17:12;2:2;19247:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19247:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19247:36:0;19239:73;;;;;-1:-1:-1;;;19239:73:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19239:73:0;;;;;;;;;;;;;;;19329:12;19355:5;-1:-1:-1;;;;;19344:27:0;;19372:5;19344:34;;;;;;;;;;;;;-1:-1:-1;;;;;19344:34:0;-1:-1:-1;;;;;19344:34:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19344:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19344:34:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19344:34:0;-1:-1:-1;;;;;19414:25:0;;;19389:22;19414:25;;;:18;19344:34;19414:25;;;;;;;;19478:12;;;;;:5;:12;;;;;:19;;;;;;;;;19568;;19344:34;;-1:-1:-1;19414:25:0;;19523:65;;:40;19558:4;19523:30;19344:34;19414:25;19523:30;:11;:30;:::i;:65::-;19621:19;;;;19508:80;;-1:-1:-1;19621:32:0;;19508:80;19621:32;:23;:32;:::i;:::-;19599:19;;;:54;19686:40;19721:4;19686:30;:7;19698:17;19686:30;:11;:30;:::i;:40::-;19664:62;;;-1:-1:-1;;;;;19169:565:0:o;12759:361::-;12954:45;;;-1:-1:-1;;;;;12954:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;12954:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;12943:57:0;;;;12908:12;;12922:17;;12943:10;;;;12954:45;12943:57;;;25:18:-1;12943:57:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;12943:57:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;12907:93:0;;;;13019:7;:57;;;;-1:-1:-1;13031:11:0;;:16;;:44;;;13062:4;13051:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13051:24:0;13031:44;13011:101;;;;;-1:-1:-1;;;13011:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12759:361;;;;;:::o;13128:402::-;13353:51;;;-1:-1:-1;;;;;13353:51:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;13353:51:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;13342:63:0;;;;13307:12;;13321:17;;13342:10;;;;13353:51;13342:63;;;25:18:-1;13342:63:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;13342:63:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;13306:99:0;;;;13424:7;:57;;;;-1:-1:-1;13436:11:0;;:16;;:44;;;13467:4;13456:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13456:24:0;13436:44;13416:106;;;;-1:-1:-1;;;13416:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13128:402;;;;;;:::o;18751:406::-;-1:-1:-1;;;;;18840:17:0;;;;;;:10;:17;;;;;;:30;;18862:7;18840:30;:21;:30;:::i;:::-;-1:-1:-1;;;;;18820:17:0;;;;;;:10;:17;;;;;;;;:50;;;;18905:31;;-1:-1:-1;;;18905:31:0;;;;18820:17;;18905:29;;:31;;;;;18820:17;18905:31;;;;;18820:17;18905:31;;;2:2:-1;;;;27:1;24;17:12;2:2;18905:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18905:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18905:31:0;;-1:-1:-1;18950:20:0;;18947:203;;19015:70;19045:39;19067:16;19045:17;:7;19057:4;19045:17;:11;:17;:::i;:39::-;-1:-1:-1;;;;;19015:25:0;;;;;;:18;:25;;;;;;;:70;:29;:70;:::i;:::-;-1:-1:-1;;;;;18987:25:0;;;;;;:18;:25;;;;;:98;19114:11;;:24;;19130:7;19114:24;:15;:24;:::i;:::-;19100:11;:38;18947:203;18751:406;;;:::o;19746:273::-;19817:12;19843:5;-1:-1:-1;;;;;19832:27:0;;19860:5;19832:34;;;;;;;;;;;;;-1:-1:-1;;;;;19832:34:0;-1:-1:-1;;;;;19832:34:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19832:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19832:34:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19832:34:0;-1:-1:-1;;;;;19902:25:0;;19877:22;19902:25;;;:18;19832:34;19902:25;;;;;19832:34;;-1:-1:-1;19971:40:0;20006:4;19971:30;19832:34;19902:25;19971:30;:11;:30;:::i;:40::-;-1:-1:-1;;;;;19938:12:0;;;;;;;:5;:12;;;;;;;;:19;;;;;;;;;;;;;;:73;;;;-1:-1:-1;;19746:273:0:o;6483:278::-;6569:7;6604:12;6597:5;6589:28;;;;-1:-1:-1;;;6589:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6589:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6628:9;6644:1;6640;:5;;;;;;;6483:278;-1:-1:-1;;;;;6483:278:0:o;4457:192::-;4543:7;4579:12;4571:6;;;;4563:29;;;;-1:-1:-1;;;4563:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4563:29:0;-1:-1:-1;;;4615:5:0;;;4457:192::o;15254:6638::-;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

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