Contract 0x8b41ba4ed214c78433829f2b8cadb887e4b17673

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x9e8b633d5b9c340345ef600c4ae04f0905b4f91ecf1d04c35abedc9cc9672a60Mint Reward109656662021-09-16 13:39:5514 hrs 16 mins ago0x0aff1ef54bc1da7a149ac31404021b96fe5da7f8 IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00201074
0x7cc28fbfe3bc6b95f8746330afe0899cdccf17b67868557633079bcad718026fMint Reward109653602021-09-16 13:24:3714 hrs 31 mins ago0x56412f1a60aafb03a33c5cf1ed0f24a73dfcc18a IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00195674
0x7f038e10992df50c39c69776d40cc0bc7fa79cc34e36bb77b16c83aae84642d7Mint Reward109441972021-09-15 19:44:261 day 8 hrs ago0x9648dfd4ca54b39f8882dd55e17bb145e8f42464 IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00195674
0x8b47772f09107cf0abb1a057dbb3adb519bd96edf6e2ef96a8eab1134a186170Mint Reward108829652021-09-13 16:32:453 days 11 hrs ago0xe9950bd20757705bb3d11f4a34a353d27b35bd22 IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00161879
0x66e10a4359e3cdd13a6306e3da3c89990f67d766d705b51ca03384b9b7d1fa0dMint Reward108782162021-09-13 12:33:463 days 15 hrs ago0x0b7f08cdacdaa6e0b9f8e7b114d41161ee96f0b0 IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00190274
0x0edd0714f5a3ee38c46da6c53c268ff07279a6a3f6f2ee20134b6a13be1cf11aApprove108618162021-09-12 22:52:244 days 5 hrs ago0x74023d943674df67ad9596e14bf93a3cee77b04e IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00007221
0x83bdecd461fa7457b24e729ed965439d4c03707710c91888cbc872344a08b44aApprove108537952021-09-12 16:10:294 days 11 hrs ago0x1bf94ace856a08c4d011f5fdcd8e3951d51c63b9 IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00007221
0xb2a48efa0eee79751700229e8ce2d9c99532b5d72652938b91accac8451c967eMint Reward108202982021-09-11 12:08:155 days 15 hrs ago0x9be3f353932b1c782afaf0e3fb5eade6eb6e4416 IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00203174
0xa6260baacffcbbf11ad5531f9335c9a0cafc5fa4b4d5de8163573a262bd55b32Approve108161862021-09-11 8:40:165 days 19 hrs ago0x98690784f847f891b6fb0fbaf0eb77bdef3efac5 IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.000101094
0x8c6bd931b937cc28d3371e2cf22dab12c95481995a1eace618ba5f149216e550Mint Reward108053032021-09-10 23:30:236 days 4 hrs ago0x56412f1a60aafb03a33c5cf1ed0f24a73dfcc18a IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00195674
0x15d698cbd2faf4d6384c4df4b0c5016cf0e37aeb16e71bdd860cc0d3273eb312Mint Reward107880062021-09-10 8:52:086 days 19 hrs ago0x04f5b04495676579b9b0e4bb7c908e1ee1fa2f2a IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00195674
0x0999095f74fe3e35a48e4c6438bfc1213e06411a4ab4ee984d11cbb7698eec2dMint Reward107738132021-09-09 20:55:317 days 7 hrs ago0x0c299759cd73af477f3b24411a00f5c3277245f2 IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00190274
0x9de0c722e943640f0af796377efc53e06e513786968a62bf75a23eff0d42cf9bApprove107563852021-09-09 6:14:277 days 21 hrs ago0x04f5b04495676579b9b0e4bb7c908e1ee1fa2f2a IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00022002
0x8a031c2571371403bceef512a517275fc3de944f94f382d725792e6751d2325fMint Reward107181972021-09-07 22:05:419 days 5 hrs ago0x04e5f00835eacecba7a183d98c84626def54091b IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00161879
0x2c344b2f1aae6479b8b51616dd2d0600f5f8f4cb6b408371a2de41c589144d59Mint Reward107168122021-09-07 20:56:119 days 7 hrs ago0xd79065db570b51de2de67160beb74bad01907a4f IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00161879
0x161fee5cb49c46f87ba0e4c1d02a7cec6bc8d1c6539b7b81b0d23aec6116fc75Mint Reward106554012021-09-05 17:07:2211 days 10 hrs ago0x86f95fbdd411537abff59d326791e09968909d03 IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00195674
0x5cd01922945399fe16b62e85d5100af9702500477a250ee1681c7b9697f710d7Mint Reward106523272021-09-05 14:32:5311 days 13 hrs ago0x1e8d8d2aa301169250538659142df6de1cedf244 IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00190274
0x04749a3b141d4fb0690b4ec553d35adfebee9710038662b2cc0f58d248d8a147Mint Reward106393102021-09-05 3:40:4012 days 15 mins ago0xd07ee1a1acc38205b69d3fa69c0b0129701db00a IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00161879
0x528799851c7912406580a25322e0a0aab3e8f443a138119d0807e1370d33e748Mint Reward106380932021-09-05 2:39:4112 days 1 hr ago0xd07ee1a1acc38205b69d3fa69c0b0129701db00a IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00161879
0x3feb3389e4a8ab0957e0b85b0ac304ce66973b96affffb8ef639b475a2bd19fbMint Reward106330072021-09-04 22:25:0512 days 5 hrs ago0x0c299759cd73af477f3b24411a00f5c3277245f2 IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00190274
0xdc00fbcb36e7a47763c671cb3f65414002c82c13b7161152cf7bea8be4fdfc12Mint Reward105942422021-09-03 13:54:1413 days 14 hrs ago0x86f95fbdd411537abff59d326791e09968909d03 IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00195674
0x854153d963a4b144c8e89d649462add0838fb9d7fc5f248a21e3124ff15910fdMint Reward105816882021-09-03 3:16:1114 days 40 mins ago0xd79065db570b51de2de67160beb74bad01907a4f IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00195674
0xc343f8741781b6e57040e30a77b388502f739f5a64dc977b5a6394847c0fca4aMint Reward105667812021-09-02 14:40:4314 days 13 hrs ago0x39a0eaa00c904c3c00c65b3d7c8e593fc884e4e5 IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00161879
0xe777e03201b1e9a7593af3b6d54ff99067876f1ccb90ee9bc5b3558955713cdaMint Reward105467852021-09-01 21:52:3915 days 6 hrs ago0x4ee5fddc33b9b89e6ecdfde6c991b9c1b94e52e1 IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00161879
0x5014f7148d74ee19edae01d002c901672dfd3cc9cf55f19c0d107637700f8531Mint Reward105145042021-08-31 18:34:4416 days 9 hrs ago0x788b6a65c24776139937d9a8cebb3ddcf0db9ccd IN  0x8b41ba4ed214c78433829f2b8cadb887e4b176730 BNB0.00176031
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xf9366d4843743ffc8c8f6ddce8dcf7a7a2af53eb54da592d889a10765984a7cb109449872021-09-15 20:23:561 day 7 hrs ago 0x8b41ba4ed214c78433829f2b8cadb887e4b17673 0x789c11212eaca5312d4aa6d63148613e658ccfad0.035109 BNB
0xf9366d4843743ffc8c8f6ddce8dcf7a7a2af53eb54da592d889a10765984a7cb109449872021-09-15 20:23:561 day 7 hrs ago 0xd0dd735851c1ca61d0324291ccd3959d2153a88d 0x8b41ba4ed214c78433829f2b8cadb887e4b176730.035109 BNB
0x04c1cbe16a94fe3e85cc740116353b4d03a5d95c59191eb2d423e61910ea772b109432882021-09-15 18:58:591 day 8 hrs ago 0x8b41ba4ed214c78433829f2b8cadb887e4b176730x9648dfd4ca54b39f8882dd55e17bb145e8f424640.000000019989098348 BNB
0x04c1cbe16a94fe3e85cc740116353b4d03a5d95c59191eb2d423e61910ea772b109432882021-09-15 18:58:591 day 8 hrs ago 0x789c11212eaca5312d4aa6d63148613e658ccfad 0x8b41ba4ed214c78433829f2b8cadb887e4b176730.000000019989098348 BNB
0x04c1cbe16a94fe3e85cc740116353b4d03a5d95c59191eb2d423e61910ea772b109432882021-09-15 18:58:591 day 8 hrs ago 0x8b41ba4ed214c78433829f2b8cadb887e4b17673 0x789c11212eaca5312d4aa6d63148613e658ccfad0.065072 BNB
0x04c1cbe16a94fe3e85cc740116353b4d03a5d95c59191eb2d423e61910ea772b109432882021-09-15 18:58:591 day 8 hrs ago 0xd0dd735851c1ca61d0324291ccd3959d2153a88d 0x8b41ba4ed214c78433829f2b8cadb887e4b176730.065072 BNB
0xf2149feaad011124688c62b9ace5f1d5ad3a4109c88bf4538024504ff22a6c57109432492021-09-15 18:57:021 day 8 hrs ago 0x8b41ba4ed214c78433829f2b8cadb887e4b17673 0x789c11212eaca5312d4aa6d63148613e658ccfad0.067018 BNB
0xf2149feaad011124688c62b9ace5f1d5ad3a4109c88bf4538024504ff22a6c57109432492021-09-15 18:57:021 day 8 hrs ago 0xd0dd735851c1ca61d0324291ccd3959d2153a88d 0x8b41ba4ed214c78433829f2b8cadb887e4b176730.067018 BNB
0x79e350c4def64984243cbdf99d49bc2e95e4738329c76a11185a68550c0206e8109383452021-09-15 14:51:491 day 13 hrs ago 0x8b41ba4ed214c78433829f2b8cadb887e4b176730xa791f752c25bf7f6fa6ab7e260384392222f16d70.000000244159643713 BNB
0x79e350c4def64984243cbdf99d49bc2e95e4738329c76a11185a68550c0206e8109383452021-09-15 14:51:491 day 13 hrs ago 0x789c11212eaca5312d4aa6d63148613e658ccfad 0x8b41ba4ed214c78433829f2b8cadb887e4b176730.000000244159643713 BNB
0x79e350c4def64984243cbdf99d49bc2e95e4738329c76a11185a68550c0206e8109383452021-09-15 14:51:491 day 13 hrs ago 0x8b41ba4ed214c78433829f2b8cadb887e4b17673 0x789c11212eaca5312d4aa6d63148613e658ccfad0.02558 BNB
0x79e350c4def64984243cbdf99d49bc2e95e4738329c76a11185a68550c0206e8109383452021-09-15 14:51:491 day 13 hrs ago 0xd0dd735851c1ca61d0324291ccd3959d2153a88d 0x8b41ba4ed214c78433829f2b8cadb887e4b176730.02558 BNB
0x623f731f475080f34d47ab5ee41ddc7104459e026bd1bc0b452364c87f1cfc9f109226342021-09-15 1:39:532 days 2 hrs ago 0x8b41ba4ed214c78433829f2b8cadb887e4b17673 0x789c11212eaca5312d4aa6d63148613e658ccfad0.3 BNB
0x623f731f475080f34d47ab5ee41ddc7104459e026bd1bc0b452364c87f1cfc9f109226342021-09-15 1:39:532 days 2 hrs ago 0xd0dd735851c1ca61d0324291ccd3959d2153a88d 0x8b41ba4ed214c78433829f2b8cadb887e4b176730.3 BNB
0xbd27d53154c84df583d3623ba278e56d5ad5c95856a47fbe9e3c310681741dcd108782982021-09-13 12:37:523 days 15 hrs ago 0x8b41ba4ed214c78433829f2b8cadb887e4b17673 0x789c11212eaca5312d4aa6d63148613e658ccfad1.232089 BNB
0xbd27d53154c84df583d3623ba278e56d5ad5c95856a47fbe9e3c310681741dcd108782982021-09-13 12:37:523 days 15 hrs ago 0xd0dd735851c1ca61d0324291ccd3959d2153a88d 0x8b41ba4ed214c78433829f2b8cadb887e4b176731.232089 BNB
0x23b7fd40586b0b47861a57f59e60a792f60cdd08843b431aefa7bc1d5aaf35fd107818722021-09-10 3:42:577 days 13 mins ago 0x8b41ba4ed214c78433829f2b8cadb887e4b17673 0x789c11212eaca5312d4aa6d63148613e658ccfad2.268463 BNB
0x23b7fd40586b0b47861a57f59e60a792f60cdd08843b431aefa7bc1d5aaf35fd107818722021-09-10 3:42:577 days 13 mins ago 0xd0dd735851c1ca61d0324291ccd3959d2153a88d 0x8b41ba4ed214c78433829f2b8cadb887e4b176732.268463 BNB
0x380fb8d4054667a22b6e53997a65a28c1d3ebb9e8080cb75a399d4b353871a48107360722021-09-08 13:09:118 days 14 hrs ago 0x8b41ba4ed214c78433829f2b8cadb887e4b176730x7895bd04c30e0b1f18785343da622ac28ad879130.000000096128540045 BNB
0x380fb8d4054667a22b6e53997a65a28c1d3ebb9e8080cb75a399d4b353871a48107360722021-09-08 13:09:118 days 14 hrs ago 0x789c11212eaca5312d4aa6d63148613e658ccfad 0x8b41ba4ed214c78433829f2b8cadb887e4b176730.000000096128540045 BNB
0x380fb8d4054667a22b6e53997a65a28c1d3ebb9e8080cb75a399d4b353871a48107360722021-09-08 13:09:118 days 14 hrs ago 0x8b41ba4ed214c78433829f2b8cadb887e4b17673 0x789c11212eaca5312d4aa6d63148613e658ccfad0.030168 BNB
0x380fb8d4054667a22b6e53997a65a28c1d3ebb9e8080cb75a399d4b353871a48107360722021-09-08 13:09:118 days 14 hrs ago 0xd0dd735851c1ca61d0324291ccd3959d2153a88d 0x8b41ba4ed214c78433829f2b8cadb887e4b176730.030168 BNB
0xb1c42067df56753654918fa38ff7e412ad07a4c0c0104c06059390c56f30d0d1106951042021-09-07 2:23:5110 days 1 hr ago 0x8b41ba4ed214c78433829f2b8cadb887e4b17673 0x789c11212eaca5312d4aa6d63148613e658ccfad0.009973 BNB
0xb1c42067df56753654918fa38ff7e412ad07a4c0c0104c06059390c56f30d0d1106951042021-09-07 2:23:5110 days 1 hr ago 0xd0dd735851c1ca61d0324291ccd3959d2153a88d 0x8b41ba4ed214c78433829f2b8cadb887e4b176730.009973 BNB
0xce2f9eebe21d34bd0b4027714682cc916e0184c44c9c10aa9cf8333f6f6d9280106846712021-09-06 17:35:3510 days 10 hrs ago 0x8b41ba4ed214c78433829f2b8cadb887e4b17673 0x789c11212eaca5312d4aa6d63148613e658ccfad0.000499 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x250AB85CDcaa1BEb956F44fb16A8321E07709498

