Contract 0x08f49f219fbec6130af4042bc5b0d18f53e1592a

 

Contract Overview

BabyEuro: BabyEuro Token
Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xc617387fefb77d824edcf267cb1eceebd436c8134c52d80bab56a3cd0e5505e5Approve144651532022-01-18 6:03:172 days 19 hrs ago0xc974114cc515099bbbcc8c17447a223b80d4e1d5 IN  BabyEuro: BabyEuro Token0 BNB0.00007227
0x83a39264516aceffae48d55a5e2ef29ea53fa7e2b2d05dda9cffec5dd215f31aApprove142989742022-01-12 10:58:338 days 14 hrs ago0x4774969a896967bce5d2c8d9d7c8ad53c4f07e41 IN  BabyEuro: BabyEuro Token0 BNB0.000221455
0xe28b283cc036a000a9b101d72227c4c04bdf2920ac4011ff308c8fd8b69ae0c0Approve139263722021-12-30 11:53:3321 days 13 hrs ago0x63125f64ab69bf9111e60585425eeaf016a28f21 IN  BabyEuro: BabyEuro Token0 BNB0.000221455
0xe0cb87b5cd39f95886507c6093e8e7f849ba687de986649cd880ccf8a9e59288Transfer131121792021-12-01 20:29:5950 days 4 hrs ago0xd1107971dea136439de5e082928bdc5655cea20d IN  BabyEuro: BabyEuro Token0 BNB0.002242535
0x3e98b6ccf28c46f94d54e812bb9070455d917bad7b200d5a0f25a464cb4644aaApprove130508262021-11-29 13:24:1452 days 12 hrs ago0xc39d177c9b5ed2907ec130b83f2b4ce0485eec24 IN  BabyEuro: BabyEuro Token0 BNB0.00007227
0x4a3d96783bdce3a9772b93a22107509695de5120c8c2b99cae4c4a968583b83dApprove128174862021-11-20 22:34:0561 days 2 hrs ago0xdbda7d81ae052326e4f9fa3b6b43813df61cc075 IN  BabyEuro: BabyEuro Token0 BNB0.00007227
0xacc9a81b126745dd4227f715dbf8632405560f707755d3a007cee2c3a6ed2197Approve127401672021-11-18 3:20:1663 days 22 hrs ago0xef0260336388b53158a033d452ec7d8a556cc720 IN  BabyEuro: BabyEuro Token0 BNB0.000221455
0x195647585ac3b67685e84128508ea483a803903a9d3a0d5412ff8233d87e3b53Approve127327412021-11-17 20:59:2464 days 4 hrs ago0xb2654920e5f0d6d88f6dc37b0b2dfd8e13d47825 IN  BabyEuro: BabyEuro Token0 BNB0.000221455
0x45b709f712695b5946d169641ba20d1bf78a51983f95a67b756b537b81416a86Approve126170222021-11-13 15:15:4768 days 10 hrs ago0x96ac331dba5feba414b6a4344a0261876ad2b9c8 IN  BabyEuro: BabyEuro Token0 BNB0.000221455
0xc39a6ac676430dd2a2e790b9d7a33d770fa4f47649ccdb9197272a3fa8ff8b0eApprove125240382021-11-10 6:45:1271 days 18 hrs ago0x19614871921478e4df376e29988470d6d7969ccc IN  BabyEuro: BabyEuro Token0 BNB0.000101178
0x6c2057cff5b7629eb2b20431d2fef3917ca06b619bc35882b0bf023f4c89c417Approve124366792021-11-07 5:19:5074 days 20 hrs ago0xc8cdacc651afdc38b734289e78fd1bf410004a4a IN  BabyEuro: BabyEuro Token0 BNB0.00007227
0x303b7c1d03dca6ee2ea041ee9210a54dc610e1df0ea652a1fa087787a922adc4Set Max Wallet P...122773872021-11-01 13:12:3680 days 12 hrs agoBabyEuro: Deployer IN  BabyEuro: BabyEuro Token0 BNB0.00014089
0xc284bfe8e9681889765e1baa660aa000959082e56ca4a49dbd2c72eee9958b98Cooldown Enabled122773842021-11-01 13:12:2680 days 12 hrs agoBabyEuro: Deployer IN  BabyEuro: BabyEuro Token0 BNB0.000070965
0xb2e9217b2ecb4a48040ceecf2a82755e4091fd5b1c8e92a03fbdc96b925f2d4bSet Swap Back Se...122773502021-11-01 13:10:2880 days 12 hrs agoBabyEuro: Deployer IN  BabyEuro: BabyEuro Token0 BNB0.00008344
0x5f31e8b8b8bc1ec8e3a7cf8ea479f9f1a3bd0762bd57dc65db3a05150261e57bSet Fees122773472021-11-01 13:10:1980 days 12 hrs agoBabyEuro: Deployer IN  BabyEuro: BabyEuro Token0 BNB0.000090705
0x5589b87a318e9b1e2ba27538fc5bb22ddd19294defd294e7dd73b417f02c8da2Trading Status122773372021-11-01 13:09:4780 days 12 hrs agoBabyEuro: Deployer IN  BabyEuro: BabyEuro Token0 BNB0.000141025
0x1494e5385d922308dbd1171da9f7b3177262ae491bde1038cbc8975fb76b648bSet Tx Limit122773352021-11-01 13:09:4080 days 12 hrs agoBabyEuro: Deployer IN  BabyEuro: BabyEuro Token0 BNB0.000137825
0x9dd98a7b0afa4b8f881f7f42b81320450d25e7b2c40ddbe3f1d3f773cea769a9Approve121299492021-10-27 7:50:0385 days 17 hrs ago0x7fe9896c418e3dd5015c0bcaae2c9bc910b38910 IN  BabyEuro: BabyEuro Token0 BNB0.00088582
0x8dc6e4eb8331041e362dc8ab58d1f69e1e81681977780dad92bdfcaf5c1b9251Approve117676102021-10-14 14:39:5298 days 10 hrs ago0x8dd65a6612e291755cfbbf4cf6fbe96c62067914 IN  BabyEuro: BabyEuro Token0 BNB0.0000737154
0x8317763a2adca30dd3380a79f53e1e092e63852c407ee998f9c56086a700ac9aApprove116769942021-10-11 9:48:01101 days 15 hrs ago0x8cc7bc33f5188b1fb683bedc4dbffa77b136833b IN  BabyEuro: BabyEuro Token0 BNB0.000123775
0x4439bed8bdf77c3332d9a0d916827034fffe6e0ecf59d8a4ec5c1da913b39fa4Approve116769902021-10-11 9:47:49101 days 15 hrs ago0x8cc7bc33f5188b1fb683bedc4dbffa77b136833b IN  BabyEuro: BabyEuro Token0 BNB0.000123775
0xdbeae1215709242f184216e45dfa835e8ee924dac4e6f6a36c2a4c9fba3663feApprove116587262021-10-10 18:33:23102 days 6 hrs ago0x989336c4d28dfe8406bd49b7392cc0bd7de98aa8 IN  BabyEuro: BabyEuro Token0 BNB0.00007227
0xb5906503631da49ea98739002a2b53f950050c45c73c3b611a9179b4d88187f9Approve116542212021-10-10 14:47:54102 days 10 hrs ago0x8cc7bc33f5188b1fb683bedc4dbffa77b136833b IN  BabyEuro: BabyEuro Token0 BNB0.000123775
0x197026b7dda439d1dde55a98e6c8a64c89a73ae1a796333ceb7396388f8081a7Approve116542152021-10-10 14:47:36102 days 10 hrs ago0x8cc7bc33f5188b1fb683bedc4dbffa77b136833b IN  BabyEuro: BabyEuro Token0 BNB0.000123775
0xf21738df0dce88c2d3c17ae258440c3c2a2544600e62960a655a1a41724c75b0Set Tx Limit115460392021-10-06 20:23:08106 days 5 hrs agoBabyEuro: Deployer IN  BabyEuro: BabyEuro Token0 BNB0.000136985
[ Download CSV Export 

OVERVIEW

BabyEuro is a deflationary token on the Binance Smart Chain that rewards holders in Ethereum. It features automatic liquidity to reduce price volatility.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x94ed355422c528db60c3026445fc963343b5ce92a499b5dd72cd9e06ba1d7919107031922021-09-07 9:14:03135 days 16 hrs ago BabyEuro: BabyEuro Token0x29c240886e7c69b58954cc16ae51f124d2bd978850.654718544915943422 BNB
0x4ddb34a6be984cac5c73dd60da42b8fe73dfa107f4d9b8db8b40bb649ee14dcb105073332021-08-31 12:28:48142 days 13 hrs ago BabyEuro: BabyEuro TokenBabyEuro: Deployer0.039246257128785575 BNB
0x4ddb34a6be984cac5c73dd60da42b8fe73dfa107f4d9b8db8b40bb649ee14dcb105073332021-08-31 12:28:48142 days 13 hrs ago PancakeSwap: Router v2 BabyEuro: BabyEuro Token0.039246257128785575 BNB
0x62aa1415b468e71f81b07786ba7d95247a4b3448e1e643e744d2a106d220b774103012252021-08-24 6:33:42149 days 18 hrs ago BabyEuro: BabyEuro TokenBabyEuro: Deployer0.040071718923261807 BNB
0x62aa1415b468e71f81b07786ba7d95247a4b3448e1e643e744d2a106d220b774103012252021-08-24 6:33:42149 days 18 hrs ago PancakeSwap: Router v2 BabyEuro: BabyEuro Token0.040071718923261807 BNB
0xb4be488663edad9c560359e2688351e8cb74d454d50bee6ba4d03cda63ba039d102948452021-08-24 1:14:08150 days 15 mins ago BabyEuro: BabyEuro TokenBabyEuro: Deployer0.043718497137397687 BNB
0xb4be488663edad9c560359e2688351e8cb74d454d50bee6ba4d03cda63ba039d102948452021-08-24 1:14:08150 days 15 mins ago PancakeSwap: Router v2 BabyEuro: BabyEuro Token0.043718497137397687 BNB
0x21523398624642b7b06d19fa44bd5dddf78cc938efc70d278902fe2bc6a89bc3102874532021-08-23 19:04:32150 days 6 hrs ago BabyEuro: BabyEuro TokenBabyEuro: Deployer0.046733749629999326 BNB
0x21523398624642b7b06d19fa44bd5dddf78cc938efc70d278902fe2bc6a89bc3102874532021-08-23 19:04:32150 days 6 hrs ago PancakeSwap: Router v2 BabyEuro: BabyEuro Token0.046733749629999326 BNB
0x7ecd7ecb23eab86fe04608f5fe47f982d6c077b0ad6f559c4920999e9a623999102871632021-08-23 18:50:02150 days 6 hrs ago BabyEuro: BabyEuro TokenBabyEuro: Deployer0.048947792019944173 BNB
0x7ecd7ecb23eab86fe04608f5fe47f982d6c077b0ad6f559c4920999e9a623999102871632021-08-23 18:50:02150 days 6 hrs ago PancakeSwap: Router v2 BabyEuro: BabyEuro Token0.048947792019944173 BNB
0x4144cf94c990c432a44bb323b6e41f370903a093194bef90242d99b8d08749d1102859542021-08-23 17:48:57150 days 7 hrs ago BabyEuro: BabyEuro TokenBabyEuro: Deployer0.052781985339715211 BNB
0x4144cf94c990c432a44bb323b6e41f370903a093194bef90242d99b8d08749d1102859542021-08-23 17:48:57150 days 7 hrs ago PancakeSwap: Router v2 BabyEuro: BabyEuro Token0.052781985339715211 BNB
0xfc1ca53a4f1247e6502bbf1f720ce97ae6acb1d93be38f1af4d7e7a66342f193102859162021-08-23 17:47:03150 days 7 hrs ago BabyEuro: BabyEuro TokenBabyEuro: Deployer0.052781985339715211 BNB
0xfc1ca53a4f1247e6502bbf1f720ce97ae6acb1d93be38f1af4d7e7a66342f193102859162021-08-23 17:47:03150 days 7 hrs ago PancakeSwap: Router v2 BabyEuro: BabyEuro Token0.052781985339715211 BNB
0x03852dd22e199b1152884043c53ce17062dafa4f3080bb8f427535bcabcb6f80102859122021-08-23 17:46:51150 days 7 hrs ago BabyEuro: BabyEuro TokenBabyEuro: Deployer0.052781985339715211 BNB
0x03852dd22e199b1152884043c53ce17062dafa4f3080bb8f427535bcabcb6f80102859122021-08-23 17:46:51150 days 7 hrs ago PancakeSwap: Router v2 BabyEuro: BabyEuro Token0.052781985339715211 BNB
0x10f40e50af62d4280dfb299eb53a5204fb6eeed1788dc7a6eaceba8653ab8392102856872021-08-23 17:35:17150 days 7 hrs ago BabyEuro: BabyEuro TokenBabyEuro: Deployer0.060008393718909698 BNB
0x10f40e50af62d4280dfb299eb53a5204fb6eeed1788dc7a6eaceba8653ab8392102856872021-08-23 17:35:17150 days 7 hrs ago PancakeSwap: Router v2 BabyEuro: BabyEuro Token0.060008393718909698 BNB
0x0a819ca8479370a659389ac068583020ec136a2fe63d26b1a923a31251be1cdd102855622021-08-23 17:29:00150 days 8 hrs ago BabyEuro: BabyEuro TokenBabyEuro: Deployer0.064597464848808833 BNB
0x0a819ca8479370a659389ac068583020ec136a2fe63d26b1a923a31251be1cdd102855622021-08-23 17:29:00150 days 8 hrs ago PancakeSwap: Router v2 BabyEuro: BabyEuro Token0.064597464848808833 BNB
0x6479f948914821e4fcd70cfbe823220a87c9bcb73119a6ee704f6b75e5022e17102850192021-08-23 16:59:43150 days 8 hrs ago BabyEuro: BabyEuro TokenBabyEuro: Deployer0.072567160279525542 BNB
0x6479f948914821e4fcd70cfbe823220a87c9bcb73119a6ee704f6b75e5022e17102850192021-08-23 16:59:43150 days 8 hrs ago PancakeSwap: Router v2 BabyEuro: BabyEuro Token0.072567160279525542 BNB
0x4a3ec3521533402a4be5d4f9c3f80c8d45ad8c425603077b2068f520858cdaff102834692021-08-23 15:41:17150 days 9 hrs ago BabyEuro: BabyEuro TokenBabyEuro: Deployer0.024799880222182066 BNB
0x4a3ec3521533402a4be5d4f9c3f80c8d45ad8c425603077b2068f520858cdaff102834692021-08-23 15:41:17150 days 9 hrs ago BabyEuro: BabyEuro Token 0x66fe977d175b9c982f5023c2471ab0691fe6a1090.024799880222182066 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BabyEuro

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/*
██████╗░░█████╗░██████╗░██╗░░░██╗███████╗██╗░░░██╗██████╗░░█████╗░
██╔══██╗██╔══██╗██╔══██╗╚██╗░██╔╝██╔════╝██║░░░██║██╔══██╗██╔══██╗
██████╦╝███████║██████╦╝░╚████╔╝░█████╗░░██║░░░██║██████╔╝██║░░██║
██╔══██╗██╔══██║██╔══██╗░░╚██╔╝░░██╔══╝░░██║░░░██║██╔══██╗██║░░██║
██████╦╝██║░░██║██████╦╝░░░██║░░░███████╗╚██████╔╝██║░░██║╚█████╔╝
╚═════╝░╚═╝░░╚═╝╚═════╝░░░░╚═╝░░░╚══════╝░╚═════╝░╚═╝░░╚═╝░╚════╝░
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.7.4;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        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;
    }
}

/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IBEP20 BETH = IBEP20(0x2170Ed0880ac9A755fd29B2688956BD959F933F8);
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    IDEXRouter router;

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    //SETMEUP, change this to 1 hour instead of 10mins
    uint256 public minPeriod = 30 * 60;
    uint256 public minDistribution = 1 * (10 ** 12);

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = BETH.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WBNB;
        path[1] = address(BETH);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = BETH.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        uint256 iterations = 0;

        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            BETH.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract BabyEuro is IBEP20, Auth {
    using SafeMath for uint256;

    address BETH = 0x2170Ed0880ac9A755fd29B2688956BD959F933F8;
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "BabyEuro";
    string constant _symbol = "BabyEuro";
    uint8 constant _decimals = 2;

    uint256 _totalSupply = 2 * 10**9 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply * 1 / 100;

    //max wallet holding of 2% 
    uint256 public _maxWalletToken = ( _totalSupply * 2 ) / 100;

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isTimelockExempt;
    mapping (address => bool) isDividendExempt;

    uint256 liquidityFee    = 6;
    uint256 reflectionFee   = 6;
    uint256 marketingFee    = 6;
    uint256 public totalFee = 18;
    uint256 feeDenominator  = 100;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    bool public tradingOpen = false;

    DividendDistributor distributor;
    uint256 distributorGas = 500000;

    // Cooldown & timer functionality
    bool public buyCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 45;
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 10 / 10000; // 0.01% of supply
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        _allowances[address(this)][address(router)] = uint256(-1);

        distributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;

        // No timelock for these people
        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

        // NICE!
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, uint256(-1));
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != uint256(-1)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    //settting the maximum permitted wallet holding (percent of total supply)
     function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 100;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

        // max wallet code
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != autoLiquidityReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
        

        
        // cooldown timer, so a bot doesnt do quick trades! 1min gap between 2 trades.
        if (sender == pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }


        // Checks max transaction limit
        checkTxLimit(sender, amount);

        // Liquidity, Maintained at 25%
        if(shouldSwapBack()){ swapBack(); }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try distributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try distributor.setShare(recipient, _balances[recipient]) {} catch {} 
        }

        try distributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountBNB = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountBNB * amountPercentage / 100);
    }


    // switch Trading
    function tradingStatus(bool _status) public onlyOwner {
        tradingOpen = _status;
    }

    // enable cooldown between trades
    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }



    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WBNB;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountBNB = address(this).balance.sub(balanceBefore);

        uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);

        try distributor.deposit{value: amountBNBReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        
        // only to supress warning msg
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }


    function setTxLimit(uint256 amount) external authorized {
        _maxTxAmount = amount;
    }

    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

    function setIsTimelockExempt(address holder, bool exempt) external authorized {
        isTimelockExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/4);
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }



/* Airdrop Begins */


 function airdrop(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

    uint256 SCCC = 0;

    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    for(uint i=0; i < addresses.length; i++){
        SCCC = SCCC + tokens[i];
    }

    require(balanceOf(from) >= SCCC, "Not enough tokens in wallet for airdrop");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {} 
        }
    }

    // Dividend tracker
    if(!isDividendExempt[from]) {
        try distributor.setShare(from, _balances[from]) {} catch {}
    }
}

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b0319908116732170ed0880ac9a755fd29b2688956bd959f933f81790915560038054821673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c17905560048054821661dead179055600580549091169055642e90edd0006006908155637735940060075563ee6b2800600855600f819055601081905560115560128055606460138190556014601655601755601b805460ff199081169091556207a120601c55601d80548216600190811761ff001916612d0017909155601f8054909216179055630bebc200602055348015620000e557600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff1916909217909155601880549092167310ed43c718714eb63d5aa57b78b54704e256024e1791829055825163c45a015560e01b815292516001600160a01b03929092169263c45a01559260048083019392829003018186803b1580156200017557600080fd5b505afa1580156200018a573d6000803e3d6000fd5b505050506040513d6020811015620001a157600080fd5b5051600354604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b158015620001f957600080fd5b505af11580156200020e573d6000803e3d6000fd5b505050506040513d60208110156200022557600080fd5b5051601980546001600160a01b0319166001600160a01b03928316179055306000908152600a60209081526040808320601880548616855292529182902060001990555490519116906200027990620003cb565b6001600160a01b03909116815260405190819003602001906000f080158015620002a7573d6000803e3d6000fd5b50601b8054610100600160a81b0319166101006001600160a01b0393841602179055336000818152600b60209081526040808320805460ff199081166001908117909255600c84528285208054821683179055600d845282852080548216831790556004805488168652838620805483168417905530808752848720805484168517905560195489168752600e8652848720805484168517905586528386208054831684179055549096168452818420805490961617909455601480546001600160a01b0319908116851790915560158054909116841790556006548383526009825284832081905584519081529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3620003d9565b610ebf8062002df683390190565b612a0d80620003e96000396000f3fe6080604052600436106103175760003560e01c8063722b62ad1161019a578063ca33e64c116100e1578063f2fde38b1161008a578063f887ea4011610064578063f887ea4014610b9b578063fe9fbb8014610bb0578063ffb54a9914610be35761031e565b8063f2fde38b14610af2578063f708a64f14610b25578063f84ba65d14610b605761031e565b8063df20fd49116100bb578063df20fd4914610a78578063e96fada214610aaa578063f0b37c0414610abf5761031e565b8063ca33e64c146109fe578063d51ed1c814610a13578063dd62ed3e14610a3d5761031e565b80639d1944f511610143578063a9059cbb1161011d578063a9059cbb1461097d578063b6a5d7de146109b6578063bf56b371146109e95761031e565b80639d1944f514610903578063a4b45c001461092d578063a8aa1b31146109685761031e565b806382bf293c1161017457806382bf293c146108a8578063893d20e8146108d257806395d89b411461042b5761031e565b8063722b62ad1461086957806378109e541461087e5780637d1db4a5146108935761031e565b80632d48e8961161025e5780635c85974f116102075780636ddd1713116101e15780636ddd1713146107e55780636fcba377146107fa57806370a08231146108365761031e565b80635c85974f1461076b578063617fe0ed14610795578063658d4b7f146107aa5761031e565b8063313ce56711610238578063313ce567146106d257806350db71fb146106fd578063571ac8b0146107385761031e565b80632d48e8961461063a5780632d5945671461066a5780632f54bf6e1461069f5761031e565b806318160ddd116102c0578063201e79911161029a578063201e7991146105b257806323b872dd146105e25780632b112e49146106255761031e565b806318160ddd1461055e5780631da1db5e146105735780631df4ccfc1461059d5761031e565b8063095ea7b3116102f1578063095ea7b3146104b55780630d295980146105025780631161ae391461052e5761031e565b8063025ff12f146103235780630445b6671461040457806306fdde031461042b5761031e565b3661031e57005b600080fd5b34801561032f57600080fd5b506104026004803603606081101561034657600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561037157600080fd5b82018360208201111561038357600080fd5b803590602001918460208302840111640100000000831117156103a557600080fd5b9193909290916020810190356401000000008111156103c357600080fd5b8201836020820111156103d557600080fd5b803590602001918460208302840111640100000000831117156103f757600080fd5b509092509050610bf8565b005b34801561041057600080fd5b50610419610ee4565b60408051918252519081900360200190f35b34801561043757600080fd5b50610440610eea565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561047a578181015183820152602001610462565b50505050905090810190601f1680156104a75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104c157600080fd5b506104ee600480360360408110156104d857600080fd5b506001600160a01b038135169060200135610f0c565b604080519115158252519081900360200190f35b34801561050e57600080fd5b506104026004803603602081101561052557600080fd5b50351515610f73565b34801561053a57600080fd5b506104ee6004803603604081101561055157600080fd5b5080359060200135610fc9565b34801561056a57600080fd5b50610419610fdd565b34801561057f57600080fd5b506104026004803603602081101561059657600080fd5b5035610fe3565b3480156105a957600080fd5b50610419611069565b3480156105be57600080fd5b50610402600480360360408110156105d557600080fd5b508035906020013561106f565b3480156105ee57600080fd5b506104ee6004803603606081101561060557600080fd5b506001600160a01b038135811691602081013590911690604001356110c2565b34801561063157600080fd5b5061041961118b565b34801561064657600080fd5b506104026004803603604081101561065d57600080fd5b50803590602001356111d4565b34801561067657600080fd5b506104026004803603604081101561068d57600080fd5b5080351515906020013560ff16611293565b3480156106ab57600080fd5b506104ee600480360360208110156106c257600080fd5b50356001600160a01b03166112fc565b3480156106de57600080fd5b506106e7611310565b6040805160ff9092168252519081900360200190f35b34801561070957600080fd5b506104026004803603604081101561072057600080fd5b506001600160a01b0381351690602001351515611315565b34801561074457600080fd5b506104ee6004803603602081101561075b57600080fd5b50356001600160a01b0316611388565b34801561077757600080fd5b506104026004803603602081101561078e57600080fd5b5035611396565b3480156107a157600080fd5b506104ee6113e3565b3480156107b657600080fd5b50610402600480360360408110156107cd57600080fd5b506001600160a01b03813516906020013515156113ec565b3480156107f157600080fd5b506104ee61145f565b34801561080657600080fd5b506104026004803603608081101561081d57600080fd5b5080359060208101359060408101359060600135611468565b34801561084257600080fd5b506104196004803603602081101561085957600080fd5b50356001600160a01b03166114f2565b34801561087557600080fd5b506106e761150d565b34801561088a57600080fd5b5061041961151b565b34801561089f57600080fd5b50610419611521565b3480156108b457600080fd5b50610402600480360360208110156108cb57600080fd5b5035611527565b3480156108de57600080fd5b506108e761157f565b604080516001600160a01b039092168252519081900360200190f35b34801561090f57600080fd5b506104026004803603602081101561092657600080fd5b503561158e565b34801561093957600080fd5b506104026004803603604081101561095057600080fd5b506001600160a01b03813581169160200135166115ea565b34801561097457600080fd5b506108e761166d565b34801561098957600080fd5b506104ee600480360360408110156109a057600080fd5b506001600160a01b03813516906020013561167c565b3480156109c257600080fd5b50610402600480360360208110156109d957600080fd5b50356001600160a01b0316611689565b3480156109f557600080fd5b506104196116f3565b348015610a0a57600080fd5b506108e76116f9565b348015610a1f57600080fd5b5061041960048036036020811015610a3657600080fd5b5035611708565b348015610a4957600080fd5b5061041960048036036040811015610a6057600080fd5b506001600160a01b0381358116916020013516611748565b348015610a8457600080fd5b5061040260048036036040811015610a9b57600080fd5b50803515159060200135611773565b348015610ab657600080fd5b506108e76117d2565b348015610acb57600080fd5b5061040260048036036020811015610ae257600080fd5b50356001600160a01b03166117e1565b348015610afe57600080fd5b5061040260048036036020811015610b1557600080fd5b50356001600160a01b0316611845565b348015610b3157600080fd5b5061040260048036036040811015610b4857600080fd5b506001600160a01b0381351690602001351515611903565b348015610b6c57600080fd5b5061040260048036036040811015610b8357600080fd5b506001600160a01b0381351690602001351515611a87565b348015610ba757600080fd5b506108e7611afa565b348015610bbc57600080fd5b506104ee60048036036020811015610bd357600080fd5b50356001600160a01b0316611b09565b348015610bef57600080fd5b506104ee611b27565b610c01336112fc565b610c3b576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6000838214610c7b5760405162461bcd60e51b81526004018080602001828103825260288152602001806129056028913960400191505060405180910390fd5b60005b84811015610ca857838382818110610c9257fe5b6020029190910135929092019150600101610c7e565b5080610cb3876114f2565b1015610cf05760405162461bcd60e51b81526004018080602001828103825260278152602001806129526027913960400191505060405180910390fd5b60005b84811015610e4257610d3387878784818110610d0b57fe5b905060200201356001600160a01b0316868685818110610d2757fe5b90506020020135611b30565b50600e6000878784818110610d4457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16610e3a57601b5461010090046001600160a01b03166314b6ca96878784818110610d9057fe5b905060200201356001600160a01b0316600960008a8a87818110610db057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610e2757600080fd5b505af1925050508015610e38575060015b505b600101610cf3565b506001600160a01b0386166000908152600e602052604090205460ff16610edc57601b546001600160a01b03878116600081815260096020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b158015610ec957600080fd5b505af1925050508015610eda575060015b505b505050505050565b60205481565b604080518082019091526008815267426162794575726f60c01b602082015290565b336000818152600a602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b610f7c336112fc565b610fb6576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601b805460ff1916911515919091179055565b600082610fd583611708565b119392505050565b60065490565b610fec336112fc565b611026576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60155460405147916001600160a01b03169060648484020480156108fc02916000818181858888f19350505050158015611064573d6000803e3d6000fd5b505050565b60125481565b61107833611b09565b6110b7576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601691909155601755565b6001600160a01b0383166000908152600a602090815260408083203384529091528120546000191461117657604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b0387166000908152600a82528381203382529091529190912054611151918490611c11565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b611181848484611ca8565b90505b9392505050565b6005546000906111cf906111a7906001600160a01b03166114f2565b6004546111c9906111c0906001600160a01b03166114f2565b600654906121f9565b906121f9565b905090565b6111dd33611b09565b61121c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601b60019054906101000a90046001600160a01b03166001600160a01b0316632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561127f57600080fd5b505af1158015610edc573d6000803e3d6000fd5b61129c336112fc565b6112d6576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601d805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b6000546001600160a01b0390811691161490565b600290565b61131e33611b09565b61135d576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000610f6d82600019610f0c565b61139f33611b09565b6113de576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600755565b601d5460ff1681565b6113f533611b09565b611434576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b601f5460ff1681565b61147133611b09565b6114b0576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600f849055601083905560118290556114d3826114cd868661223b565b9061223b565b601255601381905560048104601254106114ec57600080fd5b50505050565b6001600160a01b031660009081526009602052604090205490565b601d54610100900460ff1681565b60085481565b60075481565b611530336112fc565b61156a576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b606481600654028161157857fe5b0460085550565b6000546001600160a01b031690565b61159733611b09565b6115d6576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b081106115e557600080fd5b601c55565b6115f333611b09565b611632576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601480546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560158054929093169116179055565b6019546001600160a01b031681565b6000611184338484611ca8565b611692336112fc565b6116cc576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b601a5481565b6014546001600160a01b031681565b6000610f6d61171561118b565b6019546117429061173b90600290611735906001600160a01b03166114f2565b90612295565b8590612295565b906122ee565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b61177c33611b09565b6117bb576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601f805460ff191692151592909217909155602055565b6015546001600160a01b031681565b6117ea336112fc565b611824576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b61184e336112fc565b611888576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b61190c33611b09565b61194b576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b038216301480159061197257506019546001600160a01b03838116911614155b61197b57600080fd5b6001600160a01b0382166000908152600e60205260409020805460ff19168215801591909117909155611a1d57601b5460408051630a5b654b60e11b81526001600160a01b038581166004830152600060248301819052925161010090940416926314b6ca969260448084019391929182900301818387803b158015611a0057600080fd5b505af1158015611a14573d6000803e3d6000fd5b50505050611a83565b601b546001600160a01b03838116600081815260096020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b15801561127f57600080fd5b5050565b611a9033611b09565b611acf576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6018546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b601b5460ff1681565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600990915291822054611b81918490611c11565b6001600160a01b038086166000908152600960205260408082209390935590851681522054611bb0908361223b565b6001600160a01b0380851660008181526009602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b60008184841115611ca05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c65578181015183820152602001611c4d565b50505050905090810190601f168015611c925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60215460009060ff1615611cc857611cc1848484611b30565b9050611184565b6001600160a01b03841660009081526001602052604090205460ff16158015611d0a57506001600160a01b03831660009081526001602052604090205460ff16155b15611d6657601b5460ff16611d66576040805162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e20796574000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03841660009081526001602052604090205460ff16158015611d9857506001600160a01b0383163014155b8015611db257506004546001600160a01b03848116911614155b8015611dcc57506019546001600160a01b03848116911614155b8015611de657506015546001600160a01b03848116911614155b8015611e0057506014546001600160a01b03848116911614155b15611e57576000611e10846114f2565b90506008548382011115611e555760405162461bcd60e51b815260040180806020018281038252603e81526020018061299a603e913960400191505060405180910390fd5b505b6019546001600160a01b038581169116148015611e765750601d5460ff165b8015611e9b57506001600160a01b0383166000908152600d602052604090205460ff16155b15611f1f576001600160a01b0383166000908152601e60205260409020544211611ef65760405162461bcd60e51b815260040180806020018281038252602581526020018061292d6025913960400191505060405180910390fd5b601d546001600160a01b0384166000908152601e6020526040902061010090910460ff16420190555b611f298483612330565b611f316123aa565b15611f3e57611f3e6123fb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260099091529190912054611f90918490611c11565b6001600160a01b038516600090815260096020526040812091909155611fb5856127de565b611fbf5782611fc9565b611fc985846127fd565b6001600160a01b038516600090815260096020526040902054909150611fef908261223b565b6001600160a01b038086166000908152600960209081526040808320949094559188168152600e909152205460ff1661209b57601b546001600160a01b03868116600081815260096020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b15801561208857600080fd5b505af1925050508015612099575060015b505b6001600160a01b0384166000908152600e602052604090205460ff1661213457601b546001600160a01b03858116600081815260096020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b15801561212157600080fd5b505af1925050508015612132575060015b505b601b60019054906101000a90046001600160a01b03166001600160a01b031663ffb2c479601c546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561219157600080fd5b505af19250505080156121a2575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3506001949350505050565b600061118483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c11565b600082820183811015611184576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000826122a457506000610f6d565b828202828482816122b157fe5b04146111845760405162461bcd60e51b81526004018080602001828103825260218152602001806129796021913960400191505060405180910390fd5b600061118483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061289f565b6007548111158061235957506001600160a01b0382166000908152600c602052604090205460ff165b611a83576040805162461bcd60e51b815260206004820152601160248201527f5458204c696d6974204578636565646564000000000000000000000000000000604482015290519081900360640190fd5b6019546000906001600160a01b031633148015906123cb575060215460ff16155b80156123d95750601f5460ff165b80156111cf575050602080543060009081526009909252604090912054101590565b6021805460ff1916600117905560165460175460009161241a91610fc9565b61242657600f54612429565b60005b9050600061244d60026117426012546117428660205461229590919063ffffffff16565b90506000612466826020546121f990919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061249a57fe5b6001600160a01b0392831660209182029290920101526003548251911690829060019081106124c557fe5b6001600160a01b0392831660209182029290920181019190915260185460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b8381101561255f578181015183820152602001612547565b505050509050019650505050505050600060405180830381600087803b15801561258857600080fd5b505af115801561259c573d6000803e3d6000fd5b5050505060006125b582476121f990919063ffffffff16565b905060006125d06125c78860026122ee565b601254906121f9565b905060006125e560026117428481878d612295565b90506000612602836117426010548761229590919063ffffffff16565b9050600061261f846117426011548861229590919063ffffffff16565b9050601b60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561267157600080fd5b505af193505050508015612683575060015b506015546040516000916001600160a01b03169061753090849084818181858888f193505050503d80600081146126d6576040519150601f19603f3d011682016040523d82523d6000602084013e6126db565b606091505b5060009250508a1590506127c7576018546014546040805163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991879160c48082019260609290919082900301818588803b15801561275e57600080fd5b505af1158015612772573d6000803e3d6000fd5b50505050506040513d606081101561278957600080fd5b505060408051858152602081018c905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b50506021805460ff19169055505050505050505050565b6001600160a01b03166000908152600b602052604090205460ff161590565b60008061281b6013546117426012548661229590919063ffffffff16565b30600090815260096020526040902054909150612838908261223b565b30600081815260096020908152604091829020939093558051848152905191926001600160a01b038816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a361289783826121f9565b949350505050565b600081836128ee5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611c65578181015183820152602001611c4d565b5060008385816128fa57fe5b049594505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f20627579734e6f7420656e6f75676820746f6b656e7320696e2077616c6c657420666f722061697264726f70536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682ea2646970667358221220d2c29d0e6f6ae3479a850e96f079f12dbce1290884057d48b3e4cdb06149db6c64736f6c634300070600336080604052600180546001600160a01b0319908116732170ed0880ac9a755fd29b2688956bd959f933f8179091556002805490911673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c1790556ec097ce7bc90715b34b9f1000000000600c55610708600d5564e8d4a51000600e5534801561007a57600080fd5b50604051610ebf380380610ebf8339818101604052602081101561009d57600080fd5b50516001600160a01b0381166100c7577310ed43c718714eb63d5aa57b78b54704e256024e6100c9565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610dbc806101036000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610254578063f0fc6bca14610269578063ffb2c4791461027e578063ffd49c84146102a8576100dd565b8063ce7c2ac2146101e6578063d0e30db014610237578063e2d2e2191461023f576100dd565b80632d48e896116100bb5780632d48e896146101775780633a98ef39146101a75780634fab0ae8146101bc578063997664d7146101d1576100dd565b806311ce023d146100e257806314b6ca961461010957806328fd319814610144575b600080fd5b3480156100ee57600080fd5b506100f76102bd565b60408051918252519081900360200190f35b34801561011557600080fd5b506101426004803603604081101561012c57600080fd5b506001600160a01b0381351690602001356102c3565b005b34801561015057600080fd5b506100f76004803603602081101561016757600080fd5b50356001600160a01b03166103e8565b34801561018357600080fd5b506101426004803603604081101561019a57600080fd5b5080359060200135610474565b3480156101b357600080fd5b506100f7610496565b3480156101c857600080fd5b506100f761049c565b3480156101dd57600080fd5b506100f76104a2565b3480156101f257600080fd5b506102196004803603602081101561020957600080fd5b50356001600160a01b03166104a8565b60408051938452602084019290925282820152519081900360600190f35b6101426104c9565b34801561024b57600080fd5b506100f761075b565b34801561026057600080fd5b506100f7610761565b34801561027557600080fd5b50610142610767565b34801561028a57600080fd5b50610142600480360360208110156102a157600080fd5b5035610772565b3480156102b457600080fd5b506100f7610854565b600c5481565b6000546001600160a01b031633146102da57600080fd5b6001600160a01b03821660009081526007602052604090205415610301576103018261085a565b60008111801561032757506001600160a01b038216600090815260076020526040902054155b1561033a5761033582610982565b61036d565b8015801561035f57506001600160a01b03821660009081526007602052604090205415155b1561036d5761036d826109e3565b6001600160a01b03821660009081526007602052604090205460085461039e91839161039891610ad0565b90610b1b565b6008556001600160a01b03821660009081526007602052604090208190556103c581610b75565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461040d5750600061046f565b6001600160a01b03821660009081526007602052604081205461042f90610b75565b6001600160a01b0384166000908152600760205260409020600101549091508082116104605760009250505061046f565b61046a8282610ad0565b925050505b919050565b6000546001600160a01b0316331461048b57600080fd5b600d91909155600e55565b60085481565b600e5481565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146104e057600080fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561052b57600080fd5b505afa15801561053f573d6000803e3d6000fd5b505050506040513d602081101561055557600080fd5b50516040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b03169183915060009061059757fe5b6001600160a01b03928316602091820292909201015260018054835192169183919081106105c157fe5b6001600160a01b0392831660209182029290920181019190915260035460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b8381101561065357818101518382015260200161063b565b50505050905001955050505050506000604051808303818588803b15801561067a57600080fd5b505af115801561068e573d6000803e3d6000fd5b5050600154604080516370a0823160e01b815230600482015290516000955061071994508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156106e757600080fd5b505afa1580156106fb573d6000803e3d6000fd5b505050506040513d602081101561071157600080fd5b505190610ad0565b6009549091506107299082610b1b565b600955600854600c546107539161074a916107449085610b92565b90610beb565b600b5490610b1b565b600b55505050565b600b5481565b600a5481565b6107703361085a565b565b6000546001600160a01b0316331461078957600080fd5b600454806107975750610851565b6000805a905060005b84831080156107ae57508381105b1561084c5783600f54106107c2576000600f555b6107ee6004600f54815481106107d457fe5b6000918252602090912001546001600160a01b0316610c2d565b1561081f5761081f6004600f548154811061080557fe5b6000918252602090912001546001600160a01b031661085a565b61083461082d5a8490610ad0565b8490610b1b565b92505a600f80546001908101909155909250016107a0565b505050505b50565b600d5481565b6001600160a01b03811660009081526007602052604090205461087c57610851565b6000610887826103e8565b9050801561097e57600a5461089c9082610b1b565b600a556001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156108f557600080fd5b505af1158015610909573d6000803e3d6000fd5b505050506040513d602081101561091f57600080fd5b50506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109549082610b1b565b6001600160a01b03831660009081526007602052604090206002810191909155546103c590610b75565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b6004805460001981019081106109f557fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610a2d57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610a7b57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610aab57fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610b1283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c69565b90505b92915050565b600082820183811015610b12576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610b15600c54610744600b5485610b9290919063ffffffff16565b600082610ba157506000610b15565b82820282848281610bae57fe5b0414610b125760405162461bcd60e51b8152600401808060200182810382526021815260200180610d666021913960400191505060405180910390fd5b6000610b1283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d00565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610b155750600e54610c62836103e8565b1192915050565b60008184841115610cf85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610cbd578181015183820152602001610ca5565b50505050905090810190601f168015610cea5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610d4f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610cbd578181015183820152602001610ca5565b506000838581610d5b57fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122065c92c04ae3891edf453020e42852a06ba3db27b591b2cec2d809f9485beaabc64736f6c63430007060033