Contract Name:
DemaxLP

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 2021-04-20
*/

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

// pragma solidity >=0.5.0;

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, 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/interfaces/ERC2917-Interface.sol

//SPDX-License-Identifier: MIT
// pragma solidity >=0.6.6;
// import '../interfaces/IERC20.sol';

interface IERC2917 is IERC20 {

    /// @dev This emit when interests amount per block is changed by the owner of the contract.
    /// It emits with the old interests amount and the new interests amount.
    event InterestRatePerBlockChanged (uint oldValue, uint newValue);

    /// @dev This emit when a users' productivity has changed
    /// It emits with the user's address and the the value after the change.
    event ProductivityIncreased (address indexed user, uint value);

    /// @dev This emit when a users' productivity has changed
    /// It emits with the user's address and the the value after the change.
    event ProductivityDecreased (address indexed user, uint value);

    /// @dev Return the current contract's interests rate per block.
    /// @return The amount of interests currently producing per each block.
    function interestsPerBlock() external view returns (uint);

    /// @notice Change the current contract's interests rate.
    /// @dev Note the best practice will be restrict the gross product provider's contract address to call this.
    /// @return The true/fase to notice that the value has successfully changed or not, when it succeed, it will emite the InterestRatePerBlockChanged event.
    function changeInterestRatePerBlock(uint value) external returns (bool);

    /// @notice It will get the productivity of given user.
    /// @dev it will return 0 if user has no productivity proved in the contract.
    /// @return user's productivity and overall productivity.
    function getProductivity(address user) external view returns (uint, uint);

    /// @notice increase a user's productivity.
    /// @dev Note the best practice will be restrict the callee to prove of productivity's contract address.
    /// @return true to confirm that the productivity added success.
    function increaseProductivity(address user, uint value) external returns (bool);

    /// @notice decrease a user's productivity.
    /// @dev Note the best practice will be restrict the callee to prove of productivity's contract address.
    /// @return true to confirm that the productivity removed success.
    function decreaseProductivity(address user, uint value) external returns (bool);

    /// @notice take() will return the interests that callee will get at current block height.
    /// @dev it will always calculated by block.number, so it will change when block height changes.
    /// @return amount of the interests that user are able to mint() at current block height.
    function take() external view returns (uint);

    /// @notice similar to take(), but with the block height joined to calculate return.
    /// @dev for instance, it returns (_amount, _block), which means at block height _block, the callee has accumulated _amount of interests.
    /// @return amount of interests and the block height.
    function takeWithBlock() external view returns (uint, uint);

    /// @notice mint the avaiable interests to callee.
    /// @dev once it mint, the amount of interests will transfer to callee's address.
    /// @return the amount of interests minted.
    function mint() external returns (uint);
}
// Dependency file: contracts/modules/BaseShareField.sol

// pragma solidity >=0.6.6;
// import '../interfaces/ERC2917-Interface.sol';
// import '../libraries/SafeMath.sol';
// import '../libraries/TransferHelper.sol';

contract BaseShareField {
    using SafeMath for uint;
    
    uint totalProductivity;
    uint accAmountPerShare;
    
    uint public totalShare;
    uint public mintedShare;
    uint public mintCumulation;
    
    address public shareToken;
    
    struct UserInfo {
        uint amount;     // How many tokens the user has provided.
        uint rewardDebt; // Reward debt. 
        uint rewardEarn; // Reward earn and not minted
    }

    mapping(address => UserInfo) public users;
    
    function _setShareToken(address _shareToken) internal {
        shareToken = _shareToken;
    }

    // Update reward variables of the given pool to be up-to-date.
    function _update() internal virtual {
        if (totalProductivity == 0) {
            totalShare = totalShare.add(_currentReward());
            return;
        }
        
        uint256 reward = _currentReward();
        accAmountPerShare = accAmountPerShare.add(reward.mul(1e12).div(totalProductivity));
        totalShare = totalShare.add(reward);
    }
    
    function _currentReward() internal virtual view returns (uint) {
        return mintedShare.add(IERC20(shareToken).balanceOf(address(this))).sub(totalShare);
    }
    
    // Audit user's reward to be up-to-date
    function _audit(address user) internal virtual {
        UserInfo storage userInfo = users[user];
        if (userInfo.amount > 0) {
            uint pending = userInfo.amount.mul(accAmountPerShare).div(1e12).sub(userInfo.rewardDebt);
            userInfo.rewardEarn = userInfo.rewardEarn.add(pending);
            mintCumulation = mintCumulation.add(pending);
            userInfo.rewardDebt = userInfo.amount.mul(accAmountPerShare).div(1e12);
        }
    }

    // External function call
    // This function increase user's productivity and updates the global productivity.
    // the users' actual share percentage will calculated by:
    // Formula:     user_productivity / global_productivity
    function _increaseProductivity(address user, uint value) internal virtual returns (bool) {
        require(value > 0, 'PRODUCTIVITY_VALUE_MUST_BE_GREATER_THAN_ZERO');

        UserInfo storage userInfo = users[user];
        _update();
        _audit(user);

        totalProductivity = totalProductivity.add(value);

        userInfo.amount = userInfo.amount.add(value);
        userInfo.rewardDebt = userInfo.amount.mul(accAmountPerShare).div(1e12);
        return true;
    }

    // External function call 
    // This function will decreases user's productivity by value, and updates the global productivity
    // it will record which block this is happenning and accumulates the area of (productivity * time)
    function _decreaseProductivity(address user, uint value) internal virtual returns (bool) {
        UserInfo storage userInfo = users[user];
        require(value > 0 && userInfo.amount >= value, 'INSUFFICIENT_PRODUCTIVITY');
        
        _update();
        _audit(user);
        
        userInfo.amount = userInfo.amount.sub(value);
        userInfo.rewardDebt = userInfo.amount.mul(accAmountPerShare).div(1e12);
        totalProductivity = totalProductivity.sub(value);
        
        return true;
    }
    
    function _takeWithAddress(address user) internal view returns (uint) {
        UserInfo storage userInfo = users[user];
        uint _accAmountPerShare = accAmountPerShare;
        // uint256 lpSupply = totalProductivity;
        if (totalProductivity != 0) {
            uint reward = _currentReward();
            _accAmountPerShare = _accAmountPerShare.add(reward.mul(1e12).div(totalProductivity));
        }
        return userInfo.amount.mul(_accAmountPerShare).div(1e12).add(userInfo.rewardEarn).sub(userInfo.rewardDebt);
    }

    // External function call
    // When user calls this function, it will calculate how many token will mint to user from his productivity * time
    // Also it calculates global token supply from last time the user mint to this time.
    function _mint(address user) internal virtual returns (uint) {
        _update();
        _audit(user);
        require(users[user].rewardEarn > 0, "NOTHING TO MINT");
        uint amount = users[user].rewardEarn;
        TransferHelper.safeTransfer(shareToken, msg.sender, amount);
        users[user].rewardEarn = 0;
        mintedShare += amount;
        return amount;
    }

    // Returns how many productivity a user has and global has.
    function getProductivity(address user) public virtual view returns (uint, uint) {
        return (users[user].amount, totalProductivity);
    }

    // Returns the current gorss product rate.
    function interestsPerBlock() public virtual view returns (uint) {
        return accAmountPerShare;
    }
    
}
// 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;
    }
}
pragma solidity >=0.6.6;

// import './libraries/SafeMath.sol';
// import './modules/BaseShareField.sol';

interface IDemaxPool {
    function queryReward(address _pair, address _user) external view returns(uint);
    function claimReward(address _pair, address _rewardToken) external;
}

interface IDemaxPair {
    function queryReward() external view returns (uint256 rewardAmount, uint256 blockNumber);
    function mintReward() external returns (uint256 userReward);
}

interface IDemaxDelegate {
    function addPlayerPair(address _user) external;
}

interface IDemaxPlatform{
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountA,
        uint256 amountB,
        uint256 amountAMin,
        uint256 amountBMin,
        uint256 deadline
    )
        external
        returns (
            uint256 _amountA,
            uint256 _amountB,
            uint256 _liquidity
        );
        
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 _amountToken,
            uint256 _amountETH,
            uint256 _liquidity
        );
    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);
    
    function pairFor(address tokenA, address tokenB) external view returns (address);
}