Deployed ByteCode Sourcemap

12751:13914:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25796:800;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25796:800:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25796:800:0;;-1:-1:-1;25796:800:0;-1:-1:-1;25796:800:0;:::i;:::-;;14511:56;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;15937:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16359:216;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16359:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;20971:94;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20971:94:0;;;;:::i;25611:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25611:150:0;;;;;;;:::i;15667:88::-;;;;;;;;;;;;;:::i;20721:217::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20721:217:0;;:::i;13836:28::-;;;;;;;;;;;;;:::i;24756:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24756:183:0;;;;;;;:::i;16871:364::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16871:364:0;;;;;;;;;;;;;;;;;:::i;25286:142::-;;;;;;;;;;;;;:::i;24947:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24947:183:0;;;;;;;:::i;21112:164::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21112:164:0;;;;;;;;;;;:::i;4567:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4567:103:0;-1:-1:-1;;;;;4567:103:0;;:::i;15761:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23787:130;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23787:130:0;;;;;;;;;;:::i;16583:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16583:116:0;-1:-1:-1;;;;;16583:116:0;;:::i;23064:96::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23064:96:0;;:::i;14328:37::-;;;;;;;;;;;;;:::i;23523:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23523:120:0;;;;;;;;;;:::i;14474:30::-;;;;;;;;;;;;;:::i;23925:423::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23925:423:0;;;;;;;;;;;;;;;;;:::i;16107:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16107:105:0;-1:-1:-1;;;;;16107:105:0;;:::i;14372:39::-;;;;;;;;;;;;;:::i;13359:59::-;;;;;;;;;;;;;:::i;13265:52::-;;;;;;;;;;;;;:::i;17323:149::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17323:149:0;;:::i;16023:78::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;16023:78:0;;;;;;;;;;;;;;25138:136;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25138:136:0;;:::i;24356:228::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24356:228:0;;;;;;;;;;:::i;14111:19::-;;;;;;;;;;;;;:::i;16707:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16707:156:0;;;;;;;;:::i;4240:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4240:94:0;-1:-1:-1;;;;;4240:94:0;;:::i;14139:25::-;;;;;;;;;;;;;:::i;13909:36::-;;;;;;;;;;;;;:::i;25436:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25436:167:0;;:::i;16218:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16218:133:0;;;;;;;;;;:::i;24592:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24592:156:0;;;;;;;;;:::i;13952:35::-;;;;;;;;;;;;;:::i;4410:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4410:97:0;-1:-1:-1;;;;;4410:97:0;;:::i;4967:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4967:173:0;-1:-1:-1;;;;;4967:173:0;;:::i;23168:347::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23168:347:0;;;;;;;;;;:::i;23651:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23651:128:0;;;;;;;;;;:::i;14080:24::-;;;;;;;;;;;;;:::i;4741:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4741:107:0;-1:-1:-1;;;;;4741:107:0;;:::i;14171:31::-;;;;;;;;;;;;;:::i;25796:800::-;3956:19;3964:10;3956:7;:19::i;:::-;3948:38;;;;;-1:-1:-1;;;3948:38:0;;;;;;;;;;;;-1:-1:-1;;;3948:38:0;;;;;;;;;;;;;;;25912:12:::1;25945:33:::0;;::::1;25937:85;;;;-1:-1:-1::0;;;25937:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26035:6;26031:82;26045:20:::0;;::::1;26031:82;;;26096:6;;26103:1;26096:9;;;;;;;;;::::0;;;::::1;;26089:16:::0;;;::::1;::::0;-1:-1:-1;26067:3:0::1;;26031:82;;;;26148:4;26129:15;26139:4;26129:9;:15::i;:::-;:23;;26121:75;;;;-1:-1:-1::0;;;26121:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26209:6;26205:250;26219:20:::0;;::::1;26205:250;;;26256:43;26271:4;26276:9;;26286:1;26276:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;26276:12:0::1;26289:6;;26296:1;26289:9;;;;;;;;;;;;;26256:14;:43::i;:::-;;26314:16;:30;26331:9;;26341:1;26331:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;26331:12:0::1;26314:30:::0;;-1:-1:-1;26314:30:0;::::1;::::0;;;;;;-1:-1:-1;26314:30:0;;::::1;;26310:138;;26365:11;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;26365:11:0::1;:20;26386:9:::0;;26396:1;26386:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;26386:12:0::1;26400:9;:23;26410:9;;26420:1;26410:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;26410:12:0::1;-1:-1:-1::0;;;;;26400:23:0::1;-1:-1:-1::0;;;;;26400:23:0::1;;;;;;;;;;;;;26365:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;26365:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;26361:75:::0;::::1;26241:3;;26205:250;;;-1:-1:-1::0;;;;;;26492:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;26488:105;;26531:11;::::0;-1:-1:-1;;;;;26558:15:0;;::::1;;::::0;;;:9:::1;:15;::::0;;;;;;26531:43;;-1:-1:-1;;;26531:43:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11:::1;::::0;;::::1;::::0;;::::1;::::0;:20:::1;::::0;:43;;;;;26558:15;;26531:43;;;;;;26558:15;26531:11;:43;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;26527:59:::0;::::1;3988:1;25796:800:::0;;;;;:::o;14511:56::-;;;;:::o;15937:80::-;16009:5;;;;;;;;;;;;-1:-1:-1;;;16009:5:0;;;;15937:80;:::o;16359:216::-;16463:10;16434:4;16451:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16451:32:0;;;;;;;;;;;:41;;;16508:37;;;;;;;16434:4;;16451:32;;16463:10;;16508:37;;;;;;;;-1:-1:-1;16563:4:0;16359:216;;;;;:::o;20971:94::-;3956:19;3964:10;3956:7;:19::i;:::-;3948:38;;;;;-1:-1:-1;;;3948:38:0;;;;;;;;;;;;-1:-1:-1;;;3948:38:0;;;;;;;;;;;;;;;21036:11:::1;:21:::0;;-1:-1:-1;;21036:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20971:94::o;25611:150::-;25691:4;25747:6;25715:29;25735:8;25715:19;:29::i;:::-;:38;;25611:150;-1:-1:-1;;;25611:150:0:o;15667:88::-;15740:12;;15667:88;:::o;20721:217::-;3956:19;3964:10;3956:7;:19::i;:::-;3948:38;;;;;-1:-1:-1;;;3948:38:0;;;;;;;;;;;;-1:-1:-1;;;3948:38:0;;;;;;;;;;;;;;;20864:20:::1;::::0;20856:74:::1;::::0;20824:21:::1;::::0;-1:-1:-1;;;;;20864:20:0::1;::::0;20926:3:::1;20895:28:::0;;::::1;:34;20856:74:::0;::::1;;;::::0;::::1;::::0;;;20895:34;20864:20;20856:74;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;3988:1;20721:217:::0;:::o;13836:28::-;;;;:::o;24756:183::-;4125:24;4138:10;4125:12;:24::i;:::-;4117:48;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;;;;24854:15:::1;:25:::0;;;;24890:26:::1;:41:::0;24756:183::o;16871:364::-;-1:-1:-1;;;;;16991:19:0;;16971:4;16991:19;;;:11;:19;;;;;;;;17011:10;16991:31;;;;;;;;-1:-1:-1;;16991:46:0;16988:180;;17087:69;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17087:19:0;;-1:-1:-1;17087:19:0;;;:11;:19;;;;;17107:10;17087:31;;;;;;;;;;:69;;17123:6;;17087:35;:69::i;:::-;-1:-1:-1;;;;;17053:19:0;;;;;;:11;:19;;;;;;;;17073:10;17053:31;;;;;;;:103;16988:180;17187:40;17201:6;17209:9;17220:6;17187:13;:40::i;:::-;17180:47;;16871:364;;;;;;:::o;25286:142::-;25414:4;;25339:7;;25366:54;;25404:15;;-1:-1:-1;;;;;25414:4:0;25404:9;:15::i;:::-;25393:4;;25366:33;;25383:15;;-1:-1:-1;;;;;25393:4:0;25383:9;:15::i;:::-;25366:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;25359:61;;25286:142;:::o;24947:183::-;4125:24;4138:10;4125:12;:24::i;:::-;4117:48;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;;;;25057:11:::1;;;;;;;;;-1:-1:-1::0;;;;;25057:11:0::1;-1:-1:-1::0;;;;;25057:35:0::1;;25093:10;25105:16;25057:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;21112:164:::0;3956:19;3964:10;3956:7;:19::i;:::-;3948:38;;;;;-1:-1:-1;;;3948:38:0;;;;;;;;;;;;-1:-1:-1;;;3948:38:0;;;;;;;;;;;;;;;21196:18:::1;:28:::0;;-1:-1:-1;;21196:28:0::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;21235:33:0::1;21196:28;;21235:33:::0;;;::::1;::::0;;;::::1;;::::0;;21112:164::o;4567:103::-;4622:4;4657:5;-1:-1:-1;;;;;4657:5:0;;;4646:16;;;;4567:103::o;15761:80::-;13196:1;15761:80;:::o;23787:130::-;4125:24;4138:10;4125:12;:24::i;:::-;4117:48;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23876:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;23876:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23787:130::o;16583:116::-;16638:4;16662:29;16670:7;-1:-1:-1;;16662:7:0;:29::i;23064:96::-;4125:24;4138:10;4125:12;:24::i;:::-;4117:48;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;;;;23131:12:::1;:21:::0;23064:96::o;14328:37::-;;;;;;:::o;23523:120::-;4125:24;4138:10;4125:12;:24::i;:::-;4117:48;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23607:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;23607:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23523:120::o;14474:30::-;;;;;;:::o;23925:423::-;4125:24;4138:10;4125:12;:24::i;:::-;4117:48;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;;;;24068:12:::1;:28:::0;;;24107:13:::1;:30:::0;;;24148:12:::1;:28:::0;;;24198:52:::1;24163:13:::0;24198:33:::1;24083:13:::0;24123:14;24198:17:::1;:33::i;:::-;:37:::0;::::1;:52::i;:::-;24187:8;:63:::0;24261:14:::1;:32:::0;;;24338:1:::1;24278:15:::0;24323:16:::1;24312:8;;:27;24304:36;;;::::0;::::1;;23925:423:::0;;;;:::o;16107:105::-;-1:-1:-1;;;;;16191:18:0;16173:7;16191:18;;;:9;:18;;;;;;;16107:105::o;14372:39::-;;;;;;;;;:::o;13359:59::-;;;;:::o;13265:52::-;;;;:::o;17323:149::-;3956:19;3964:10;3956:7;:19::i;:::-;3948:38;;;;;-1:-1:-1;;;3948:38:0;;;;;;;;;;;;-1:-1:-1;;;3948:38:0;;;;;;;;;;;;;;;17461:3:::1;17442:14;17427:12;;:29;17426:38;;;;;;17408:15;:56:::0;-1:-1:-1;17323:149:0:o;16023:78::-;16075:7;16093:5;-1:-1:-1;;;;;16093:5:0;16023:78;:::o;25138:136::-;4125:24;4138:10;4125:12;:24::i;:::-;4117:48;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;;;;25228:6:::1;25222:3;:12;25214:21;;;::::0;::::1;;25246:14;:20:::0;25138:136::o;24356:228::-;4125:24;4138:10;4125:12;:24::i;:::-;4117:48;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;;;;24475:21:::1;:46:::0;;-1:-1:-1;;;;;24475:46:0;;::::1;-1:-1:-1::0;;24475:46:0;;::::1;;::::0;;;24532:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;24356:228::o;14111:19::-;;;-1:-1:-1;;;;;14111:19:0;;:::o;16707:156::-;16787:4;16811:44;16825:10;16837:9;16848:6;16811:13;:44::i;4240:94::-;3956:19;3964:10;3956:7;:19::i;:::-;3948:38;;;;;-1:-1:-1;;;3948:38:0;;;;;;;;;;;;-1:-1:-1;;;3948:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;4300:19:0::1;;::::0;;;4322:4:::1;4300:19;::::0;;;;;;;:26;;-1:-1:-1;;4300:26:0::1;::::0;;::::1;::::0;;4240:94::o;14139:25::-;;;;:::o;13909:36::-;;;-1:-1:-1;;;;;13909:36:0;;:::o;25436:167::-;25504:7;25531:64;25572:22;:20;:22::i;:::-;25554:4;;25531:36;;25544:22;;25564:1;;25544:15;;-1:-1:-1;;;;;25554:4:0;25544:9;:15::i;:::-;:19;;:22::i;:::-;25531:8;;:12;:36::i;:::-;:40;;:64::i;16218:133::-;-1:-1:-1;;;;;16320:19:0;;;16302:7;16320:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16218:133::o;24592:156::-;4125:24;4138:10;4125:12;:24::i;:::-;4117:48;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;;;;24684:11:::1;:22:::0;;-1:-1:-1;;24684:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;24717:13:::1;:23:::0;24592:156::o;13952:35::-;;;-1:-1:-1;;;;;13952:35:0;;:::o;4410:97::-;3956:19;3964:10;3956:7;:19::i;:::-;3948:38;;;;;-1:-1:-1;;;3948:38:0;;;;;;;;;;;;-1:-1:-1;;;3948:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;4472:19:0::1;4494:5;4472:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;4472:27:0::1;::::0;;4410:97::o;4967:173::-;3956:19;3964:10;3956:7;:19::i;:::-;3948:38;;;;;-1:-1:-1;;;3948:38:0;;;;;;;;;;;;-1:-1:-1;;;3948:38:0;;;;;;;;;;;;;;;5043:5:::1;:11:::0;;-1:-1:-1;;5043:11:0::1;-1:-1:-1::0;;;;;5043:11:0;::::1;::::0;;::::1;::::0;;5065:19;;;-1:-1:-1;5065:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;5065:26:0::1;::::0;;::::1;::::0;;;5107:25;;;;;;;::::1;::::0;;;;;;;;;::::1;4967:173:::0;:::o;23168:347::-;4125:24;4138:10;4125:12;:24::i;:::-;4117:48;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23265:23:0;::::1;23283:4;23265:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;23302:4:0::1;::::0;-1:-1:-1;;;;;23292:14:0;;::::1;23302:4:::0;::::1;23292:14;;23265:41;23257:50;;;::::0;::::1;;-1:-1:-1::0;;;;;23318:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;23318:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;23362:146:::1;;23387:11;::::0;:31:::1;::::0;;-1:-1:-1;;;23387:31:0;;-1:-1:-1;;;;;23387:31:0;;::::1;;::::0;::::1;::::0;23416:1:::1;23387:31:::0;;;;;;;;:11:::1;::::0;;::::1;;::::0;:20:::1;::::0;:31;;;;;23416:1;;23387:31;;;;;;23416:1;23387:11;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23362:146;;;23449:11;::::0;-1:-1:-1;;;;;23478:17:0;;::::1;;::::0;;;:9:::1;:17;::::0;;;;;;23449:47;;-1:-1:-1;;;23449:47:0;;::::1;::::0;::::1;::::0;;;;;;;;;:11:::1;::::0;;::::1;::::0;;::::1;::::0;:20:::1;::::0;:47;;;;;23478:17;;23449:47;;;;;;23478:17;23449:11;:47;::::1;;::::0;::::1;;;;::::0;::::1;23362:146;23168:347:::0;;:::o;23651:128::-;4125:24;4138:10;4125:12;:24::i;:::-;4117:48;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;-1:-1:-1;;;4117:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23739:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;23739:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23651:128::o;14080:24::-;;;-1:-1:-1;;;;;14080:24:0;;:::o;4741:107::-;-1:-1:-1;;;;;4821:19:0;4797:4;4821:19;;;:14;:19;;;;;;;;;4741:107::o;14171:31::-;;;;;;:::o;19541:330::-;19671:53;;;;;;;;;;;-1:-1:-1;;;19671:53:0;;;;;;;;-1:-1:-1;;;;;19671:17:0;;19634:4;19671:17;;;:9;:17;;;;;;;:53;;19693:6;;19671:21;:53::i;:::-;-1:-1:-1;;;;;19651:17:0;;;;;;;:9;:17;;;;;;:73;;;;19758:20;;;;;;;:32;;19783:6;19758:24;:32::i;:::-;-1:-1:-1;;;;;19735:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;19806:35;;;;;;;19735:20;;19806:35;;;;;;;;;;;;;-1:-1:-1;19859:4:0;19541:330;;;;;:::o;1626:192::-;1712:7;1748:12;1740:6;;;;1732:29;;;;-1:-1:-1;;;1732:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1784:5:0;;;1626:192::o;17480:2049::-;17592:6;;17572:4;;17592:6;;17589:63;;;17608:41;17623:6;17631:9;17642:6;17608:14;:41::i;:::-;17601:48;;;;17589:63;-1:-1:-1;;;;;17668:22:0;;;;;;:14;:22;;;;;;;;17667:23;:53;;;;-1:-1:-1;;;;;;17695:25:0;;;;;;:14;:25;;;;;;;;17694:26;17667:53;17664:127;;;17744:11;;;;17736:43;;;;;-1:-1:-1;;;17736:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17836:22:0;;;;;;:14;:22;;;;;;;;17835:23;:53;;;;-1:-1:-1;;;;;;17862:26:0;;17883:4;17862:26;;17835:53;:84;;;;-1:-1:-1;17914:4:0;;-1:-1:-1;;;;;17893:26:0;;;17914:4;;17893:26;;17835:84;:105;;;;-1:-1:-1;17936:4:0;;-1:-1:-1;;;;;17923:17:0;;;17936:4;;17923:17;;17835:105;:142;;;;-1:-1:-1;17957:20:0;;-1:-1:-1;;;;;17944:33:0;;;17957:20;;17944:33;;17835:142;:180;;;;-1:-1:-1;17994:21:0;;-1:-1:-1;;;;;17981:34:0;;;17994:21;;17981:34;;17835:180;17831:372;;;18031:18;18052:20;18062:9;18052;:20::i;:::-;18031:41;;18120:15;;18109:6;18096:10;:19;18095:40;;18087:114;;;;-1:-1:-1;;;18087:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17831:372;;18337:4;;-1:-1:-1;;;;;18327:14:0;;;18337:4;;18327:14;:49;;;;-1:-1:-1;18358:18:0;;;;18327:49;:94;;;;-1:-1:-1;;;;;;18394:27:0;;;;;;:16;:27;;;;;;;;18393:28;18327:94;18323:299;;;-1:-1:-1;;;;;18446:24:0;;;;;;:13;:24;;;;;;18473:15;-1:-1:-1;18438:91:0;;;;-1:-1:-1;;;18438:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18589:21;;-1:-1:-1;;;;;18544:24:0;;;;;;:13;:24;;;;;18589:21;;;;;;18571:15;:39;18544:66;;18323:299;18677:28;18690:6;18698;18677:12;:28::i;:::-;18762:16;:14;:16::i;:::-;18759:35;;;18781:10;:8;:10::i;:::-;18853:53;;;;;;;;;;;-1:-1:-1;;;18853:53:0;;;;;;;;-1:-1:-1;;;;;18853:17:0;;-1:-1:-1;18853:17:0;;;:9;:17;;;;;;;;:53;;18875:6;;18853:21;:53::i;:::-;-1:-1:-1;;;;;18833:17:0;;;;;;:9;:17;;;;;:73;;;;18944:21;18843:6;18944:13;:21::i;:::-;:56;;18994:6;18944:56;;;18968:23;18976:6;18984;18968:7;:23::i;:::-;-1:-1:-1;;;;;19034:20:0;;;;;;:9;:20;;;;;;18919:81;;-1:-1:-1;19034:40:0;;18919:81;19034:24;:40::i;:::-;-1:-1:-1;;;;;19011:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;19120:24;;;;;:16;:24;;;;;;;19116:119;;19165:11;;-1:-1:-1;;;;;19194:17:0;;;;;;;:9;:17;;;;;;;19165:47;;-1:-1:-1;;;19165:47:0;;;;;;;;;;;;;;:11;;;;;;;;:20;;:47;;;;;19194:17;;19165:47;;;;;;19194:17;19165:11;:47;;;;;;;;;;;;;;;;;;;;;;;;;19161:63;;-1:-1:-1;;;;;19251:27:0;;;;;;:16;:27;;;;;;;;19247:129;;19299:11;;-1:-1:-1;;;;;19331:20:0;;;;;;;:9;:20;;;;;;;19299:53;;-1:-1:-1;;;19299:53:0;;;;;;;;;;;;;;:11;;;;;;;;:20;;:53;;;;;19331:20;;19299:53;;;;;;19331:20;19299:11;:53;;;;;;;;;;;;;;;;;;;;;;;;;19295:69;;19392:11;;;;;;;;;-1:-1:-1;;;;;19392:11:0;-1:-1:-1;;;;;19392:19:0;;19412:14;;19392:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19388:51;19473:9;-1:-1:-1;;;;;19456:43:0;19465:6;-1:-1:-1;;;;;19456:43:0;;19484:14;19456:43;;;;;;;;;;;;;;;;;;-1:-1:-1;19517:4:0;;17480:2049;-1:-1:-1;;;;17480:2049:0:o;1484:136::-;1542:7;1569:43;1573:1;1576;1569:43;;;;;;;;;;;;;;;;;:3;:43::i;1297:181::-;1355:7;1387:5;;;1411:6;;;;1403:46;;;;;-1:-1:-1;;;1403:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1824:250;1882:7;1906:6;1902:47;;-1:-1:-1;1936:1:0;1929:8;;1902:47;1973:5;;;1977:1;1973;:5;:1;1997:5;;;;;:10;1989:56;;;;-1:-1:-1;;;1989:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2080:132;2138:7;2165:39;2169:1;2172;2165:39;;;;;;;;;;;;;;;;;:3;:39::i;19879:166::-;19976:12;;19966:6;:22;;:49;;;-1:-1:-1;;;;;;19992:23:0;;;;;;:15;:23;;;;;;;;19966:49;19958:79;;;;;-1:-1:-1;;;19958:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;20516:197;20603:4;;20565;;-1:-1:-1;;;;;20603:4:0;20589:10;:18;;;;:38;;-1:-1:-1;20621:6:0;;;;20620:7;20589:38;:62;;;;-1:-1:-1;20640:11:0;;;;20589:62;:116;;;;-1:-1:-1;;20692:13:0;;;20682:4;20664:24;;;;:9;:24;;;;;;;;:41;;;20516:197::o;21288:1766::-;14633:6;:13;;-1:-1:-1;;14633:13:0;14642:4;14633:13;;;21383:15:::1;::::0;21400:26:::1;::::0;14633:6;;21367:60:::1;::::0;:15:::1;:60::i;:::-;:79;;21434:12;;21367:79;;;21430:1;21367:79;21337:109;;21457:23;21483:59;21540:1;21483:52;21526:8;;21483:38;21501:19;21483:13;;:17;;:38;;;;:::i;:59::-;21457:85;;21553:20;21576:34;21594:15;21576:13;;:17;;:34;;;;:::i;:::-;21647:16;::::0;;21661:1:::1;21647:16:::0;;;;;::::1;::::0;;21553:57;;-1:-1:-1;21623:21:0::1;::::0;21647:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21647:16:0::1;21623:40;;21692:4;21674;21679:1;21674:7;;;;;;;;-1:-1:-1::0;;;;;21674:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;21718:4:::1;::::0;21708:7;;21718:4;::::1;::::0;21708;;21718;;21708:7;::::1;;;;;-1:-1:-1::0;;;;;21708:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;21793:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;21793:188:0;;::::1;::::0;::::1;::::0;;;21735:21:::1;21793:188:::0;;;;;;21935:4:::1;21793:188:::0;;;;;;21955:15:::1;21793:188:::0;;;;;;;;;;;;;;;;;;;;;21759:21:::1;::::0;21793:6;;;::::1;::::0;:57:::1;::::0;21865:12;;21735:21;;21908:4;;21793:188;;;;;;;;;;::::1;::::0;::::1;::::0;;;21735:21;21793:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21994:17;22014:40;22040:13;22014:21;:25;;:40;;;;:::i;:::-;21994:60:::0;-1:-1:-1;22067:19:0::1;22089:40;22102:26;:19:::0;22126:1:::1;22102:23;:26::i;:::-;22089:8;::::0;;:12:::1;:40::i;:::-;22067:62:::0;-1:-1:-1;22150:26:0::1;22179:58;22235:1;22179:51;22067:62:::0;22179:51;:9;22193:19;22179:13:::1;:34::i;:58::-;22150:87;;22248:27;22278:45;22311:11;22278:28;22292:13;;22278:9;:13;;:28;;;;:::i;:45::-;22248:75;;22334:26;22363:44;22395:11;22363:27;22377:12;;22363:9;:13;;:27;;;;:::i;:44::-;22334:73;;22424:11;;;;;;;;;-1:-1:-1::0;;;;;22424:11:0::1;-1:-1:-1::0;;;;;22424:19:0::1;;22451;22424:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22420:65:::0;22524:20:::1;::::0;22516:77:::1;::::0;22496:15:::1;::::0;-1:-1:-1;;;;;22524:20:0::1;::::0;22583:5:::1;::::0;22558:18;;22496:15;22516:77;22496:15;22516:77;22558:18;22524:20;22583:5;22516:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22667:5:0::1;::::0;-1:-1:-1;;22688:19:0;;;-1:-1:-1;22685:362:0::1;;22723:6;::::0;22897:21:::1;::::0;22723:244:::1;::::0;;-1:-1:-1;;;22723:244:0;;22799:4:::1;22723:244;::::0;::::1;::::0;;;;;;;:6:::1;:244:::0;;;;;;;;;;-1:-1:-1;;;;;22897:21:0;;::::1;22723:244:::0;;;;22937:15:::1;22723:244:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;22753:18;;22723:244;;;;;::::1;::::0;;;;;;;;;22753:18;22723:6;:244;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;22723:244:0;22987:48;;;;;22723:244:::1;22987:48:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;22685:362;-1:-1:-1::0;;14651:6:0;:14;;-1:-1:-1;;14651:14:0;;;-1:-1:-1;;;;;;;;;21288:1766:0:o;20053:114::-;-1:-1:-1;;;;;20140:19:0;20115:4;20140:19;;;:11;:19;;;;;;;;20139:20;;20053:114::o;20175:333::-;20242:7;20262:17;20282:40;20307:14;;20282:20;20293:8;;20282:6;:10;;:20;;;;:::i;:40::-;20380:4;20362:24;;;;:9;:24;;;;;;20262:60;;-1:-1:-1;20362:39:0;;20262:60;20362:28;:39::i;:::-;20353:4;20335:24;;;;:9;:24;;;;;;;;;:66;;;;20417:42;;;;;;;20353:4;;-1:-1:-1;;;;;20417:42:0;;;;;;;;;;;;;20479:21;:6;20490:9;20479:10;:21::i;:::-;20472:28;20175:333;-1:-1:-1;;;;20175:333:0:o;2218:345::-;2304:7;2406:12;2399:5;2391:28;;;;-1:-1:-1;;;2391:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2430:9;2446:1;2442;:5;;;;;;;2218:345;-1:-1:-1;;;;;2218:345:0:o

Swarm Source

ipfs://65c92c04ae3891edf453020e42852a06ba3db27b591b2cec2d809f9485beaabc
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.