contract DemaxLP is BaseShareField {
    // ERC20 Start
    
    using SafeMath for uint;

    string public constant name = 'Burger LP';
    string public constant symbol = 'BLP';
    uint8 public constant decimals = 18;
    uint public totalSupply;
    
    mapping(address => uint) public balanceOf;
    mapping(address => mapping(address => uint)) public allowance;

    event Mint(address indexed user, uint amount);
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
    
    function _mint(address to, uint value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(address(0), to, value);
    }
    
    receive() external payable {
    }
    
    function _burn(address from, uint value) internal {
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _transfer(address from, address to, uint value) private {
        require(balanceOf[from] >= value, 'ERC20Token: INSUFFICIENT_BALANCE');
        balanceOf[from] = balanceOf[from].sub(value);
        balanceOf[to] = balanceOf[to].add(value);
        if (to == address(0)) { // burn
            totalSupply = totalSupply.sub(value);
        }

        IDemaxDelegate(owner).addPlayerPair(to);
        _mintReward();
        _decreaseProductivity(from, value);
        _increaseProductivity(to, value);
        emit Transfer(from, to, value);
    }

    function approve(address spender, uint value) external returns (bool) {
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint value) external returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint value) external returns (bool) {
        require(allowance[from][msg.sender] >= value, 'ERC20Token: INSUFFICIENT_ALLOWANCE');
        allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);
        _transfer(from, to, value);
        return true;
    }    
    
    // ERC20 End
    
    
    address public owner;
    address public POOL;
    address public PLATFORM;
    address public tokenA;
    address public tokenB;
    address public WETH;
    
    event AddLiquidity (address indexed user, uint amountA, uint amountB, uint value);
    event RemoveLiquidity (address indexed user, uint amountA, uint amountB, uint value);
    
    constructor() public {
        owner = msg.sender;
    }
    
    function initialize(address _tokenA, address _tokenB, address _DGAS, address _POOL, address _PLATFORM, address _WETH) external {
        require(msg.sender == owner, "Demax LP Forbidden");
        tokenA = _tokenA;
        tokenB = _tokenB;
        _setShareToken(_DGAS);
        PLATFORM = _PLATFORM;
        POOL = _POOL;
        WETH = _WETH;
    }
 
    function upgrade(address _PLATFORM) external {
        require(msg.sender == owner, "Demax LP Forbidden");
        PLATFORM = _PLATFORM;
    }

    function approveContract(address token, address spender, uint amount) internal {
        uint allowAmount = IERC20(token).totalSupply();
        if(allowAmount < amount) {
            allowAmount = amount;
        }
        if(IERC20(token).allowance(address(this), spender) < amount) {
            TransferHelper.safeApprove(token, spender, allowAmount);
        }
    }
    
    function addLiquidityETH(
        address user,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        uint256 deadline) external payable returns (
            uint256 _amountToken,
            uint256 _amountETH,
            uint256 _liquidity
        ) {
           require(msg.sender == owner, "Demax LP Forbidden");
           require(tokenA == WETH || tokenB == WETH, "INVALID CALL");
           address token = tokenA == WETH ? tokenB: tokenA;
           approveContract(token, PLATFORM, amountTokenDesired);
           TransferHelper.safeTransferFrom(token, msg.sender, address(this), amountTokenDesired);
           
           (_amountToken, _amountETH, _liquidity) = IDemaxPlatform(PLATFORM).addLiquidityETH{value: msg.value}(token, amountTokenDesired, amountTokenMin, amountETHMin, deadline);
           
           if(amountTokenDesired > _amountToken) {
                TransferHelper.safeTransfer(token, user, amountTokenDesired.sub(_amountToken));
            }
            
            if(msg.value > _amountETH) {
                TransferHelper.safeTransferETH(user, msg.value.sub(_amountETH));
            }
        _mintReward();
        _mint(user, _liquidity);
        _increaseProductivity(user, _liquidity);
        (uint amountA, uint amountB) = token == tokenA ? (_amountToken, _amountETH): (_amountETH, _amountToken);
        emit AddLiquidity (user, amountA, amountB, _liquidity);
    }
    
    function addLiquidity(
        address user,
        uint256 amountA,
        uint256 amountB,
        uint256 amountAMin,
        uint256 amountBMin,
        uint256 deadline) external returns (
            uint256 _amountA,
            uint256 _amountB,
            uint256 _liquidity
        ) {
            require(msg.sender == owner, "Demax LP Forbidden");
            approveContract(tokenA, PLATFORM, amountA);
            approveContract(tokenB, PLATFORM, amountB);
            TransferHelper.safeTransferFrom(tokenA, msg.sender, address(this), amountA);
            TransferHelper.safeTransferFrom(tokenB, msg.sender, address(this), amountB);
        (_amountA, _amountB, _liquidity) = IDemaxPlatform(PLATFORM).addLiquidity(tokenA, tokenB, amountA, amountB, amountAMin, amountBMin, deadline);
        if(amountA > _amountA) {
            TransferHelper.safeTransfer(tokenA, user, amountA.sub(_amountA));
        }
        
        if(amountB > _amountB) {
            TransferHelper.safeTransfer(tokenB, user, amountB.sub(_amountB));
        }
        
        _mintReward();
        _mint(user, _liquidity);
        _increaseProductivity(user, _liquidity);
        emit AddLiquidity (user, _amountA, _amountB, _liquidity);
    }
    
    function removeLiquidityETH (
        address user,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        uint256 deadline) external returns (uint256 _amountToken, uint256 _amountETH) {
         require(msg.sender == owner, "Demax LP Forbidden");
         require(tokenA == WETH || tokenB == WETH, "INVALID CALL");
         address token = tokenA == WETH ? tokenB: tokenA;
           
        (_amountToken, _amountETH) = IDemaxPlatform(PLATFORM).removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, user, deadline);
         
        _mintReward();
        _burn(user, liquidity);
        _decreaseProductivity(user, liquidity);
        (uint amountA, uint amountB) = token == tokenA ? (_amountToken, _amountETH): (_amountETH, _amountToken);
        emit RemoveLiquidity (user, amountA, amountB, liquidity);
    }
    
    function removeLiquidity(
        address user,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        uint256 deadline) external returns (
            uint256 _amountA,
            uint256 _amountB
        ) {
            require(msg.sender == owner, "Demax LP Forbidden");
        (_amountA, _amountB) = IDemaxPlatform(PLATFORM).removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, user, deadline);
        
        _mintReward();
        _burn(user, liquidity);
        _decreaseProductivity(user, liquidity);
        emit RemoveLiquidity (user, _amountA, _amountB, liquidity);
    }
    
    function _currentReward() internal override view returns (uint) {
        address pair = IDemaxPlatform(PLATFORM).pairFor(tokenA, tokenB);
        uint countractAmount = mintedShare.add(IERC20(shareToken).balanceOf(address(this))).sub(totalShare);
        if(pair != address(0)) {
            uint poolAmount = IDemaxPool(POOL).queryReward(pair, address(this));
            (uint pairAmount, ) = IDemaxPair(pair).queryReward();
            return countractAmount.add(poolAmount).add(pairAmount);
        } else {
            return countractAmount;
        }
    }
    
    function _mintReward() internal {
        address pair = IDemaxPlatform(PLATFORM).pairFor(tokenA, tokenB);
        if(pair != address(0)) {
            uint poolAmount = IDemaxPool(POOL).queryReward(pair, address(this));
            (uint pairAmount, ) = IDemaxPair(pair).queryReward();
            if(poolAmount > 0) {
                IDemaxPool(POOL).claimReward(pair, shareToken);
            }
            
            if(pairAmount > 0) {
                IDemaxPair(pair).mintReward();
            }
        } 
    }
    
    function queryReward() external view returns (uint) {
        return _takeWithAddress(msg.sender);
    }
    
    function mintReward() external returns (uint amount) {
        _mintReward();
        amount = _mint(msg.sender);
        emit Mint(msg.sender, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountA","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"AddLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountA","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"RemoveLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"PLATFORM","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POOL","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":"user","type":"address"},{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"_amountA","type":"uint256"},{"internalType":"uint256","name":"_amountB","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"_amountToken","type":"uint256"},{"internalType":"uint256","name":"_amountETH","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getProductivity","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenA","type":"address"},{"internalType":"address","name":"_tokenB","type":"address"},{"internalType":"address","name":"_DGAS","type":"address"},{"internalType":"address","name":"_POOL","type":"address"},{"internalType":"address","name":"_PLATFORM","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"interestsPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintCumulation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintReward","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintedShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"queryReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"_amountA","type":"uint256"},{"internalType":"uint256","name":"_amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"_amountToken","type":"uint256"},{"internalType":"uint256","name":"_amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shareToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenA","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_PLATFORM","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"rewardEarn","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50600a80546001600160a01b03191633179055612a05806100326000396000f3fe6080604052600436106101d15760003560e01c806370a08231116100f7578063a9059cbb11610095578063cf67536511610064578063cf675365146106e1578063d14c9641146106f6578063dd62ed3e1461070b578063f6f1e30614610746576101d8565b8063a9059cbb14610623578063ad5c46481461065c578063bfc8b20814610671578063cc2a9a5b14610686576101d8565b80638da5cb5b116100d15780638da5cb5b1461057b57806395d89b4114610590578063a2ad989f146105a5578063a87430ba146105f0576101d8565b806370a082311461051e5780637535d246146105515780637efc77fa14610566576101d8565b806318160ddd1161016f5780632c79db111161013e5780632c79db11146104b4578063313ce567146104c95780635f64b55b146104f45780636c9fa59e14610509576101d8565b806318160ddd146103ba57806323b872dd146103cf5780632563e4261461041257806328e964e914610481576101d8565b8063095ea7b3116101ab578063095ea7b3146102c35780630fc63d10146103105780631392808214610341578063174f57af146103a5576101d8565b8063026c4207146101dd57806306fdde03146102045780630900f0101461028e576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610784565b60408051918252519081900360200190f35b34801561021057600080fd5b5061021961078a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025357818101518382015260200161023b565b50505050905090810190601f1680156102805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029a57600080fd5b506102c1600480360360208110156102b157600080fd5b50356001600160a01b03166107af565b005b3480156102cf57600080fd5b506102fc600480360360408110156102e657600080fd5b506001600160a01b038135169060200135610825565b604080519115158252519081900360200190f35b34801561031c57600080fd5b5061032561088c565b604080516001600160a01b039092168252519081900360200190f35b34801561034d57600080fd5b5061038c600480360360a081101561036457600080fd5b506001600160a01b03813516906020810135906040810135906060810135906080013561089b565b6040805192835260208301919091528051918290030190f35b3480156103b157600080fd5b506101f2610a1b565b3480156103c657600080fd5b506101f2610a69565b3480156103db57600080fd5b506102fc600480360360608110156103f257600080fd5b506001600160a01b03813581169160208101359091169060400135610a6f565b34801561041e57600080fd5b50610463600480360360c081101561043557600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a00135610b3e565b60408051938452602084019290925282820152519081900360600190f35b34801561048d57600080fd5b5061038c600480360360208110156104a457600080fd5b50356001600160a01b0316610d8e565b3480156104c057600080fd5b506101f2610dac565b3480156104d557600080fd5b506104de610dbd565b6040805160ff9092168252519081900360200190f35b34801561050057600080fd5b50610325610dc2565b34801561051557600080fd5b50610325610dd1565b34801561052a57600080fd5b506101f26004803603602081101561054157600080fd5b50356001600160a01b0316610de0565b34801561055d57600080fd5b50610325610df2565b34801561057257600080fd5b50610325610e01565b34801561058757600080fd5b50610325610e10565b34801561059c57600080fd5b50610219610e1f565b3480156105b157600080fd5b5061038c600480360360a08110156105c857600080fd5b506001600160a01b038135169060208101359060408101359060608101359060800135610e3e565b3480156105fc57600080fd5b506104636004803603602081101561061357600080fd5b50356001600160a01b0316611087565b34801561062f57600080fd5b506102fc6004803603604081101561064657600080fd5b506001600160a01b0381351690602001356110a8565b34801561066857600080fd5b506103256110be565b34801561067d57600080fd5b506101f26110cd565b34801561069257600080fd5b506102c1600480360360c08110156106a957600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608082013581169160a00135166110d3565b3480156106ed57600080fd5b506101f26111a0565b34801561070257600080fd5b506101f26111a6565b34801561071757600080fd5b506101f26004803603604081101561072e57600080fd5b506001600160a01b03813581169160200135166111ac565b610463600480360360a081101561075c57600080fd5b506001600160a01b0381351690602081013590604081013590606081013590608001356111c9565b60025481565b604051806040016040528060098152602001680427572676572204c560bc1b81525081565b600a546001600160a01b03163314610803576040805162461bcd60e51b81526020600482015260126024820152712232b6b0bc102628102337b93134b23232b760711b604482015290519081900360640190fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b600d546001600160a01b031681565b600a5460009081906001600160a01b031633146108f4576040805162461bcd60e51b81526020600482015260126024820152712232b6b0bc102628102337b93134b23232b760711b604482015290519081900360640190fd5b600c54600d54600e5460408051635d5155ef60e11b81526001600160a01b0393841660048201529183166024830152604482018a905260648201899052608482018890528a831660a483015260c482018790528051929093169263baa2abde9260e4808401938290030181600087803b15801561097057600080fd5b505af1158015610984573d6000803e3d6000fd5b505050506040513d604081101561099a57600080fd5b50805160209091015190925090506109b061147f565b6109ba87876116f9565b6109c48787611796565b50604080518381526020810183905280820188905290516001600160a01b038916917f59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa919081900360600190a29550959350505050565b6000610a2561147f565b610a2e33611884565b60408051828152905191925033917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859181900360200190a290565b60075481565b6001600160a01b0383166000908152600960209081526040808320338452909152812054821115610ad15760405162461bcd60e51b815260040180806020018281038252602281526020018061291a6022913960400191505060405180910390fd5b6001600160a01b0384166000908152600960209081526040808320338452909152902054610b05908363ffffffff61194e16565b6001600160a01b0385166000908152600960209081526040808320338452909152902055610b34848484611997565b5060019392505050565b600a54600090819081906001600160a01b03163314610b99576040805162461bcd60e51b81526020600482015260126024820152712232b6b0bc102628102337b93134b23232b760711b604482015290519081900360640190fd5b600d54600c54610bb6916001600160a01b0390811691168a611b6d565b600e54600c54610bd3916001600160a01b03908116911689611b6d565b600d54610beb906001600160a01b031633308b611c74565b600e54610c03906001600160a01b031633308a611c74565b600c54600d54600e5460408051630f5c0dcb60e31b81526001600160a01b0393841660048201529183166024830152604482018c9052606482018b9052608482018a905260a4820189905260c48201889052519190921691637ae06e589160e48083019260609291908290030181600087803b158015610c8257600080fd5b505af1158015610c96573d6000803e3d6000fd5b505050506040513d6060811015610cac57600080fd5b5080516020820151604090920151909450909250905082881115610cf057600d54610cf0906001600160a01b03168a610ceb8b8763ffffffff61194e16565b611dd1565b81871115610d1957600e54610d19906001600160a01b03168a610ceb8a8663ffffffff61194e16565b610d2161147f565b610d2b8982611f34565b610d358982611fcb565b50604080518481526020810184905280820183905290516001600160a01b038b16917fbeb3885786d637a474cbc287c0a44587231633a077f0bd30354d5a4b18996fce919081900360600190a296509650969350505050565b6001600160a01b031660009081526006602052604081205490549091565b6000610db73361208a565b90505b90565b601281565b600e546001600160a01b031681565b6005546001600160a01b031681565b60086020526000908152604090205481565b600b546001600160a01b031681565b600c546001600160a01b031681565b600a546001600160a01b031681565b604051806040016040528060038152602001620424c560ec1b81525081565b600a5460009081906001600160a01b03163314610e97576040805162461bcd60e51b81526020600482015260126024820152712232b6b0bc102628102337b93134b23232b760711b604482015290519081900360640190fd5b600f54600d546001600160a01b0390811691161480610ec65750600f54600e546001600160a01b039081169116145b610f06576040805162461bcd60e51b815260206004820152600c60248201526b125395905312510810d0531360a21b604482015290519081900360640190fd5b600f54600d546000916001600160a01b03918216911614610f3257600d546001600160a01b0316610f3f565b600e546001600160a01b03165b600c5460408051629d473b60e21b81526001600160a01b038085166004830152602482018c9052604482018b9052606482018a90528c8116608483015260a482018990528251949550909216926302751cec9260c48082019392918290030181600087803b158015610fb057600080fd5b505af1158015610fc4573d6000803e3d6000fd5b505050506040513d6040811015610fda57600080fd5b5080516020909101519093509150610ff061147f565b610ffa88886116f9565b6110048888611796565b50600d5460009081906001600160a01b03848116911614611026578385611029565b84845b60408051838152602081018390528082018d905290519294509092506001600160a01b038c16917f59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa9181900360600190a25050509550959350505050565b60066020526000908152604090208054600182015460029092015490919083565b60006110b5338484611997565b50600192915050565b600f546001600160a01b031681565b60015490565b600a546001600160a01b03163314611127576040805162461bcd60e51b81526020600482015260126024820152712232b6b0bc102628102337b93134b23232b760711b604482015290519081900360640190fd5b600d80546001600160a01b038089166001600160a01b031992831617909255600e8054928816929091169190911790556111608461213a565b600c80546001600160a01b03199081166001600160a01b0394851617909155600b8054821694841694909417909355600f80549093169116179055505050565b60045481565b60035481565b600960209081526000928352604080842090915290825290205481565b600a54600090819081906001600160a01b03163314611224576040805162461bcd60e51b81526020600482015260126024820152712232b6b0bc102628102337b93134b23232b760711b604482015290519081900360640190fd5b600f54600d546001600160a01b03908116911614806112535750600f54600e546001600160a01b039081169116145b611293576040805162461bcd60e51b815260206004820152600c60248201526b125395905312510810d0531360a21b604482015290519081900360640190fd5b600f54600d546000916001600160a01b039182169116146112bf57600d546001600160a01b03166112cc565b600e546001600160a01b03165b600c549091506112e79082906001600160a01b03168a611b6d565b6112f38133308b611c74565b600c5460408051637b78f18360e11b81526001600160a01b038481166004830152602482018c9052604482018b9052606482018a9052608482018990529151919092169163f6f1e30691349160a48082019260609290919082900301818588803b15801561136057600080fd5b505af1158015611374573d6000803e3d6000fd5b50505050506040513d606081101561138b57600080fd5b50805160208201516040909201519095509093509150838811156113be576113be818a610ceb8b8863ffffffff61194e16565b823411156113df576113df896113da348663ffffffff61194e16565b61215c565b6113e761147f565b6113f18983611f34565b6113fb8983611fcb565b50600d5460009081906001600160a01b0384811691161461141d578486611420565b85855b604080518381526020810183905280820188905290519294509092506001600160a01b038d16917fbeb3885786d637a474cbc287c0a44587231633a077f0bd30354d5a4b18996fce9181900360600190a2505050955095509592505050565b600c54600d54600e54604080516396ed28f960e01b81526001600160a01b03938416600482015291831660248301525160009392909216916396ed28f991604480820192602092909190829003018186803b1580156114dd57600080fd5b505afa1580156114f1573d6000803e3d6000fd5b505050506040513d602081101561150757600080fd5b505190506001600160a01b038116156116f657600b54604080516305ea697560e31b81526001600160a01b03848116600483015230602483015291516000939290921691632f534ba891604480820192602092909190829003018186803b15801561157157600080fd5b505afa158015611585573d6000803e3d6000fd5b505050506040513d602081101561159b57600080fd5b505160408051632c79db1160e01b815281519293506000926001600160a01b03861692632c79db119260048082019391829003018186803b1580156115df57600080fd5b505afa1580156115f3573d6000803e3d6000fd5b505050506040513d604081101561160957600080fd5b50519050811561168557600b54600554604080516324a9e3c160e11b81526001600160a01b038781166004830152928316602482015290519190921691634953c78291604480830192600092919082900301818387803b15801561166c57600080fd5b505af1158015611680573d6000803e3d6000fd5b505050505b80156116f357826001600160a01b031663174f57af6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156116c657600080fd5b505af11580156116da573d6000803e3d6000fd5b505050506040513d60208110156116f057600080fd5b50505b50505b50565b6001600160a01b038216600090815260086020526040902054611722908263ffffffff61194e16565b6001600160a01b03831660009081526008602052604090205560075461174e908263ffffffff61194e16565b6007556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b038216600090815260066020526040812082158015906117be575080548311155b61180f576040805162461bcd60e51b815260206004820152601960248201527f494e53554646494349454e545f50524f44554354495649545900000000000000604482015290519081900360640190fd5b61181761224f565b611820846122d1565b8054611832908463ffffffff61194e16565b80825560015461185f9164e8d4a5100091611853919063ffffffff61237916565b9063ffffffff6123d216565b6001820155600054611877908463ffffffff61194e16565b6000555060019392505050565b600061188e61224f565b611897826122d1565b6001600160a01b0382166000908152600660205260409020600201546118f6576040805162461bcd60e51b815260206004820152600f60248201526e1393d512125391c81513c813525395608a1b604482015290519081900360640190fd5b6001600160a01b03808316600090815260066020526040902060020154600554909161192491163383611dd1565b6001600160a01b039290921660009081526006602052604081206002015550600380548201905590565b600061199083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612414565b9392505050565b6001600160a01b038316600090815260086020526040902054811115611a04576040805162461bcd60e51b815260206004820181905260248201527f4552433230546f6b656e3a20494e53554646494349454e545f42414c414e4345604482015290519081900360640190fd5b6001600160a01b038316600090815260086020526040902054611a2d908263ffffffff61194e16565b6001600160a01b038085166000908152600860205260408082209390935590841681522054611a62908263ffffffff6124ab16565b6001600160a01b038316600081815260086020526040902091909155611a9957600754611a95908263ffffffff61194e16565b6007555b600a54604080516318c6762f60e21b81526001600160a01b03858116600483015291519190921691636319d8bc91602480830192600092919082900301818387803b158015611ae757600080fd5b505af1158015611afb573d6000803e3d6000fd5b50505050611b0761147f565b611b118382611796565b50611b1c8282611fcb565b50816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ba857600080fd5b505afa158015611bbc573d6000803e3d6000fd5b505050506040513d6020811015611bd257600080fd5b5051905081811015611be15750805b60408051636eb1769f60e11b81523060048201526001600160a01b0385811660248301529151849287169163dd62ed3e916044808301926020929190829003018186803b158015611c3157600080fd5b505afa158015611c45573d6000803e3d6000fd5b505050506040513d6020811015611c5b57600080fd5b50511015611c6e57611c6e848483612505565b50505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b60208310611cf95780518252601f199092019160209182019101611cda565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d5b576040519150601f19603f3d011682016040523d82523d6000602084013e611d60565b606091505b5091509150818015611d8e575080511580611d8e5750808060200190516020811015611d8b57600080fd5b50515b611dc95760405162461bcd60e51b81526004018080602001828103825260248152602001806129ac6024913960400191505060405180910390fd5b505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310611e4e5780518252601f199092019160209182019101611e2f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611eb0576040519150601f19603f3d011682016040523d82523d6000602084013e611eb5565b606091505b5091509150818015611ee3575080511580611ee35750808060200190516020811015611ee057600080fd5b50515b6116f0576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b600754611f47908263ffffffff6124ab16565b6007556001600160a01b038216600090815260086020526040902054611f73908263ffffffff6124ab16565b6001600160a01b03831660008181526008602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600080821161200b5760405162461bcd60e51b815260040180806020018281038252602c815260200180612980602c913960400191505060405180910390fd5b6001600160a01b038316600090815260066020526040902061202b61224f565b612034846122d1565b600054612047908463ffffffff6124ab16565b600055805461205c908463ffffffff6124ab16565b80825560015461207d9164e8d4a5100091611853919063ffffffff61237916565b6001918201559392505050565b6001600160a01b03811660009081526006602052604081206001548254156120ea5760006120b6612668565b90506120e66120d960005461185364e8d4a510008561237990919063ffffffff16565b839063ffffffff6124ab16565b9150505b6121328260010154612126846002015461211a64e8d4a5100061185387896000015461237990919063ffffffff16565b9063ffffffff6124ab16565b9063ffffffff61194e16565b949350505050565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106121a85780518252601f199092019160209182019101612189565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461220a576040519150601f19603f3d011682016040523d82523d6000602084013e61220f565b606091505b50509050806116f35760405162461bcd60e51b815260040180806020018281038252602381526020018061295d6023913960400191505060405180910390fd5b60005461227857612270612261612668565b6002549063ffffffff6124ab16565b6002556122cf565b6000612282612668565b90506122b46122a560005461185364e8d4a510008561237990919063ffffffff16565b6001549063ffffffff6124ab16565b6001556002546122ca908263ffffffff6124ab16565b600255505b565b6001600160a01b038116600090815260066020526040902080541561237557600061231c826001015461212664e8d4a51000611853600154876000015461237990919063ffffffff16565b6002830154909150612334908263ffffffff6124ab16565b600283015560045461234c908263ffffffff6124ab16565b600455600154825461236e9164e8d4a51000916118539163ffffffff61237916565b6001830155505b5050565b60008261238857506000610886565b8282028284828161239557fe5b04146119905760405162461bcd60e51b815260040180806020018281038252602181526020018061293c6021913960400191505060405180910390fd5b600061199083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128b4565b600081848411156124a35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611990576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106125825780518252601f199092019160209182019101612563565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146125e4576040519150601f19603f3d011682016040523d82523d6000602084013e6125e9565b606091505b5091509150818015612617575080511580612617575080806020019051602081101561261457600080fd5b50515b6116f0576040805162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015290519081900360640190fd5b600c54600d54600e54604080516396ed28f960e01b81526001600160a01b039384166004820152918316602483015251600093849316916396ed28f9916044808301926020929190829003018186803b1580156126c457600080fd5b505afa1580156126d8573d6000803e3d6000fd5b505050506040513d60208110156126ee57600080fd5b5051600254600554604080516370a0823160e01b815230600482015290519394506000936127889392612126926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561274d57600080fd5b505afa158015612761573d6000803e3d6000fd5b505050506040513d602081101561277757600080fd5b50516003549063ffffffff6124ab16565b90506001600160a01b038216156128ab57600b54604080516305ea697560e31b81526001600160a01b03858116600483015230602483015291516000939290921691632f534ba891604480820192602092909190829003018186803b1580156127f057600080fd5b505afa158015612804573d6000803e3d6000fd5b505050506040513d602081101561281a57600080fd5b505160408051632c79db1160e01b815281519293506000926001600160a01b03871692632c79db119260048082019391829003018186803b15801561285e57600080fd5b505afa158015612872573d6000803e3d6000fd5b505050506040513d604081101561288857600080fd5b505190506128a08161211a858563ffffffff6124ab16565b945050505050610dba565b9150610dba9050565b600081836129035760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612468578181015183820152602001612450565b50600083858161290f57fe5b049594505050505056fe4552433230546f6b656e3a20494e53554646494349454e545f414c4c4f57414e4345536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657248656c7065723a204554485f5452414e534645525f4641494c454450524f4455435449564954595f56414c55455f4d5553545f42455f475245415445525f5448414e5f5a45524f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a26469706673582212203ac9df9c47f341cd5f0c0e1b8c6f68abfa842866e3f800a5fd39515bfa2c0dac64736f6c63430006060033

Deployed ByteCode Sourcemap

18372:9483:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;6263:22:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6263:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;18472:41;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18472:41:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;18472:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21546:145;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21546:145:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21546:145:0;-1:-1:-1;;;;;21546:145:0;;:::i;:::-;;20026:201;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20026:201:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;20026:201:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;20835:21;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20835:21:0;;;:::i;:::-;;;;-1:-1:-1;;;;;20835:21:0;;;;;;;;;;;;;;25776:652;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25776:652:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;25776:652:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;27690:162;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27690:162:0;;;:::i;18606:23::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18606:23:0;;;:::i;20382:324::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20382:324:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;20382:324:0;;;;;;;;;;;;;;;;;:::i;23596:1268::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23596:1268:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;23596:1268:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;10668:145;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10668:145:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10668:145:0;-1:-1:-1;;;;;10668:145:0;;:::i;27572:106::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27572:106:0;;;:::i;18564:35::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18564:35:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20863:21;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20863:21:0;;;:::i;6361:25::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6361:25:0;;;:::i;18642:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18642:41:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18642:41:0;-1:-1:-1;;;;;18642:41:0;;:::i;20779:19::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20779:19:0;;;:::i;20805:23::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20805:23:0;;;:::i;20752:20::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20752:20:0;;;:::i;18520:37::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18520:37:0;;;:::i;24876:888::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24876:888:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;24876:888:0;;;;;;;;;;;;;;;;;;;;;;;:::i;6598:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6598:41:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;6598:41:0;-1:-1:-1;;;;;6598:41:0;;:::i;20235:139::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20235:139:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;20235:139:0;;;;;;;;:::i;20891:19::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20891:19:0;;;:::i;10869:107::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10869:107:0;;;:::i;21178:359::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21178:359:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;21178:359:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6322:26::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6322:26:0;;;:::i;6292:23::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6292:23:0;;;:::i;18690:61::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18690:61:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;18690:61:0;;;;;;;;;;:::i;22090:1494::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;22090:1494:0;;;;;;;;;;;;;;;;;;;;;;;:::i;6263:22::-;;;;:::o;18472:41::-;;;;;;;;;;;;;;-1:-1:-1;;;18472:41:0;;;;:::o;21546:145::-;21624:5;;-1:-1:-1;;;;;21624:5:0;21610:10;:19;21602:50;;;;;-1:-1:-1;;;21602:50:0;;;;;;;;;;;;-1:-1:-1;;;21602:50:0;;;;;;;;;;;;;;;21663:8;:20;;-1:-1:-1;;;;;;21663:20:0;-1:-1:-1;;;;;21663:20:0;;;;;;;;;;21546:145::o;20026:201::-;20117:10;20090:4;20107:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;20107:30:0;;;;;;;;;;;:38;;;20161:36;;;;;;;20090:4;;20107:30;;20117:10;;20161:36;;;;;;;;-1:-1:-1;20215:4:0;20026:201;;;;;:::o;20835:21::-;;;-1:-1:-1;;;;;20835:21:0;;:::o;25776:652::-;26066:5;;25970:16;;;;-1:-1:-1;;;;;26066:5:0;26052:10;:19;26044:50;;;;;-1:-1:-1;;;26044:50:0;;;;;;;;;;;;-1:-1:-1;;;26044:50:0;;;;;;;;;;;;;;;26143:8;;26169:6;;26177;;26128:107;;;-1:-1:-1;;;26128:107:0;;-1:-1:-1;;;;;26169:6:0;;;26128:107;;;;26177:6;;;26128:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26143:8;;;;;26128:40;;:107;;;;;;;;;;26143:8;;26128:107;;;2:2:-1;;;;27:1;24;17:12;2:2;26128:107:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26128:107:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26128:107:0;;;;;;;;;-1:-1:-1;26128:107:0;-1:-1:-1;26256:13:0;:11;:13::i;:::-;26280:22;26286:4;26292:9;26280:5;:22::i;:::-;26313:38;26335:4;26341:9;26313:21;:38::i;:::-;-1:-1:-1;26367:53:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26367:53:0;;;;;;;;;;;;;25776:652;;;;;;;;:::o;27690:162::-;27730:11;27754:13;:11;:13::i;:::-;27787:17;27793:10;27787:5;:17::i;:::-;27820:24;;;;;;;;27778:26;;-1:-1:-1;27825:10:0;;27820:24;;;;;;;;;27690:162;:::o;18606:23::-;;;;:::o;20382:324::-;-1:-1:-1;;;;;20485:15:0;;20460:4;20485:15;;;:9;:15;;;;;;;;20501:10;20485:27;;;;;;;;:36;-1:-1:-1;20485:36:0;20477:83;;;;-1:-1:-1;;;20477:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20601:15:0;;;;;;:9;:15;;;;;;;;20617:10;20601:27;;;;;;;;:38;;20633:5;20601:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;20571:15:0;;;;;;:9;:15;;;;;;;;20587:10;20571:27;;;;;;;:68;20650:26;20581:4;20666:2;20670:5;20650:9;:26::i;:::-;-1:-1:-1;20694:4:0;20382:324;;;;;:::o;23596:1268::-;23940:5;;23811:16;;;;;;-1:-1:-1;;;;;23940:5:0;23926:10;:19;23918:50;;;;;-1:-1:-1;;;23918:50:0;;;;;;;;;;;;-1:-1:-1;;;23918:50:0;;;;;;;;;;;;;;;23999:6;;24007:8;;23983:42;;-1:-1:-1;;;;;23999:6:0;;;;24007:8;24017:7;23983:15;:42::i;:::-;24056:6;;24064:8;;24040:42;;-1:-1:-1;;;;;24056:6:0;;;;24064:8;24074:7;24040:15;:42::i;:::-;24129:6;;24097:75;;-1:-1:-1;;;;;24129:6:0;24137:10;24157:4;24164:7;24097:31;:75::i;:::-;24219:6;;24187:75;;-1:-1:-1;;;;;24219:6:0;24227:10;24247:4;24254:7;24187:31;:75::i;:::-;24323:8;;24346:6;;24354;;24308:105;;;-1:-1:-1;;;24308:105:0;;-1:-1:-1;;;;;24346:6:0;;;24308:105;;;;24354:6;;;24308:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24323:8;;;;;24308:37;;:105;;;;;;;;;;;;;;24323:8;;24308:105;;;2:2:-1;;;;27:1;24;17:12;2:2;24308:105:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24308:105:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24308:105:0;;;;;;;;;;;;;-1:-1:-1;24308:105:0;;-1:-1:-1;24308:105:0;-1:-1:-1;24427:18:0;;;24424:114;;;24490:6;;24462:64;;-1:-1:-1;;;;;24490:6:0;24498:4;24504:21;:7;24516:8;24504:21;:11;:21;:::i;:::-;24462:27;:64::i;:::-;24571:8;24561:7;:18;24558:114;;;24624:6;;24596:64;;-1:-1:-1;;;;;24624:6:0;24632:4;24638:21;:7;24650:8;24638:21;:11;:21;:::i;24596:64::-;24692:13;:11;:13::i;:::-;24716:23;24722:4;24728:10;24716:5;:23::i;:::-;24750:39;24772:4;24778:10;24750:21;:39::i;:::-;-1:-1:-1;24805:51:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24805:51:0;;;;;;;;;;;;;23596:1268;;;;;;;;;;:::o;10668:145::-;-1:-1:-1;;;;;10767:11:0;10736:4;10767:11;;;:5;:11;;;;;:18;10787:17;;10767:18;;10668:145::o;27572:106::-;27618:4;27642:28;27659:10;27642:16;:28::i;:::-;27635:35;;27572:106;;:::o;18564:35::-;18597:2;18564:35;:::o;20863:21::-;;;-1:-1:-1;;;;;20863:21:0;;:::o;6361:25::-;;;-1:-1:-1;;;;;6361:25:0;;:::o;18642:41::-;;;;;;;;;;;;;:::o;20779:19::-;;;-1:-1:-1;;;;;20779:19:0;;:::o;20805:23::-;;;-1:-1:-1;;;;;20805:23:0;;:::o;20752:20::-;;;-1:-1:-1;;;;;20752:20:0;;:::o;18520:37::-;;;;;;;;;;;;;;-1:-1:-1;;;18520:37:0;;;;:::o;24876:888::-;25142:5;;25066:20;;;;-1:-1:-1;;;;;25142:5:0;25128:10;:19;25120:50;;;;;-1:-1:-1;;;25120:50:0;;;;;;;;;;;;-1:-1:-1;;;25120:50:0;;;;;;;;;;;;;;;25200:4;;25190:6;;-1:-1:-1;;;;;25190:6:0;;;25200:4;;25190:14;;:32;;-1:-1:-1;25218:4:0;;25208:6;;-1:-1:-1;;;;;25208:6:0;;;25218:4;;25208:14;25190:32;25182:57;;;;;-1:-1:-1;;;25182:57:0;;;;;;;;;;;;-1:-1:-1;;;25182:57:0;;;;;;;;;;;;;;;25277:4;;25267:6;;25251:13;;-1:-1:-1;;;;;25267:6:0;;;25277:4;;25267:14;:31;;25292:6;;-1:-1:-1;;;;;25292:6:0;25267:31;;;25284:6;;-1:-1:-1;;;;;25284:6:0;25267:31;25366:8;;25351:107;;;-1:-1:-1;;;25351:107:0;;-1:-1:-1;;;;;25351:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25251:47;;-1:-1:-1;25366:8:0;;;;25351:43;;:107;;;;;;;;;;;;25366:8;;25351:107;;;2:2:-1;;;;27:1;24;17:12;2:2;25351:107:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25351:107:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25351:107:0;;;;;;;;;-1:-1:-1;25351:107:0;-1:-1:-1;25480:13:0;:11;:13::i;:::-;25504:22;25510:4;25516:9;25504:5;:22::i;:::-;25537:38;25559:4;25565:9;25537:21;:38::i;:::-;-1:-1:-1;25626:6:0;;25587:12;;;;-1:-1:-1;;;;;25617:15:0;;;25626:6;;25617:15;:72;;25664:10;25676:12;25617:72;;;25636:12;25650:10;25617:72;25705:51;;;;;;;;;;;;;;;;;;;;25586:103;;-1:-1:-1;25586:103:0;;-1:-1:-1;;;;;;25705:51:0;;;;;;;;;;;;24876:888;;;;;;;;;;;:::o;6598:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20235:139::-;20295:4;20312:32;20322:10;20334:2;20338:5;20312:9;:32::i;:::-;-1:-1:-1;20362:4:0;20235:139;;;;:::o;20891:19::-;;;-1:-1:-1;;;;;20891:19:0;;:::o;10869:107::-;10951:17;;10869:107;:::o;21178:359::-;21338:5;;-1:-1:-1;;;;;21338:5:0;21324:10;:19;21316:50;;;;;-1:-1:-1;;;21316:50:0;;;;;;;;;;;;-1:-1:-1;;;21316:50:0;;;;;;;;;;;;;;;21377:6;:16;;-1:-1:-1;;;;;21377:16:0;;;-1:-1:-1;;;;;;21377:16:0;;;;;;;21404:6;:16;;;;;;;;;;;;;;;21431:21;21446:5;21431:14;:21::i;:::-;21463:8;:20;;-1:-1:-1;;;;;;21463:20:0;;;-1:-1:-1;;;;;21463:20:0;;;;;;;21494:4;:12;;;;;;;;;;;;;;21517:4;:12;;;;;;;;;;-1:-1:-1;;;21178:359:0:o;6322:26::-;;;;:::o;6292:23::-;;;;:::o;18690:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;22090:1494::-;22441:5;;22307:20;;;;;;-1:-1:-1;;;;;22441:5:0;22427:10;:19;22419:50;;;;;-1:-1:-1;;;22419:50:0;;;;;;;;;;;;-1:-1:-1;;;22419:50:0;;;;;;;;;;;;;;;22501:4;;22491:6;;-1:-1:-1;;;;;22491:6:0;;;22501:4;;22491:14;;:32;;-1:-1:-1;22519:4:0;;22509:6;;-1:-1:-1;;;;;22509:6:0;;;22519:4;;22509:14;22491:32;22483:57;;;;;-1:-1:-1;;;22483:57:0;;;;;;;;;;;;-1:-1:-1;;;22483:57:0;;;;;;;;;;;;;;;22580:4;;22570:6;;22554:13;;-1:-1:-1;;;;;22570:6:0;;;22580:4;;22570:14;:31;;22595:6;;-1:-1:-1;;;;;22595:6:0;22570:31;;;22587:6;;-1:-1:-1;;;;;22587:6:0;22570:31;22638:8;;22554:47;;-1:-1:-1;22615:52:0;;22554:47;;-1:-1:-1;;;;;22638:8:0;22648:18;22615:15;:52::i;:::-;22681:85;22713:5;22720:10;22740:4;22747:18;22681:31;:85::i;:::-;22849:8;;22834:125;;;-1:-1:-1;;;22834:125:0;;-1:-1:-1;;;;;22834:125:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22849:8;;;;;22834:40;;22882:9;;22834:125;;;;;;;;;;;;;;;22882:9;22849:8;22834:125;;;2:2:-1;;;;27:1;24;17:12;2:2;22834:125:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22834:125:0;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22834:125:0;;;;;;;;;;;;;-1:-1:-1;22834:125:0;;-1:-1:-1;22834:125:0;-1:-1:-1;22989:33:0;;;22986:151;;;23043:78;23071:5;23078:4;23084:36;:18;23107:12;23084:36;:22;:36;:::i;23043:78::-;23180:10;23168:9;:22;23165:125;;;23211:63;23242:4;23248:25;:9;23262:10;23248:25;:13;:25;:::i;:::-;23211:30;:63::i;:::-;23300:13;:11;:13::i;:::-;23324:23;23330:4;23336:10;23324:5;:23::i;:::-;23358:39;23380:4;23386:10;23358:21;:39::i;:::-;-1:-1:-1;23448:6:0;;23409:12;;;;-1:-1:-1;;;;;23439:15:0;;;23448:6;;23439:15;:72;;23486:10;23498:12;23439:72;;;23458:12;23472:10;23439:72;23527:49;;;;;;;;;;;;;;;;;;;;23408:103;;-1:-1:-1;23408:103:0;;-1:-1:-1;;;;;;23527:49:0;;;;;;;;;;;;22090:1494;;;;;;;;;;;;:::o;27026:534::-;27099:8;;27117:6;;27125;;27084:48;;;-1:-1:-1;;;27084:48:0;;-1:-1:-1;;;;;27117:6:0;;;27084:48;;;;27125:6;;;27084:48;;;;;27069:12;;27099:8;;;;;27084:32;;:48;;;;;;;;;;;;;;;27099:8;27084:48;;;2:2:-1;;;;27:1;24;17:12;2:2;27084:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27084:48:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;27084:48:0;;-1:-1:-1;;;;;;27146:18:0;;;27143:409;;27210:4;;27199:49;;;-1:-1:-1;;;27199:49:0;;-1:-1:-1;;;;;27199:49:0;;;;;;;27242:4;27199:49;;;;;;27181:15;;27210:4;;;;;27199:28;;:49;;;;;;;;;;;;;;;27210:4;27199:49;;;2:2:-1;;;;27:1;24;17:12;2:2;27199:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27199:49:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;27199:49:0;27285:30;;;-1:-1:-1;;;27285:30:0;;;;27199:49;;-1:-1:-1;27264:15:0;;-1:-1:-1;;;;;27285:28:0;;;;;:30;;;;;;;;;;;:28;:30;;;2:2:-1;;;;27:1;24;17:12;2:2;27285:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27285:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;27285:30:0;;-1:-1:-1;27333:14:0;;27330:100;;27379:4;;27403:10;;27368:46;;;-1:-1:-1;;;27368:46:0;;-1:-1:-1;;;;;27368:46:0;;;;;;;27403:10;;;27368:46;;;;;;27379:4;;;;;27368:28;;:46;;;;;27379:4;;27368:46;;;;;;;27379:4;;27368:46;;;2:2:-1;;;;27:1;24;17:12;2:2;27368:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27368:46:0;;;;27330:100;27461:14;;27458:83;;27507:4;-1:-1:-1;;;;;27496:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27496:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27496:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;27458:83:0;27143:409;;;27026:534;:::o;19234:209::-;-1:-1:-1;;;;;19313:15:0;;;;;;:9;:15;;;;;;:26;;19333:5;19313:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;19295:15:0;;;;;;:9;:15;;;;;:44;19364:11;;:22;;19380:5;19364:22;:15;:22;:::i;:::-;19350:11;:36;19402:33;;;;;;;;19425:1;;-1:-1:-1;;;;;19402:33:0;;;;;;;;;;;;19234:209;;:::o;8883:523::-;-1:-1:-1;;;;;9011:11:0;;8966:4;9011:11;;;:5;:11;;;;;9041:9;;;;;:37;;-1:-1:-1;9054:15:0;;:24;-1:-1:-1;9054:24:0;9041:37;9033:75;;;;;-1:-1:-1;;;9033:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9129:9;:7;:9::i;:::-;9149:12;9156:4;9149:6;:12::i;:::-;9200:15;;:26;;9220:5;9200:26;:19;:26;:::i;:::-;9182:44;;;9279:17;;9259:48;;9302:4;;9259:38;;9182:44;9259:38;:19;:38;:::i;:::-;:42;:48;:42;:48;:::i;:::-;9237:19;;;:70;9338:17;;:28;;9360:5;9338:28;:21;:28;:::i;:::-;9318:17;:48;-1:-1:-1;9394:4:0;;8883:523;-1:-1:-1;;;8883:523:0:o;10208:387::-;10263:4;10280:9;:7;:9::i;:::-;10300:12;10307:4;10300:6;:12::i;:::-;-1:-1:-1;;;;;10331:11:0;;10356:1;10331:11;;;:5;:11;;;;;:22;;;10323:54;;;;;-1:-1:-1;;;10323:54:0;;;;;;;;;;;;-1:-1:-1;;;10323:54:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10402:11:0;;;10388;10402;;;:5;:11;;;;;:22;;;10463:10;;10402:22;;10435:59;;10463:10;10475;10402:22;10435:27;:59::i;:::-;-1:-1:-1;;;;;10505:11:0;;;;10530:1;10505:11;;;:5;:11;;;;;:22;;:26;-1:-1:-1;10542:11:0;:21;;;;;;;10208:387::o;12412:136::-;12470:7;12497:43;12501:1;12504;12497:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;12490:50;12412:136;-1:-1:-1;;;12412:136:0:o;19451:567::-;-1:-1:-1;;;;;19535:15:0;;;;;;:9;:15;;;;;;:24;-1:-1:-1;19535:24:0;19527:69;;;;;-1:-1:-1;;;19527:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19625:15:0;;;;;;:9;:15;;;;;;:26;;19645:5;19625:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;19607:15:0;;;;;;;:9;:15;;;;;;:44;;;;19678:13;;;;;;;:24;;19696:5;19678:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;19662:13:0;;;;;;:9;:13;;;;;:40;;;;19713:93;;19772:11;;:22;;19788:5;19772:22;:15;:22;:::i;:::-;19758:11;:36;19713:93;19833:5;;19818:39;;;-1:-1:-1;;;19818:39:0;;-1:-1:-1;;;;;19818:39:0;;;;;;;;;19833:5;;;;;19818:35;;:39;;;;;19833:5;;19818:39;;;;;;;19833:5;;19818:39;;;2:2:-1;;;;27:1;24;17:12;2:2;19818:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19818:39:0;;;;19868:13;:11;:13::i;:::-;19892:34;19914:4;19920:5;19892:21;:34::i;:::-;;19937:32;19959:2;19963:5;19937:21;:32::i;:::-;;20000:2;-1:-1:-1;;;;;19985:25:0;19994:4;-1:-1:-1;;;;;19985:25:0;;20004:5;19985:25;;;;;;;;;;;;;;;;;;19451:567;;;:::o;21699:379::-;21789:16;21815:5;-1:-1:-1;;;;;21808:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21808:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21808:27:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21808:27:0;;-1:-1:-1;21849:20:0;;;21846:72;;;-1:-1:-1;21900:6:0;21846:72;21931:47;;;-1:-1:-1;;;21931:47:0;;21963:4;21931:47;;;;-1:-1:-1;;;;;21931:47:0;;;;;;;;;21981:6;;21931:23;;;;;:47;;;;;;;;;;;;;;:23;:47;;;2:2:-1;;;;27:1;24;17:12;2:2;21931:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21931:47:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21931:47:0;:56;21928:143;;;22004:55;22031:5;22038:7;22047:11;22004:26;:55::i;:::-;21699:379;;;;:::o;1918:402::-;2143:51;;;-1:-1:-1;;;;;2143:51:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2143:51:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2132:63:0;;;;2097:12;;2111:17;;2132:10;;;;2143:51;2132:63;;;25:18:-1;2132: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;;;2132: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;;2096:99:0;;;;2214:7;:57;;;;-1:-1:-1;2226:11:0;;:16;;:44;;;2257:4;2246:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2246:24:0;2226:44;2206:106;;;;-1:-1:-1;;;2206:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1918:402;;;;;;:::o;1549:361::-;1744:45;;;-1:-1:-1;;;;;1744:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1744:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1733:57:0;;;;1698:12;;1712:17;;1733:10;;;;1744:45;1733:57;;;25:18:-1;1733: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;;;1733: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;;1697:93:0;;;;1809:7;:57;;;;-1:-1:-1;1821:11:0;;:16;;:44;;;1852:4;1841:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1841:24:0;1821:44;1801:101;;;;;-1:-1:-1;;;1801:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;18974:201;19047:11;;:22;;19063:5;19047:22;:15;:22;:::i;:::-;19033:11;:36;-1:-1:-1;;;;;19096:13:0;;;;;;:9;:13;;;;;;:24;;19114:5;19096:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;19080:13:0;;;;;;:9;:13;;;;;;;;:40;;;;19136:31;;;;;;;19080:13;;;;19136:31;;;;;;;;;;18974:201;;:::o;8146:490::-;8229:4;8262:1;8254:5;:9;8246:66;;;;-1:-1:-1;;;8246:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8353:11:0;;8325:25;8353:11;;;:5;:11;;;;;8375:9;:7;:9::i;:::-;8395:12;8402:4;8395:6;:12::i;:::-;8440:17;;:28;;8462:5;8440:28;:21;:28;:::i;:::-;8420:17;:48;8499:15;;:26;;8519:5;8499:26;:19;:26;:::i;:::-;8481:44;;;8578:17;;8558:48;;8601:4;;8558:38;;8481:44;8558:38;:19;:38;:::i;:48::-;8536:19;;;;:70;:19;8146:490;-1:-1:-1;;;8146:490:0:o;9418:542::-;-1:-1:-1;;;;;9526:11:0;;9481:4;9526:11;;;:5;:11;;;;;9574:17;;9656;;:22;9652:184;;9695:11;9709:16;:14;:16::i;:::-;9695:30;;9761:63;9784:39;9805:17;;9784:16;9795:4;9784:6;:10;;:16;;;;:::i;:39::-;9761:18;;:63;:22;:63;:::i;:::-;9740:84;;9652:184;;9853:99;9932:8;:19;;;9853:74;9907:8;:19;;;9853:49;9897:4;9853:39;9873:18;9853:8;:15;;;:19;;:39;;;;:::i;:49::-;:53;:74;:53;:74;:::i;:::-;:78;:99;:78;:99;:::i;:::-;9846:106;9418:542;-1:-1:-1;;;;9418:542:0:o;6652:97::-;6717:10;:24;;-1:-1:-1;;;;;;6717:24:0;-1:-1:-1;;;;;6717:24:0;;;;;;;;;;6652:97::o;2328:195::-;2436:12;;;2398;2436;;;;;;;;;-1:-1:-1;;;;;2415:7:0;;;2429:5;;2415:34;;;;;;;;;;;;;36:153:-1;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;;;2415:34: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;;2397:52:0;;;2468:7;2460:55;;;;-1:-1:-1;;;2460:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6825:368;6876:17;;6872:121;;6928:32;6943:16;:14;:16::i;:::-;6928:10;;;:32;:14;:32;:::i;:::-;6915:10;:45;6975:7;;6872:121;7013:14;7030:16;:14;:16::i;:::-;7013:33;;7077:62;7099:39;7120:17;;7099:16;7110:4;7099:6;:10;;:16;;;;:::i;:39::-;7077:17;;;:62;:21;:62;:::i;:::-;7057:17;:82;7163:10;;:22;;7178:6;7163:22;:14;:22;:::i;:::-;7150:10;:35;-1:-1:-1;6825:368:0;:::o;7427:468::-;-1:-1:-1;;;;;7513:11:0;;7485:25;7513:11;;;:5;:11;;;;;7539:15;;:19;7535:353;;7575:12;7590:73;7643:8;:19;;;7590:48;7633:4;7590:38;7610:17;;7590:8;:15;;;:19;;:38;;;;:::i;:73::-;7700:19;;;;7575:88;;-1:-1:-1;7700:32:0;;7575:88;7700:32;:23;:32;:::i;:::-;7678:19;;;:54;7764:14;;:27;;7783:7;7764:27;:18;:27;:::i;:::-;7747:14;:44;7848:17;;7828:15;;:48;;7871:4;;7828:38;;;:19;:38;:::i;:48::-;7806:19;;;:70;-1:-1:-1;7535:353:0;7427:468;;:::o;13302:471::-;13360:7;13605:6;13601:47;;-1:-1:-1;13635:1:0;13628:8;;13601:47;13672:5;;;13676:1;13672;:5;:1;13696:5;;;;;:10;13688:56;;;;-1:-1:-1;;;13688:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14249:132;14307:7;14334:39;14338:1;14341;14334:39;;;;;;;;;;;;;;;;;:3;:39::i;12851:192::-;12937:7;12973:12;12965:6;;;;12957:29;;;;-1:-1:-1;;;12957:29: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;12957:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13009:5:0;;;12851:192::o;11948:181::-;12006:7;12038:5;;;12062:6;;;;12054:46;;;;;-1:-1:-1;;;12054:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1183:358;1376:45;;;-1:-1:-1;;;;;1376:45:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1376:45:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1365:57:0;;;;1330:12;;1344:17;;1365:10;;;;1376:45;1365:57;;;25:18:-1;1365: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;;;1365: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;;1329:93:0;;;;1441:7;:57;;;;-1:-1:-1;1453:11:0;;:16;;:44;;;1484:4;1473:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1473:24:0;1453:44;1433:100;;;;;-1:-1:-1;;;1433:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26440:574;26545:8;;26563:6;;26571;;26530:48;;;-1:-1:-1;;;26530:48:0;;-1:-1:-1;;;;;26563:6:0;;;26530:48;;;;26571:6;;;26530:48;;;;;26498:4;;;;26545:8;;26530:32;;:48;;;;;;;;;;;;;;26545:8;26530:48;;;2:2:-1;;;;27:1;24;17:12;2:2;26530:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26530:48:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26530:48:0;26677:10;;26635;;26628:43;;;-1:-1:-1;;;26628:43:0;;26665:4;26628:43;;;;;;26530:48;;-1:-1:-1;26589:20:0;;26612:76;;26677:10;26612:60;;-1:-1:-1;;;;;26635:10:0;;;;26628:28;;:43;;;;;26530:48;;26628:43;;;;;;;;26635:10;26628:43;;;2:2:-1;;;;27:1;24;17:12;2:2;26628:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26628:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26628:43:0;26612:11;;;:60;:15;:60;:::i;:76::-;26589:99;-1:-1:-1;;;;;;26702:18:0;;;26699:308;;26766:4;;26755:49;;;-1:-1:-1;;;26755:49:0;;-1:-1:-1;;;;;26755:49:0;;;;;;;26798:4;26755:49;;;;;;26737:15;;26766:4;;;;;26755:28;;:49;;;;;;;;;;;;;;;26766:4;26755:49;;;2:2:-1;;;;27:1;24;17:12;2:2;26755:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26755:49:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26755:49:0;26841:30;;;-1:-1:-1;;;26841:30:0;;;;26755:49;;-1:-1:-1;26820:15:0;;-1:-1:-1;;;;;26841:28:0;;;;;:30;;;;;;;;;;;:28;:30;;;2:2:-1;;;;27:1;24;17:12;2:2;26841:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26841:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26841:30:0;;-1:-1:-1;26893:47:0;26841:30;26893:31;:15;26913:10;26893:31;:19;:31;:::i;:47::-;26886:54;;;;;;;;26699:308;26980:15;-1:-1:-1;26973:22:0;;-1:-1:-1;26973:22:0;14877:278;14963:7;14998:12;14991:5;14983:28;;;;-1:-1:-1;;;14983:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;14983:28:0;;15022:9;15038:1;15034;:5;;;;;;;14877:278;-1:-1:-1;;;;;14877:278:0:o

Swarm Source

ipfs://3ac9df9c47f341cd5f0c0e1b8c6f68abfa842866e3f800a5fd39515bfa2c0dac
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.