Contract 0xC001BBe2B87079294C63EcE98BdD0a88D761434e 5

 

Contract Overview

EverGrow: EGC Token
Balance:
334.823352408995003116 BNB

BNB Value:
$158,950.69 (@ $474.73/BNB)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x0db2b101ab6d16c3919557dd77b25f31563a76865b32335102ade7495bebb74dApprove144515642022-01-17 18:37:4037 secs ago0x3368af57167a0e6eff572e0089c9d7f4960dcdd0 IN  EverGrow: EGC Token0 BNB0.00022538
0x12a9de50bedea61efb47944ba500377d33de0901fd6de40736856f3c644abefcTransfer144514852022-01-17 18:33:434 mins ago0xd62f5ee6d5edbeb219aa1651cf6fde90519b5ef4 IN  EverGrow: EGC Token0 BNB0.001609425
0x8a03a56cb36ab23e1daf08d5ae8b214abe186c059a0a48dfa1adb08a5805c15bApprove144513042022-01-17 18:24:3713 mins ago0xa47f7be88010833b4eefba00cf00a8c6c9fd1ffa IN  EverGrow: EGC Token0 BNB0.00022538
0xa64c3ce947227eaea8277cd993c66c6e4037f1f101cafd3c165d5f7941aaeb9cTransfer144512962022-01-17 18:24:1314 mins ago0x3c799a87172d7deb1e4953518e1bc51abd5ee8f2 IN  EverGrow: EGC Token0 BNB0.001
0x62d27c92bec63ca9198ff858a2a9a526a1aa9ccf7132ee7930c4c419d0b2d261Transfer144512762022-01-17 18:23:1315 mins ago0x1bc23def4c0f9f7be1250dfec3e9c5568248cf4e IN  EverGrow: EGC Token0 BNB0.002448085
0x82c8fc480b58cdde01d5e548fa377cda7248c7bee818514d08fc8e95c484e847Approve144512532022-01-17 18:22:0416 mins ago0x7674e11c2867fc2faafd8ce797c39a1493620511 IN  EverGrow: EGC Token0 BNB0.00022538
0x6dc42cf2dcbbbbbd96ab0f00304224430452f6e7e300ff8fce9e85bae8eb2ba3Transfer144512132022-01-17 18:20:0418 mins ago0xaaad7e4ab11677b7eaa5894f68aef0ed7c14edf0 IN  EverGrow: EGC Token0 BNB0.002818435
0x3bb364edfa4793c4d536cc6b2609dc39b57238749e039110953811a9cd0126b0Transfer144511942022-01-17 18:19:0719 mins ago0x0b03bca07ed079be519825df38d2fe55aa6126e6 IN  EverGrow: EGC Token0 BNB0.001829945
0x765963eefd098e97234ece312cb0f12ee31194c8badefaf1c867715c89b3af7fApprove144511912022-01-17 18:18:5819 mins ago0xd9697627442e6946fb03bb9ae9ef8209d7d43395 IN  EverGrow: EGC Token0 BNB0.00022538
0xdfc960833a23685206c7bcb1ce1d7d4bc4c4929b747ec4a1cbd11b095f1e1608Transfer144511582022-01-17 18:17:1920 mins ago0x04b68edc4ef008983c59579ccdbf3908aaa811d8 IN  EverGrow: EGC Token0 BNB0.00176285
0x47803ee427a53b9c4e515abd39386366096f3b8a8b97268a2decf64b207f6bf8Approve144510972022-01-17 18:14:1624 mins ago0x1ec368eb808e0de352bd265bfbf928d79893f220 IN  EverGrow: EGC Token0 BNB0.00022538
0x8fe99ca5da520be5b264bf21b947a058d2250413eefa23201c22c00cb1446514Set Swap Back Se...144508782022-01-17 18:03:0535 mins agoEverGrow: Deployer IN  EverGrow: EGC Token0 BNB0.00007433
0xa86106df2da71b4b18617c772c0337dd5ccbb4a1e40e4fccb6ff53069a31c1b5Set Swap Back Se...144508702022-01-17 18:02:4135 mins agoEverGrow: Deployer IN  EverGrow: EGC Token0 BNB0.00022372
0x93517ee79aaca38bc636d50a67a11bcf20c592d822ac407678855748a1ed67e0Transfer144508592022-01-17 18:02:0836 mins ago0x091209e922a679c848148c2f3f6e1c1e74126c6e IN  EverGrow: EGC Token0 BNB0.001754945
0xfd7217497a01d7be4397e454eb66bf98f04a5c9d69f46adf023b66995b4f633dTransfer144508412022-01-17 18:01:1437 mins ago0xd2a66ccc46c9b29eaff3faaf77650fbd90d9d755 IN  EverGrow: EGC Token0 BNB0.00221348
0xafec1ca6691a928f36046c9b063d622caff695c54663a6b45e30476754297c15Approve144507582022-01-17 17:57:0541 mins ago0x8abcc010eb092e4d317dbd1e367cae4ed5dd8b78 IN  EverGrow: EGC Token0 BNB0.000270456
0xe54e65bb56ce82a20a252562b85272c1baee90fd77aca992a99c49ed371491c0Approve144506792022-01-17 17:53:0845 mins ago0xb65f7d5d26df5fafa97d65e52f96b849667699cb IN  EverGrow: EGC Token0 BNB0.00012746
0x0cce2563fb92d5c4a34e1ce9938075ba89c1cb453db42e7412f99c9890024528Approve144506712022-01-17 17:52:4445 mins ago0xb65f7d5d26df5fafa97d65e52f96b849667699cb IN  EverGrow: EGC Token0 BNB0.00007423
0xdf7407429c3248af63f325b2b6c63355a034c1ff8431d6c6f730421d7c905e93Transfer144506582022-01-17 17:52:0546 mins ago0x022b1c4ff5044641d9ea01c77dd5bf27f9237149 IN  EverGrow: EGC Token0 BNB0.00168376
0x2367636544fa1ca52e07c9a2ee9f6a8779260029c940fd31f86841166517a960Transfer144505902022-01-17 17:48:4149 mins ago0x6ba95c5d91f862f321d970b1fef6d3d0aac11939 IN  EverGrow: EGC Token0 BNB0.00252528
0x10aca65091f627e5d1bed64a8878e23d1f8db8100446ddbe0f11b29a6730e1bcTransfer144503872022-01-17 17:38:2859 mins ago0x1866c3db54d1ac117480d9de3362d051caa124e7 IN  EverGrow: EGC Token0 BNB0.00672223
0x31495174913cdd42013381697b9c0ee65fc41317269557c3aeb543e724a3ac15Transfer144503552022-01-17 17:36:521 hr 1 min ago0xd761357975228f4fa9053f44111162e3483424d3 IN  EverGrow: EGC Token0 BNB0.003042355
0x91912e0fa18b769ee82d6409b41753235fcec536ba9459f5f2b0dec5c77b5c3aApprove144503472022-01-17 17:36:281 hr 1 min ago0x78e0a096f8fae30ecfc9de46b9e035cddde7d75b IN  EverGrow: EGC Token0 BNB0.00022538
0x160d6acc851efd342859d3ec285dc0086f95c9bb842b4b31f2ac56a737f7e0a1Approve144503262022-01-17 17:35:251 hr 2 mins ago0xb7f2e8dfdffb7f47985e61830151b8195865960f IN  EverGrow: EGC Token0 BNB0.00022538
0x560023adb1b936551f3be0dd948632eeb4b57331d41b8e515d48dbf57582801aApprove144503092022-01-17 17:34:341 hr 3 mins ago0x375f6d3d52ced34bfb35e483452e6ca4c663bb4a IN  EverGrow: EGC Token0 BNB0.00022538
[ Download CSV Export 

OVERVIEW

EverGrow is a deflationary token. All holders of EGC will earn 8% reward from every buy or sell transaction, 3% of every transaction is used for strategic buyback fee, and 2% is transformed into liquidity for Pancakeswap.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x2515eb81dc6a948aa1daabcb9f2ff5a6e4dd3c93ada954401b84d5398e0a09b7144508732022-01-17 18:02:5035 mins ago EverGrow: EGC Token PancakeSwap: Router v20.716531518125305484 BNB
0x2515eb81dc6a948aa1daabcb9f2ff5a6e4dd3c93ada954401b84d5398e0a09b7144508732022-01-17 18:02:5035 mins ago EverGrow: EGC Token0xd55821dcc0d423f52a2e7e9bbdec2a7f7704e0030.716531518125305484 BNB
0x2515eb81dc6a948aa1daabcb9f2ff5a6e4dd3c93ada954401b84d5398e0a09b7144508732022-01-17 18:02:5035 mins ago EverGrow: EGC Token 0xfbab1d829e36efbd13642229eae2964004f38c415.732252145002443874 BNB
0x2515eb81dc6a948aa1daabcb9f2ff5a6e4dd3c93ada954401b84d5398e0a09b7144508732022-01-17 18:02:5035 mins ago PancakeSwap: Router v2 EverGrow: EGC Token9.314909735628971296 BNB
0xc94ff84ee2d9807a7c6ffb1783befefd01f90560bfb62f948a03842df648fa55144496352022-01-17 17:00:421 hr 37 mins ago EverGrow: EGC Token PancakeSwap: Router v20.71887230596810347 BNB
0xc94ff84ee2d9807a7c6ffb1783befefd01f90560bfb62f948a03842df648fa55144496352022-01-17 17:00:421 hr 37 mins ago EverGrow: EGC Token0xd55821dcc0d423f52a2e7e9bbdec2a7f7704e0030.71887230596810347 BNB
0xc94ff84ee2d9807a7c6ffb1783befefd01f90560bfb62f948a03842df648fa55144496352022-01-17 17:00:421 hr 37 mins ago EverGrow: EGC Token 0xfbab1d829e36efbd13642229eae2964004f38c415.750978447744827766 BNB
0xc94ff84ee2d9807a7c6ffb1783befefd01f90560bfb62f948a03842df648fa55144496352022-01-17 17:00:421 hr 37 mins ago PancakeSwap: Router v2 EverGrow: EGC Token9.345339977585345121 BNB
0x1ff495686352357bad164e7316348bcc831129be311c2818cf6434e00088e87d144496342022-01-17 17:00:391 hr 37 mins ago EverGrow: EGC Token PancakeSwap: Router v20.719439861965600372 BNB
0x1ff495686352357bad164e7316348bcc831129be311c2818cf6434e00088e87d144496342022-01-17 17:00:391 hr 37 mins ago EverGrow: EGC Token0xd55821dcc0d423f52a2e7e9bbdec2a7f7704e0030.719439861965600372 BNB
0x1ff495686352357bad164e7316348bcc831129be311c2818cf6434e00088e87d144496342022-01-17 17:00:391 hr 37 mins ago EverGrow: EGC Token 0xfbab1d829e36efbd13642229eae2964004f38c415.75551889572480298 BNB
0x1ff495686352357bad164e7316348bcc831129be311c2818cf6434e00088e87d144496342022-01-17 17:00:391 hr 37 mins ago PancakeSwap: Router v2 EverGrow: EGC Token9.352718205552804843 BNB
0xf8075170412caa26e7994fb40262e00404fb1f8212c5eccac52fa858801ec88b144490072022-01-17 16:29:032 hrs 9 mins ago EverGrow: EGC Token PancakeSwap: Router v20.725784444173801119 BNB
0xf8075170412caa26e7994fb40262e00404fb1f8212c5eccac52fa858801ec88b144490072022-01-17 16:29:032 hrs 9 mins ago EverGrow: EGC Token0xd55821dcc0d423f52a2e7e9bbdec2a7f7704e0030.725784444173801119 BNB
0xf8075170412caa26e7994fb40262e00404fb1f8212c5eccac52fa858801ec88b144490072022-01-17 16:29:032 hrs 9 mins ago EverGrow: EGC Token 0xfbab1d829e36efbd13642229eae2964004f38c415.806275553390408959 BNB
0xf8075170412caa26e7994fb40262e00404fb1f8212c5eccac52fa858801ec88b144490072022-01-17 16:29:032 hrs 9 mins ago PancakeSwap: Router v2 EverGrow: EGC Token9.435197774259414559 BNB
0xe01520bb3590d004c77110792d9579f702c37aae84ebd2154afab0c94dbf17c8144489622022-01-17 16:26:482 hrs 11 mins ago EverGrow: EGC Token PancakeSwap: Router v20.725776364703534926 BNB
0xe01520bb3590d004c77110792d9579f702c37aae84ebd2154afab0c94dbf17c8144489622022-01-17 16:26:482 hrs 11 mins ago EverGrow: EGC Token0xd55821dcc0d423f52a2e7e9bbdec2a7f7704e0030.725776364703534926 BNB
0xe01520bb3590d004c77110792d9579f702c37aae84ebd2154afab0c94dbf17c8144489622022-01-17 16:26:482 hrs 11 mins ago EverGrow: EGC Token 0xfbab1d829e36efbd13642229eae2964004f38c415.806210917628279413 BNB
0xe01520bb3590d004c77110792d9579f702c37aae84ebd2154afab0c94dbf17c8144489622022-01-17 16:26:482 hrs 11 mins ago PancakeSwap: Router v2 EverGrow: EGC Token9.435092741145954047 BNB
0xfa3c47b416a52ef3843be60bf12703a5197291d923bce22612b932830792cf4d144485352022-01-17 16:04:322 hrs 33 mins ago EverGrow: EGC Token PancakeSwap: Router v212.3324 BNB
0xa209cd1cc153fd479a905f2a4996e888d9242c9ca8dc4bf16f6bf3367bab7f98144484582022-01-17 16:00:412 hrs 37 mins ago EverGrow: EGC Token PancakeSwap: Router v20.724969377138693542 BNB
0xa209cd1cc153fd479a905f2a4996e888d9242c9ca8dc4bf16f6bf3367bab7f98144484582022-01-17 16:00:412 hrs 37 mins ago PancakeSwap: Router v2 EverGrow: EGC Token9.424601902803016052 BNB
0x7e7dd9be9f020945f3391023391209fcae1f023e18dbe89ce989d8980850ede7144477862022-01-17 15:23:223 hrs 14 mins ago EverGrow: EGC Token PancakeSwap: Router v20.725356688652568083 BNB
0x7e7dd9be9f020945f3391023391209fcae1f023e18dbe89ce989d8980850ede7144477862022-01-17 15:23:223 hrs 14 mins ago EverGrow: EGC Token0xd55821dcc0d423f52a2e7e9bbdec2a7f7704e0030.725356688652568083 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EverGrow

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;



/**
 * SAFEMATH LIBRARY
 */
library SafeMath {
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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);
}

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 BUSD = IBEP20(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56);
    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;

    uint256 public minPeriod = 1 hours;
    uint256 public minDistribution = 1 * (10 ** 18);

    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 = BUSD.balanceOf(address(this));

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

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

        uint256 amount = BUSD.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);
            BUSD.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 EverGrow is IBEP20, Auth {
    using SafeMath for uint256;

    uint256 public constant MASK = type(uint128).max;
    address BUSD = 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56;
    address public WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address DEAD_NON_CHECKSUM = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "EverGrow Coin";
    string constant _symbol = "EGC";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_000_000_000_000_000 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply.div(400); // 0.25%

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

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

    uint256 liquidityFee = 200;
    uint256 buybackFee = 300;
    uint256 reflectionFee = 800;
    uint256 marketingFee = 100;
    uint256 totalFee = 1400;
    uint256 feeDenominator = 10000;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;

    uint256 targetLiquidity = 25;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    uint256 public launchedAtTimestamp;

    uint256 buybackMultiplierNumerator = 200;
    uint256 buybackMultiplierDenominator = 100;
    uint256 buybackMultiplierTriggeredAt;
    uint256 buybackMultiplierLength = 30 minutes;

    bool public autoBuybackEnabled = false;
    mapping (address => bool) buyBacker;
    uint256 autoBuybackCap;
    uint256 autoBuybackAccumulator;
    uint256 autoBuybackAmount;
    uint256 autoBuybackBlockPeriod;
    uint256 autoBuybackBlockLast;

    DividendDistributor distributor;
    address public distributorAddress;

    uint256 distributorGas = 500000;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 2000; // 0.005%
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor (
        address _dexRouter
    ) Auth(msg.sender) {
        router = IDEXRouter(_dexRouter);
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        _allowances[address(this)][address(router)] = _totalSupply;
        WBNB = router.WETH();
        distributor = new DividendDistributor(_dexRouter);
        distributorAddress = address(distributor);

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        buyBacker[msg.sender] = true;

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;

        approve(_dexRouter, _totalSupply);
        approve(address(pair), _totalSupply);
        _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; }
    modifier onlyBuybacker() { require(buyBacker[msg.sender] == true, ""); _; }
    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, _totalSupply);
    }

    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] != _totalSupply){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

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

        checkTxLimit(sender, amount);
        //
        if(shouldSwapBack()){ swapBack(); }
        if(shouldAutoBuyback()){ triggerAutoBuyback(); }

        //        if(!launched() && recipient == pair){ require(_balances[sender] > 0); launch(); }

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

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : amount;

        _balances[recipient] = _balances[recipient].add(amountReceived);

        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 getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + 1 >= block.number){ return feeDenominator.sub(1); }
        if(selling){ return getMultipliedFee(); }
        return totalFee;
    }

    function getMultipliedFee() public view returns (uint256) {
        if (launchedAtTimestamp + 1 days > block.timestamp) {
            return totalFee.mul(18000).div(feeDenominator);
        } else if (buybackMultiplierTriggeredAt.add(buybackMultiplierLength) > block.timestamp) {
            uint256 remainingTime = buybackMultiplierTriggeredAt.add(buybackMultiplierLength).sub(block.timestamp);
            uint256 feeIncrease = totalFee.mul(buybackMultiplierNumerator).div(buybackMultiplierDenominator).sub(totalFee);
            return totalFee.add(feeIncrease.mul(remainingTime).div(buybackMultiplierLength));
        }
        return totalFee;
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).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 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 {}
        payable(marketingFeeReceiver).transfer(amountBNBMarketing);
            
        

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

    function shouldAutoBuyback() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && autoBuybackEnabled
        && autoBuybackBlockLast + autoBuybackBlockPeriod <= block.number // After N blocks from last buyback
        && address(this).balance >= autoBuybackAmount;
    }

    function triggerZeusBuyback(uint256 amount, bool triggerBuybackMultiplier) external authorized {
        buyTokens(amount, DEAD);
        if(triggerBuybackMultiplier){
            buybackMultiplierTriggeredAt = block.timestamp;
            emit BuybackMultiplierActive(buybackMultiplierLength);
        }
    }

    function clearBuybackMultiplier() external authorized {
        buybackMultiplierTriggeredAt = 0;
    }

    function triggerAutoBuyback() internal {
        buyTokens(autoBuybackAmount, DEAD);
        autoBuybackBlockLast = block.number;
        autoBuybackAccumulator = autoBuybackAccumulator.add(autoBuybackAmount);
        if(autoBuybackAccumulator > autoBuybackCap){ autoBuybackEnabled = false; }
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = WBNB;
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }

    function setAutoBuybackSettings(bool _enabled, uint256 _cap, uint256 _amount, uint256 _period) external authorized {
        autoBuybackEnabled = _enabled;
        autoBuybackCap = _cap;
        autoBuybackAccumulator = 0;
        autoBuybackAmount = _amount;
        autoBuybackBlockPeriod = _period;
        autoBuybackBlockLast = block.number;
    }

    function setBuybackMultiplierSettings(uint256 numerator, uint256 denominator, uint256 length) external authorized {
        require(numerator / denominator <= 2 && numerator > denominator);
        buybackMultiplierNumerator = numerator;
        buybackMultiplierDenominator = denominator;
        buybackMultiplierLength = length;
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() public authorized {
        require(launchedAt == 0, "Already launched boi");
        launchedAt = block.number;
        launchedAtTimestamp = block.timestamp;
    }

    function setTxLimit(uint256 amount) external authorized {
        require(amount >= _totalSupply / 1000);
        _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 setFees(uint256 _liquidityFee, uint256 _buybackFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        buybackFee = _buybackFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_buybackFee).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;
    }

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);
    event BuybackMultiplierActive(uint256 duration);
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_dexRouter","type":"address"}],"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":"uint256","name":"duration","type":"uint256"}],"name":"BuybackMultiplierActive","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":"MASK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WBNB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"autoBuybackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"clearBuybackMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"getMultipliedFee","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":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtTimestamp","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":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_cap","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setAutoBuybackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"setBuybackMultiplierSettings","outputs":[],"stateMutability":"nonpayable","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":"_buybackFee","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":"setIsTxLimitExempt","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"triggerBuybackMultiplier","type":"bool"}],"name":"triggerZeusBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273e9e7cea3dedca5984780bafc599bd69add087d56600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000186919062000da8565b66038d7ea4c680006200019a919062000ee5565b600755620001bb61019060075462000b2f60201b620021741790919060201c565b60085560c8600e5561012c600f5561032060105560646011556105786012556127106013556019601655606460175560c8601c556064601d55610708601f556000602060006101000a81548160ff0219169083151502179055506207a1206029556001602a60006101000a81548160ff0219169083151502179055506107d060075462000249919062000d15565b602b553480156200025957600080fd5b5060405162006f6338038062006f6383398181016040528101906200027f919062000c60565b33806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c257600080fd5b505afa158015620003d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fd919062000c60565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200045b92919062000ccb565b602060405180830381600087803b1580156200047657600080fd5b505af11580156200048b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b1919062000c60565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600754600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620005ff57600080fd5b505afa15801562000614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200063a919062000c60565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080604051620006899062000c3b565b62000695919062000cae565b604051809103906000f080158015620006b2573d6000803e3d6000fd5b50602760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000a408160075462000b4760201b60201c565b5062000a77601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660075462000b4760201b60201c565b50600754600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60075460405162000b20919062000cf8565b60405180910390a35062001016565b6000818362000b3f919062000d15565b905092915050565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405162000c29919062000cf8565b60405180910390a36001905092915050565b611d46806200521d83390190565b60008151905062000c5a8162000ffc565b92915050565b60006020828403121562000c7357600080fd5b600062000c838482850162000c49565b91505092915050565b62000c978162000f46565b82525050565b62000ca88162000f7a565b82525050565b600060208201905062000cc5600083018462000c8c565b92915050565b600060408201905062000ce2600083018562000c8c565b62000cf1602083018462000c8c565b9392505050565b600060208201905062000d0f600083018462000c9d565b92915050565b600062000d228262000f7a565b915062000d2f8362000f7a565b92508262000d425762000d4162000fc0565b5b828204905092915050565b6000808291508390505b600185111562000d9f5780860481111562000d775762000d7662000f91565b5b600185161562000d875780820291505b808102905062000d978562000fef565b945062000d57565b94509492505050565b600062000db58262000f7a565b915062000dc28362000f84565b925062000df17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000df9565b905092915050565b60008262000e0b576001905062000ede565b8162000e1b576000905062000ede565b816001811462000e34576002811462000e3f5762000e75565b600191505062000ede565b60ff84111562000e545762000e5362000f91565b5b8360020a91508482111562000e6e5762000e6d62000f91565b5b5062000ede565b5060208310610133831016604e8410600b841016171562000eaf5782820a90508381111562000ea95762000ea862000f91565b5b62000ede565b62000ebe848484600162000d4d565b9250905081840481111562000ed85762000ed762000f91565b5b81810290505b9392505050565b600062000ef28262000f7a565b915062000eff8362000f7a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f3b5762000f3a62000f91565b5b828202905092915050565b600062000f538262000f5a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008160011c9050919050565b620010078162000f46565b81146200101357600080fd5b50565b6141f780620010266000396000f3fe6080604052600436106102b25760003560e01c806395d89b4111610175578063d806d12f116100dc578063f1f3bca311610095578063f708a64f1161006f578063f708a64f14610abd578063f84ba65d14610ae6578063f887ea4014610b0f578063fe9fbb8014610b3a576102b9565b8063f1f3bca314610a2e578063f2fde38b14610a6b578063f5cfec0a14610a94576102b9565b8063d806d12f1461091e578063dd62ed3e14610949578063df20fd4914610986578063e91f214e146109af578063e96fada2146109da578063f0b37c0414610a05576102b9565b8063b210b06d1161012e578063b210b06d14610820578063b6a5d7de14610837578063bf56b37114610860578063c6d2577d1461088b578063ca33e64c146108b6578063d51ed1c8146108e1576102b9565b806395d89b41146107105780639d1944f51461073b578063a4b45c0014610764578063a51af4c51461078d578063a8aa1b31146107b8578063a9059cbb146107e3576102b9565b80632d48e89611610219578063658d4b7f116101d2578063658d4b7f146105fe5780636ddd17131461062757806370a08231146106525780637d1db4a51461068f578063893d20e8146106ba5780638dd95002146106e5576102b9565b80632d48e896146104dc5780632f54bf6e14610505578063313ce567146105425780633bb8a8d41461056d578063571ac8b0146105985780635c85974f146105d5576102b9565b80631161ae391161026b5780631161ae39146103ba57806318160ddd146103f7578063201e7991146104225780632375ce401461044b57806323b872dd146104745780632b112e49146104b1576102b9565b806301339c21146102be5780630445b667146102d5578063048c7baf1461030057806304a66b481461032957806306fdde0314610352578063095ea7b31461037d576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b77565b005b3480156102e157600080fd5b506102ea610c14565b6040516102f79190613dcd565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190613780565b610c1a565b005b34801561033557600080fd5b50610350600480360381019061034b9190613922565b610ca6565b005b34801561035e57600080fd5b50610367610d71565b6040516103749190613d2b565b60405180910390f35b34801561038957600080fd5b506103a4600480360381019061039f91906136df565b610dae565b6040516103b19190613ca9565b60405180910390f35b3480156103c657600080fd5b506103e160048036038101906103dc9190613848565b610ea0565b6040516103ee9190613ca9565b60405180910390f35b34801561040357600080fd5b5061040c610eb5565b6040516104199190613dcd565b60405180910390f35b34801561042e57600080fd5b5061044960048036038101906104449190613848565b610ebf565b005b34801561045757600080fd5b50610472600480360381019061046d9190613884565b610f19565b005b34801561048057600080fd5b5061049b60048036038101906104969190613654565b610f9f565b6040516104a89190613ca9565b60405180910390f35b3480156104bd57600080fd5b506104c6611181565b6040516104d39190613dcd565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190613848565b611203565b005b34801561051157600080fd5b5061052c600480360381019061052791906135c6565b6112de565b6040516105399190613ca9565b60405180910390f35b34801561054e57600080fd5b50610557611337565b6040516105649190613e6b565b60405180910390f35b34801561057957600080fd5b50610582611340565b60405161058f9190613ca9565b60405180910390f35b3480156105a457600080fd5b506105bf60048036038101906105ba91906135c6565b611353565b6040516105cc9190613ca9565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f791906137e3565b611368565b005b34801561060a57600080fd5b50610625600480360381019061062091906136a3565b6113d6565b005b34801561063357600080fd5b5061063c611479565b6040516106499190613ca9565b60405180910390f35b34801561065e57600080fd5b50610679600480360381019061067491906135c6565b61148c565b6040516106869190613dcd565b60405180910390f35b34801561069b57600080fd5b506106a46114d5565b6040516106b19190613dcd565b60405180910390f35b3480156106c657600080fd5b506106cf6114db565b6040516106dc9190613bc0565b60405180910390f35b3480156106f157600080fd5b506106fa611504565b6040516107079190613bc0565b60405180910390f35b34801561071c57600080fd5b5061072561152a565b6040516107329190613d2b565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d91906137e3565b611567565b005b34801561077057600080fd5b5061078b60048036038101906107869190613618565b6115c8565b005b34801561079957600080fd5b506107a2611696565b6040516107af9190613bc0565b60405180910390f35b3480156107c457600080fd5b506107cd6116bc565b6040516107da9190613bc0565b60405180910390f35b3480156107ef57600080fd5b5061080a600480360381019061080591906136df565b6116e2565b6040516108179190613ca9565b60405180910390f35b34801561082c57600080fd5b506108356116f7565b005b34801561084357600080fd5b5061085e600480360381019061085991906135c6565b611749565b005b34801561086c57600080fd5b506108756117eb565b6040516108829190613dcd565b60405180910390f35b34801561089757600080fd5b506108a06117f1565b6040516108ad9190613dcd565b60405180910390f35b3480156108c257600080fd5b506108cb6117f7565b6040516108d89190613bc0565b60405180910390f35b3480156108ed57600080fd5b50610908600480360381019061090391906137e3565b61181d565b6040516109159190613dcd565b60405180910390f35b34801561092a57600080fd5b5061093361188f565b6040516109409190613dcd565b60405180910390f35b34801561095557600080fd5b50610970600480360381019061096b9190613618565b6119b6565b60405161097d9190613dcd565b60405180910390f35b34801561099257600080fd5b506109ad60048036038101906109a89190613744565b611a3d565b005b3480156109bb57600080fd5b506109c4611aaa565b6040516109d19190613dcd565b60405180910390f35b3480156109e657600080fd5b506109ef611ac0565b6040516109fc9190613bc0565b60405180910390f35b348015610a1157600080fd5b50610a2c6004803603810190610a2791906135c6565b611ae6565b005b348015610a3a57600080fd5b50610a556004803603810190610a50919061371b565b611b89565b604051610a629190613dcd565b60405180910390f35b348015610a7757600080fd5b50610a926004803603810190610a8d91906135ef565b611bdd565b005b348015610aa057600080fd5b50610abb6004803603810190610ab6919061380c565b611cf6565b005b348015610ac957600080fd5b50610ae46004803603810190610adf91906136a3565b611db5565b005b348015610af257600080fd5b50610b0d6004803603810190610b0891906136a3565b612055565b005b348015610b1b57600080fd5b50610b246120f8565b604051610b319190613cc4565b60405180910390f35b348015610b4657600080fd5b50610b616004803603810190610b5c91906135c6565b61211e565b604051610b6e9190613ca9565b60405180910390f35b610b803361211e565b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb690613dad565b60405180910390fd5b6000601a5414610c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfb90613d6d565b60405180910390fd5b43601a8190555042601b81905550565b602b5481565b610c233361211e565b610c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5990613dad565b60405180910390fd5b83602060006101000a81548160ff02191690831515021790555082602281905550600060238190555081602481905550806025819055504360268190555050505050565b610caf3361211e565b610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce590613dad565b60405180910390fd5b84600e8190555083600f819055508260108190555081601181905550610d4182610d3385610d25888a61218a90919063ffffffff16565b61218a90919063ffffffff16565b61218a90919063ffffffff16565b601281905550806013819055506004601354610d5d9190613f31565b60125410610d6a57600080fd5b5050505050565b60606040518060400160405280600d81526020017f4576657247726f7720436f696e00000000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e8e9190613dcd565b60405180910390a36001905092915050565b600082610eac8361181d565b11905092915050565b6000600754905090565b610ec83361211e565b610f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efe90613dad565b60405180910390fd5b81601681905550806017819055505050565b610f223361211e565b610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5890613dad565b60405180910390fd5b60028284610f6f9190613f31565b11158015610f7c57508183115b610f8557600080fd5b82601c8190555081601d8190555080601f81905550505050565b6000600754600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461116d576110ec826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121a09092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6111788484846121f5565b90509392505050565b60006111fe6111b1600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661148c565b6111f06111df600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661148c565b60075461272290919063ffffffff16565b61272290919063ffffffff16565b905090565b61120c3361211e565b61124b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124290613dad565b60405180910390fd5b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b81526004016112a8929190613e42565b600060405180830381600087803b1580156112c257600080fd5b505af11580156112d6573d6000803e3d6000fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b602060009054906101000a900460ff1681565b600061136182600754610dae565b9050919050565b6113713361211e565b6113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a790613dad565b60405180910390fd5b6103e86007546113c09190613f31565b8110156113cc57600080fd5b8060088190555050565b6113df3361211e565b61141e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141590613dad565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602a60009054906101000a900460ff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600381526020017f4547430000000000000000000000000000000000000000000000000000000000815250905090565b6115703361211e565b6115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a690613dad565b60405180910390fd5b620b71b081106115be57600080fd5b8060298190555050565b6115d13361211e565b611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790613dad565b60405180910390fd5b81601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b602860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116ef3384846121f5565b905092915050565b6117003361211e565b61173f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173690613dad565b60405180910390fd5b6000601e81905550565b611752336112de565b611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178890613d8d565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601a5481565b601b5481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061188861182a611181565b61187a61186b600261185d601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661148c565b61273890919063ffffffff16565b8561273890919063ffffffff16565b61217490919063ffffffff16565b9050919050565b60004262015180601b546118a39190613edb565b11156118db576118d46013546118c661465060125461273890919063ffffffff16565b61217490919063ffffffff16565b90506119b3565b426118f3601f54601e5461218a90919063ffffffff16565b11156119ad57600061192442611916601f54601e5461218a90919063ffffffff16565b61272290919063ffffffff16565b90506000611967601254611959601d5461194b601c5460125461273890919063ffffffff16565b61217490919063ffffffff16565b61272290919063ffffffff16565b90506119a4611993601f54611985858561273890919063ffffffff16565b61217490919063ffffffff16565b60125461218a90919063ffffffff16565b925050506119b3565b60125490505b90565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a463361211e565b611a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7c90613dad565b60405180910390fd5b81602a60006101000a81548160ff02191690831515021790555080602b819055505050565b6fffffffffffffffffffffffffffffffff801681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611aef336112de565b611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2590613d8d565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000436001601a54611b9b9190613edb565b10611bbd57611bb6600160135461272290919063ffffffff16565b9050611bd8565b8115611bd257611bcb61188f565b9050611bd8565b60125490505b919050565b611be6336112de565b611c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1c90613d8d565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611ceb9190613bdb565b60405180910390a150565b611cff3361211e565b611d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3590613dad565b60405180910390fd5b611d6a82600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661274e565b8015611db15742601e819055507f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a601f54604051611da89190613dcd565b60405180910390a15b5050565b611dbe3361211e565b611dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df490613dad565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611e875750601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611e9057600080fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611f8257602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401611f4b929190613bf6565b600060405180830381600087803b158015611f6557600080fd5b505af1158015611f79573d6000803e3d6000fd5b50505050612051565b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161201e929190613c1f565b600060405180830381600087803b15801561203857600080fd5b505af115801561204c573d6000803e3d6000fd5b505050505b5050565b61205e3361211e565b61209d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209490613dad565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600081836121829190613f31565b905092915050565b600081836121989190613edb565b905092915050565b60008383111582906121e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121df9190613d2b565b60405180910390fd5b5082840390509392505050565b6000602c60009054906101000a900460ff161561221e5761221784848461299e565b905061271b565b6122288483612b0c565b612230612ba9565b1561223e5761223d612c80565b5b61224661323c565b15612254576122536132ef565b5b6122dd826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121a09092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061232b8561336b565b6123355782612341565b6123408585856133c2565b5b905061239581600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218a90919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124fb57602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016124c5929190613c1f565b600060405180830381600087803b1580156124df57600080fd5b505af19250505080156124f0575060015b6124f9576124fa565b5b5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661261e57602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016125e8929190613c1f565b600060405180830381600087803b15801561260257600080fd5b505af1925050508015612613575060015b61261c5761261d565b5b5b602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796029546040518263ffffffff1660e01b815260040161267b9190613dcd565b600060405180830381600087803b15801561269557600080fd5b505af19250505080156126a6575060015b6126af576126b0565b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161270d9190613dcd565b60405180910390a360019150505b9392505050565b600081836127309190613fbc565b905092915050565b600081836127469190613f62565b905092915050565b6001602c60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156127ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156127da5781602001602082028036833780820191505090505b509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160008151811061283a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106128af577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008486426040518663ffffffff1660e01b815260040161294c9493929190613cdf565b6000604051808303818588803b15801561296557600080fd5b505af1158015612979573d6000803e3d6000fd5b5050505050506000602c60006101000a81548160ff0219169083151502179055505050565b6000612a29826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121a09092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612abe82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218a90919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b60085481111580612b665750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9c90613d4d565b60405180910390fd5b5050565b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612c165750602c60009054906101000a900460ff16155b8015612c2e5750602a60009054906101000a900460ff165b8015612c7b5750602b54600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602c60006101000a81548160ff0219169083151502179055506000612cab601654601754610ea0565b612cb757600e54612cba565b60005b90506000612cfa6002612cec601254612cde86602b5461273890919063ffffffff16565b61217490919063ffffffff16565b61217490919063ffffffff16565b90506000612d1382602b5461272290919063ffffffff16565b90506000600267ffffffffffffffff811115612d58577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612d865781602001602082028036833780820191505090505b5090503081600081518110612dc4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612e5b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612efe959493929190613de8565b600060405180830381600087803b158015612f1857600080fd5b505af1158015612f2c573d6000803e3d6000fd5b505050506000612f45824761272290919063ffffffff16565b90506000612f71612f6060028961217490919063ffffffff16565b60125461272290919063ffffffff16565b90506000612fad6002612f9f84612f918c8861273890919063ffffffff16565b61217490919063ffffffff16565b61217490919063ffffffff16565b90506000612fd883612fca6010548761273890919063ffffffff16565b61217490919063ffffffff16565b9050600061300384612ff56011548861273890919063ffffffff16565b61217490919063ffffffff16565b9050602760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561306f57600080fd5b505af193505050508015613081575060015b61308a5761308b565b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156130f3573d6000803e3d6000fd5b50600089111561321557601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161318696959493929190613c48565b6060604051808303818588803b15801561319f57600080fd5b505af11580156131b3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131d891906138d3565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a60405161320c929190613e42565b60405180910390a15b505050505050505050506000602c60006101000a81548160ff021916908315150217905550565b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156132a95750602c60009054906101000a900460ff16155b80156132c15750602060009054906101000a900460ff165b80156132dc5750436025546026546132d99190613edb565b11155b80156132ea57506024544710155b905090565b61331d602454600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661274e565b4360268190555061333b60245460235461218a90919063ffffffff16565b6023819055506022546023541115613369576000602060006101000a81548160ff0219169083151502179055505b565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080613444601354613436613427601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611b89565b8661273890919063ffffffff16565b61217490919063ffffffff16565b905061349881600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218a90919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135389190613dcd565b60405180910390a3613553818461272290919063ffffffff16565b9150509392505050565b60008135905061356c81614165565b92915050565b6000813590506135818161417c565b92915050565b60008135905061359681614193565b92915050565b6000813590506135ab816141aa565b92915050565b6000815190506135c0816141aa565b92915050565b6000602082840312156135d857600080fd5b60006135e68482850161355d565b91505092915050565b60006020828403121561360157600080fd5b600061360f84828501613572565b91505092915050565b6000806040838503121561362b57600080fd5b60006136398582860161355d565b925050602061364a8582860161355d565b9150509250929050565b60008060006060848603121561366957600080fd5b60006136778682870161355d565b93505060206136888682870161355d565b92505060406136998682870161359c565b9150509250925092565b600080604083850312156136b657600080fd5b60006136c48582860161355d565b92505060206136d585828601613587565b9150509250929050565b600080604083850312156136f257600080fd5b60006137008582860161355d565b92505060206137118582860161359c565b9150509250929050565b60006020828403121561372d57600080fd5b600061373b84828501613587565b91505092915050565b6000806040838503121561375757600080fd5b600061376585828601613587565b92505060206137768582860161359c565b9150509250929050565b6000806000806080858703121561379657600080fd5b60006137a487828801613587565b94505060206137b58782880161359c565b93505060406137c68782880161359c565b92505060606137d78782880161359c565b91505092959194509250565b6000602082840312156137f557600080fd5b60006138038482850161359c565b91505092915050565b6000806040838503121561381f57600080fd5b600061382d8582860161359c565b925050602061383e85828601613587565b9150509250929050565b6000806040838503121561385b57600080fd5b60006138698582860161359c565b925050602061387a8582860161359c565b9150509250929050565b60008060006060848603121561389957600080fd5b60006138a78682870161359c565b93505060206138b88682870161359c565b92505060406138c98682870161359c565b9150509250925092565b6000806000606084860312156138e857600080fd5b60006138f6868287016135b1565b9350506020613907868287016135b1565b9250506040613918868287016135b1565b9150509250925092565b600080600080600060a0868803121561393a57600080fd5b60006139488882890161359c565b95505060206139598882890161359c565b945050604061396a8882890161359c565b935050606061397b8882890161359c565b925050608061398c8882890161359c565b9150509295509295909350565b60006139a583836139c0565b60208301905092915050565b6139ba81614057565b82525050565b6139c981613ff0565b82525050565b6139d881613ff0565b82525050565b60006139e982613e96565b6139f38185613eb9565b93506139fe83613e86565b8060005b83811015613a2f578151613a168882613999565b9750613a2183613eac565b925050600181019050613a02565b5085935050505092915050565b613a4581614014565b82525050565b613a5481614069565b82525050565b613a638161408d565b82525050565b6000613a7482613ea1565b613a7e8185613eca565b9350613a8e8185602086016140c3565b613a9781614154565b840191505092915050565b6000613aaf601183613eca565b91507f5458204c696d69742045786365656465640000000000000000000000000000006000830152602082019050919050565b6000613aef601483613eca565b91507f416c7265616479206c61756e6368656420626f690000000000000000000000006000830152602082019050919050565b6000613b2f600683613eca565b91507f214f574e455200000000000000000000000000000000000000000000000000006000830152602082019050919050565b6000613b6f600b83613eca565b91507f21415554484f52495a45440000000000000000000000000000000000000000006000830152602082019050919050565b613bab81614040565b82525050565b613bba8161404a565b82525050565b6000602082019050613bd560008301846139cf565b92915050565b6000602082019050613bf060008301846139b1565b92915050565b6000604082019050613c0b60008301856139cf565b613c186020830184613a5a565b9392505050565b6000604082019050613c3460008301856139cf565b613c416020830184613ba2565b9392505050565b600060c082019050613c5d60008301896139cf565b613c6a6020830188613ba2565b613c776040830187613a5a565b613c846060830186613a5a565b613c9160808301856139cf565b613c9e60a0830184613ba2565b979650505050505050565b6000602082019050613cbe6000830184613a3c565b92915050565b6000602082019050613cd96000830184613a4b565b92915050565b6000608082019050613cf46000830187613a5a565b8181036020830152613d0681866139de565b9050613d1560408301856139cf565b613d226060830184613ba2565b95945050505050565b60006020820190508181036000830152613d458184613a69565b905092915050565b60006020820190508181036000830152613d6681613aa2565b9050919050565b60006020820190508181036000830152613d8681613ae2565b9050919050565b60006020820190508181036000830152613da681613b22565b9050919050565b60006020820190508181036000830152613dc681613b62565b9050919050565b6000602082019050613de26000830184613ba2565b92915050565b600060a082019050613dfd6000830188613ba2565b613e0a6020830187613a5a565b8181036040830152613e1c81866139de565b9050613e2b60608301856139cf565b613e386080830184613ba2565b9695505050505050565b6000604082019050613e576000830185613ba2565b613e646020830184613ba2565b9392505050565b6000602082019050613e806000830184613bb1565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613ee682614040565b9150613ef183614040565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613f2657613f256140f6565b5b828201905092915050565b6000613f3c82614040565b9150613f4783614040565b925082613f5757613f56614125565b5b828204905092915050565b6000613f6d82614040565b9150613f7883614040565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613fb157613fb06140f6565b5b828202905092915050565b6000613fc782614040565b9150613fd283614040565b925082821015613fe557613fe46140f6565b5b828203905092915050565b6000613ffb82614020565b9050919050565b600061400d82614020565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006140628261409f565b9050919050565b60006140748261407b565b9050919050565b600061408682614020565b9050919050565b600061409882614040565b9050919050565b60006140aa826140b1565b9050919050565b60006140bc82614020565b9050919050565b60005b838110156140e15780820151818401526020810190506140c6565b838111156140f0576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b61416e81613ff0565b811461417957600080fd5b50565b61418581614002565b811461419057600080fd5b50565b61419c81614014565b81146141a757600080fd5b50565b6141b381614040565b81146141be57600080fd5b5056fea264697066735822122081109349d4c3b7960c61317909b62828571e99776ff08bd59b2a0781073ccd3a64736f6c63430008000033608060405273e9e7cea3dedca5984780bafc599bd69add087d56600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610e10600d55670de0b6b3a7640000600e55348015620000e057600080fd5b5060405162001d4638038062001d468339818101604052810190620001069190620001f7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000157577310ed43c718714eb63d5aa57b78b54704e256024e62000159565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000271565b600081519050620001f18162000257565b92915050565b6000602082840312156200020a57600080fd5b60006200021a84828501620001e0565b91505092915050565b6000620002308262000237565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620002628162000223565b81146200026e57600080fd5b50565b611ac580620002816000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610291578063f0fc6bca146102bc578063ffb2c479146102d3578063ffd49c84146102fc576100dd565b8063ce7c2ac21461021d578063d0e30db01461025c578063e2d2e21914610266576100dd565b80632d48e896116100bb5780632d48e896146101735780633a98ef391461019c5780634fab0ae8146101c7578063997664d7146101f2576100dd565b806311ce023d146100e257806314b6ca961461010d57806328fd319814610136575b600080fd5b3480156100ee57600080fd5b506100f7610327565b60405161010491906117a9565b60405180910390f35b34801561011957600080fd5b50610134600480360381019061012f9190611574565b61032d565b005b34801561014257600080fd5b5061015d6004803603810190610158919061154b565b6105ec565b60405161016a91906117a9565b60405180910390f35b34801561017f57600080fd5b5061019a6004803603810190610195919061162b565b610706565b005b3480156101a857600080fd5b506101b1610770565b6040516101be91906117a9565b60405180910390f35b3480156101d357600080fd5b506101dc610776565b6040516101e991906117a9565b60405180910390f35b3480156101fe57600080fd5b5061020761077c565b60405161021491906117a9565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f919061154b565b610782565b604051610253939291906117c4565b60405180910390f35b6102646107ac565b005b34801561027257600080fd5b5061027b610c0e565b60405161028891906117a9565b60405180910390f35b34801561029d57600080fd5b506102a6610c14565b6040516102b391906117a9565b60405180910390f35b3480156102c857600080fd5b506102d1610c1a565b005b3480156102df57600080fd5b506102fa60048036038101906102f591906115d9565b610c25565b005b34801561030857600080fd5b50610311610e05565b60405161031e91906117a9565b60405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461038557600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156103da576103d982610e0b565b5b60008111801561042c57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561043f5761043a826110b2565b6104a1565b60008114801561049157506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156104a05761049f82611161565b5b5b61050a816104fc600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460085461140090919063ffffffff16565b61141690919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506105a2600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461142c565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156106415760009050610701565b600061068e600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461142c565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116106e957600092505050610701565b6106fc818361140090919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075e57600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461080457600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108619190611719565b60206040518083038186803b15801561087957600080fd5b505afa15801561088d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b19190611602565b90506000600267ffffffffffffffff8111156108f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156109245781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110610984577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610a1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b8152600401610ab8949392919061175d565b6000604051808303818588803b158015610ad157600080fd5b505af1158015610ae5573d6000803e3d6000fd5b50505050506000610ba983600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b4b9190611719565b60206040518083038186803b158015610b6357600080fd5b505afa158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b9190611602565b61140090919063ffffffff16565b9050610bc08160095461141690919063ffffffff16565b600981905550610c03610bf2600854610be484600c5461145e90919063ffffffff16565b61147490919063ffffffff16565b600b5461141690919063ffffffff16565b600b81905550505050565b600b5481565b600a5481565b610c2333610e0b565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c7d57600080fd5b600060048054905090506000811415610c965750610e02565b6000805a905060005b8483108015610cad57508381105b15610dfd5783600f5410610cc4576000600f819055505b610d336004600f5481548110610d03577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661148a565b15610da857610da76004600f5481548110610d77577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e0b565b5b610dcd610dbe5a8461140090919063ffffffff16565b8461141690919063ffffffff16565b92505a9150600f6000815480929190610de5906119a3565b91905055508080610df5906119a3565b915050610c9f565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610e5b576110af565b6000610e66826105ec565b905060008111156110ad57610e8681600a5461141690919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610ee9929190611734565b602060405180830381600087803b158015610f0357600080fd5b505af1158015610f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3b91906115b0565b5042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fd581600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461141690919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611066600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461142c565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460016004805490506111759190611915565b815481106111ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110611250577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460056000600460016004805490506112f09190611915565b81548110611327577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060048054806113c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000818361140e9190611915565b905092915050565b600081836114249190611834565b905092915050565b6000611457600c54611449600b548561145e90919063ffffffff16565b61147490919063ffffffff16565b9050919050565b6000818361146c91906118bb565b905092915050565b60008183611482919061188a565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114da9190611834565b1080156114f05750600e546114ee836105ec565b115b9050919050565b60008135905061150681611a4a565b92915050565b60008151905061151b81611a61565b92915050565b60008135905061153081611a78565b92915050565b60008151905061154581611a78565b92915050565b60006020828403121561155d57600080fd5b600061156b848285016114f7565b91505092915050565b6000806040838503121561158757600080fd5b6000611595858286016114f7565b92505060206115a685828601611521565b9150509250929050565b6000602082840312156115c257600080fd5b60006115d08482850161150c565b91505092915050565b6000602082840312156115eb57600080fd5b60006115f984828501611521565b91505092915050565b60006020828403121561161457600080fd5b600061162284828501611536565b91505092915050565b6000806040838503121561163e57600080fd5b600061164c85828601611521565b925050602061165d85828601611521565b9150509250929050565b6000611673838361167f565b60208301905092915050565b61168881611949565b82525050565b61169781611949565b82525050565b60006116a88261180b565b6116b28185611823565b93506116bd836117fb565b8060005b838110156116ee5781516116d58882611667565b97506116e083611816565b9250506001810190506116c1565b5085935050505092915050565b61170481611991565b82525050565b61171381611987565b82525050565b600060208201905061172e600083018461168e565b92915050565b6000604082019050611749600083018561168e565b611756602083018461170a565b9392505050565b600060808201905061177260008301876116fb565b8181036020830152611784818661169d565b9050611793604083018561168e565b6117a0606083018461170a565b95945050505050565b60006020820190506117be600083018461170a565b92915050565b60006060820190506117d9600083018661170a565b6117e6602083018561170a565b6117f3604083018461170a565b949350505050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600061183f82611987565b915061184a83611987565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561187f5761187e6119ec565b5b828201905092915050565b600061189582611987565b91506118a083611987565b9250826118b0576118af611a1b565b5b828204905092915050565b60006118c682611987565b91506118d183611987565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561190a576119096119ec565b5b828202905092915050565b600061192082611987565b915061192b83611987565b92508282101561193e5761193d6119ec565b5b828203905092915050565b600061195482611967565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061199c82611987565b9050919050565b60006119ae82611987565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156119e1576119e06119ec565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b611a5381611949565b8114611a5e57600080fd5b50565b611a6a8161195b565b8114611a7557600080fd5b50565b611a8181611987565b8114611a8c57600080fd5b5056fea264697066735822122036d4a2012882bd12af98dddf7b11a6b203ff145bbb5026ac6ee92bde34a54ee064736f6c6343000800003300000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e

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

00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e

-----Decoded View---------------
Arg [0] : _dexRouter (address): 0x10ed43c718714eb63d5aa57b78b54704e256024e

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e


Deployed ByteCode Sourcemap

12690:15049:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24746:187;;;;;;;;;;;;;:::i;:::-;;14795:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23931:359;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25713:496;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16217:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16720:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27468:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15947:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26617:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24298:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17233:365;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27143:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26808:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4586:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16041:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14379:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16944:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24941:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25449:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14758:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16468:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13355:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16303:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12885:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16127:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26999:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26217:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14676:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14084:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17069:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23138:105;;;;;;;;;;;;;:::i;:::-;;4259:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14112:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14144:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13882:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27293:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19563:663;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16579:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26453:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12766:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13925:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4429:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19328:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4986:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22814:316;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25094:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25577:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14053:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4760:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24746:187;4144:24;4157:10;4144:12;:24::i;:::-;4136:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;24815:1:::1;24801:10;;:15;24793:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;24865:12;24852:10;:25;;;;24910:15;24888:19;:37;;;;24746:187::o:0;14795:50::-;;;;:::o;23931:359::-;4144:24;4157:10;4144:12;:24::i;:::-;4136:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;24078:8:::1;24057:18;;:29;;;;;;;;;;;;;;;;;;24114:4;24097:14;:21;;;;24154:1;24129:22;:26;;;;24186:7;24166:17;:27;;;;24229:7;24204:22;:32;;;;24270:12;24247:20;:35;;;;23931:359:::0;;;;:::o;25713:496::-;4144:24;4157:10;4144:12;:24::i;:::-;4136:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25892:13:::1;25877:12;:28;;;;25929:11;25916:10;:24;;;;25967:14;25951:13;:30;;;;26007:13;25992:12;:28;;;;26042:69;26097:13;26042:50;26077:14;26042:30;26060:11;26042:13;:17;;:30;;;;:::i;:::-;:34;;:50;;;;:::i;:::-;:54;;:69;;;;:::i;:::-;26031:8;:80;;;;26139:15;26122:14;:32;;;;26199:1;26184:14;;:16;;;;:::i;:::-;26173:8;;:27;26165:36;;;::::0;::::1;;25713:496:::0;;;;;:::o;16217:80::-;16265:13;16289:5;;;;;;;;;;;;;;;;;16282:12;;16217:80;:::o;16720:216::-;16795:4;16847:6;16812:11;:23;16824:10;16812:23;;;;;;;;;;;;;;;:32;16836:7;16812:32;;;;;;;;;;;;;;;:41;;;;16890:7;16869:37;;16878:10;16869:37;;;16899:6;16869:37;;;;;;:::i;:::-;;;;;;;;16924:4;16917:11;;16720:216;;;;:::o;27468:150::-;27548:4;27604:6;27572:29;27592:8;27572:19;:29::i;:::-;:38;27565:45;;27468:150;;;;:::o;15947:88::-;16002:7;16020:12;;16013:19;;15947:88;:::o;26617:183::-;4144:24;4157:10;4144:12;:24::i;:::-;4136:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26733:7:::1;26715:15;:25;;;;26780:12;26751:26;:41;;;;26617:183:::0;;:::o;24298:342::-;4144:24;4157:10;4144:12;:24::i;:::-;4136:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;24458:1:::1;24443:11;24431:9;:23;;;;:::i;:::-;:28;;:55;;;;;24475:11;24463:9;:23;24431:55;24423:64;;;::::0;::::1;;24527:9;24498:26;:38;;;;24578:11;24547:28;:42;;;;24626:6;24600:23;:32;;;;24298:342:::0;;;:::o;17233:365::-;17333:4;17388:12;;17353:11;:19;17365:6;17353:19;;;;;;;;;;;;;;;:31;17373:10;17353:31;;;;;;;;;;;;;;;;:47;17350:181;;17450:69;17486:6;17450:69;;;;;;;;;;;;;;;;;:11;:19;17462:6;17450:19;;;;;;;;;;;;;;;:31;17470:10;17450:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;17416:11;:19;17428:6;17416:19;;;;;;;;;;;;;;;:31;17436:10;17416:31;;;;;;;;;;;;;;;:103;;;;17350:181;17550:40;17564:6;17572:9;17583:6;17550:13;:40::i;:::-;17543:47;;17233:365;;;;;:::o;27143:142::-;27196:7;27223:54;27261:15;27271:4;;;;;;;;;;;27261:9;:15::i;:::-;27223:33;27240:15;27250:4;;;;;;;;;;;27240:9;:15::i;:::-;27223:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;27216:61;;27143:142;:::o;26808:183::-;4144:24;4157:10;4144:12;:24::i;:::-;4136:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26918:11:::1;;;;;;;;;;;:35;;;26954:10;26966:16;26918:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26808:183:::0;;:::o;4586:103::-;4641:4;4676:5;;;;;;;;;;;4665:16;;:7;:16;;;4658:23;;4586:103;;;:::o;16041:80::-;16093:5;13274:1;16102:16;;16041:80;:::o;14379:38::-;;;;;;;;;;;;;:::o;16944:117::-;16999:4;17023:30;17031:7;17040:12;;17023:7;:30::i;:::-;17016:37;;16944:117;;;:::o;24941:145::-;4144:24;4157:10;4144:12;:24::i;:::-;4136:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25041:4:::1;25026:12;;:19;;;;:::i;:::-;25016:6;:29;;25008:38;;;::::0;::::1;;25072:6;25057:12;:21;;;;24941:145:::0;:::o;25449:120::-;4144:24;4157:10;4144:12;:24::i;:::-;4136:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25555:6:::1;25533:11;:19;25545:6;25533:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;25449:120:::0;;:::o;14758:30::-;;;;;;;;;;;;;:::o;16468:105::-;16534:7;16552:9;:18;16562:7;16552:18;;;;;;;;;;;;;;;;16545:25;;16468:105;;;:::o;13355:51::-;;;;:::o;16303:78::-;16355:7;16373:5;;;;;;;;;;;16366:12;;16303:78;:::o;12885:64::-;;;;;;;;;;;;;:::o;16127:84::-;16177:13;16201:7;;;;;;;;;;;;;;;;;16194:14;;16127:84;:::o;26999:136::-;4144:24;4157:10;4144:12;:24::i;:::-;4136:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;27089:6:::1;27083:3;:12;27075:21;;;::::0;::::1;;27124:3;27107:14;:20;;;;26999:136:::0;:::o;26217:228::-;4144:24;4157:10;4144:12;:24::i;:::-;4136:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26360:22:::1;26336:21;;:46;;;;;;;;;;;;;;;;;;26416:21;26393:20;;:44;;;;;;;;;;;;;;;;;;26217:228:::0;;:::o;14676:33::-;;;;;;;;;;;;;:::o;14084:19::-;;;;;;;;;;;;;:::o;17069:156::-;17149:4;17173:44;17187:10;17199:9;17210:6;17173:13;:44::i;:::-;17166:51;;17069:156;;;;:::o;23138:105::-;4144:24;4157:10;4144:12;:24::i;:::-;4136:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;23234:1:::1;23203:28;:32;;;;23138:105::o:0;4259:94::-;3975:19;3983:10;3975:7;:19::i;:::-;3967:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4341:4:::1;4319:14:::0;:19:::1;4334:3;4319:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;4259:94:::0;:::o;14112:25::-;;;;:::o;14144:34::-;;;;:::o;13882:36::-;;;;;;;;;;;;;:::o;27293:167::-;27361:7;27388:64;27429:22;:20;:22::i;:::-;27388:36;27401:22;27421:1;27401:15;27411:4;;;;;;;;;;;27401:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;27388:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;27381:71;;27293:167;;;:::o;19563:663::-;19612:7;19667:15;19658:6;19636:19;;:28;;;;:::i;:::-;:46;19632:561;;;19706:39;19730:14;;19706:19;19719:5;19706:8;;:12;;:19;;;;:::i;:::-;:23;;:39;;;;:::i;:::-;19699:46;;;;19632:561;19827:15;19767:57;19800:23;;19767:28;;:32;;:57;;;;:::i;:::-;:75;19763:430;;;19859:21;19883:78;19945:15;19883:57;19916:23;;19883:28;;:32;;:57;;;;:::i;:::-;:61;;:78;;;;:::i;:::-;19859:102;;19976:19;19998:88;20077:8;;19998:74;20043:28;;19998:40;20011:26;;19998:8;;:12;;:40;;;;:::i;:::-;:44;;:74;;;;:::i;:::-;:78;;:88;;;;:::i;:::-;19976:110;;20108:73;20121:59;20156:23;;20121:30;20137:13;20121:11;:15;;:30;;;;:::i;:::-;:34;;:59;;;;:::i;:::-;20108:8;;:12;;:73;;;;:::i;:::-;20101:80;;;;;;19763:430;20210:8;;20203:15;;19563:663;;:::o;16579:133::-;16663:7;16681:11;:19;16693:6;16681:19;;;;;;;;;;;;;;;:28;16701:7;16681:28;;;;;;;;;;;;;;;;16674:35;;16579:133;;;;:::o;26453:156::-;4144:24;4157:10;4144:12;:24::i;:::-;4136:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;26559:8:::1;26545:11;;:22;;;;;;;;;;;;;;;;;;26594:7;26578:13;:23;;;;26453:156:::0;;:::o;12766:48::-;12797:17;12766:48;;;:::o;13925:35::-;;;;;;;;;;;;;:::o;4429:97::-;3975:19;3983:10;3975:7;:19::i;:::-;3967:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4513:5:::1;4491:14;:19;4506:3;4491:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;4429:97:::0;:::o;19328:227::-;19384:7;19425:12;19420:1;19407:10;;:14;;;;:::i;:::-;:30;19404:67;;19447:21;19466:1;19447:14;;:18;;:21;;;;:::i;:::-;19440:28;;;;19404:67;19484:7;19481:41;;;19501:18;:16;:18::i;:::-;19494:25;;;;19481:41;19539:8;;19532:15;;19328:227;;;;:::o;4986:173::-;3975:19;3983:10;3975:7;:19::i;:::-;3967:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;5070:3:::1;5062:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;5106:4;5084:14:::0;:19:::1;5099:3;5084:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;5126:25;5147:3;5126:25;;;;;;:::i;:::-;;;;;;;;4986:173:::0;:::o;22814:316::-;4144:24;4157:10;4144:12;:24::i;:::-;4136:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;22920:23:::1;22930:6;22938:4;;;;;;;;;;;22920:9;:23::i;:::-;22957:24;22954:169;;;23028:15;22997:28;:46;;;;23063:48;23087:23;;23063:48;;;;;;:::i;:::-;;;;;;;;22954:169;22814:316:::0;;:::o;25094:347::-;4144:24;4157:10;4144:12;:24::i;:::-;4136:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25209:4:::1;25191:23;;:6;:23;;;;:41;;;;;25228:4;;;;;;;;;;;25218:14;;:6;:14;;;;25191:41;25183:50;;;::::0;::::1;;25271:6;25244:16;:24;25261:6;25244:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;25291:6;25288:146;;;25313:11;;;;;;;;;;;:20;;;25334:6;25342:1;25313:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25288:146;;;25375:11;;;;;;;;;;;:20;;;25396:6;25404:9;:17;25414:6;25404:17;;;;;;;;;;;;;;;;25375:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25288:146;25094:347:::0;;:::o;25577:128::-;4144:24;4157:10;4144:12;:24::i;:::-;4136:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;25691:6:::1;25665:15;:23;25681:6;25665:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;25577:128:::0;;:::o;14053:24::-;;;;;;;;;;;;;:::o;4760:107::-;4816:4;4840:14;:19;4855:3;4840:19;;;;;;;;;;;;;;;;;;;;;;;;;4833:26;;4760:107;;;:::o;1861:98::-;1919:7;1950:1;1946;:5;;;;:::i;:::-;1939:12;;1861:98;;;;:::o;1543:::-;1601:7;1632:1;1628;:5;;;;:::i;:::-;1621:12;;1543:98;;;;:::o;2073:206::-;2159:7;2217:1;2212;:6;;2220:12;2204:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2259:1;2255;:5;2248:12;;2073:206;;;;;:::o;17606:1074::-;17698:4;17718:6;;;;;;;;;;;17715:63;;;17734:41;17749:6;17757:9;17768:6;17734:14;:41::i;:::-;17727:48;;;;17715:63;17790:28;17803:6;17811;17790:12;:28::i;:::-;17844:16;:14;:16::i;:::-;17841:35;;;17863:10;:8;:10::i;:::-;17841:35;17889:19;:17;:19::i;:::-;17886:48;;;17911:20;:18;:20::i;:::-;17886:48;18069:53;18091:6;18069:53;;;;;;;;;;;;;;;;;:9;:17;18079:6;18069:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18049:9;:17;18059:6;18049:17;;;;;;;;;;;;;;;:73;;;;18135:22;18160:21;18174:6;18160:13;:21::i;:::-;:67;;18221:6;18160:67;;;18184:34;18192:6;18200:9;18211:6;18184:7;:34::i;:::-;18160:67;18135:92;;18263:40;18288:14;18263:9;:20;18273:9;18263:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;18240:9;:20;18250:9;18240:20;;;;;;;;;;;;;;;:63;;;;18320:16;:24;18337:6;18320:24;;;;;;;;;;;;;;;;;;;;;;;;;18316:96;;18351:11;;;;;;;;;;;:20;;;18372:6;18380:9;:17;18390:6;18380:17;;;;;;;;;;;;;;;;18351:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18347:63;;;;;;18316:96;18426:16;:27;18443:9;18426:27;;;;;;;;;;;;;;;;;;;;;;;;;18422:105;;18460:11;;;;;;;;;;;:20;;;18481:9;18492;:20;18502:9;18492:20;;;;;;;;;;;;;;;;18460:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18456:69;;;;;;18422:105;18543:11;;;;;;;;;;;:19;;;18563:14;;18543:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18539:51;;;;;;18624:9;18607:43;;18616:6;18607:43;;;18635:14;18607:43;;;;;;:::i;:::-;;;;;;;;18668:4;18661:11;;;17606:1074;;;;;;:::o;1649:98::-;1707:7;1738:1;1734;:5;;;;:::i;:::-;1727:12;;1649:98;;;;:::o;1755:::-;1813:7;1844:1;1840;:5;;;;:::i;:::-;1833:12;;1755:98;;;;:::o;23562:361::-;14911:4;14902:6;;:13;;;;;;;;;;;;;;;;;;23638:21:::1;23676:1;23662:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23638:40;;23699:4;;;;;;;;;;;23689;23694:1;23689:7;;;;;;;;;;;;;;;;;;;;;:14;;;;;;;;;::::0;::::1;23732:4;23714;23719:1;23714:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;23750:6;;;;;;;;;;;:57;;;23815:6;23837:1;23853:4;23872:2;23889:15;23750:165;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;14917:1;14929:5:::0;14920:6;;:14;;;;;;;;;;;;;;;;;;23562:361;;:::o;18688:332::-;18781:4;18818:53;18840:6;18818:53;;;;;;;;;;;;;;;;;:9;:17;18828:6;18818:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18798:9;:17;18808:6;18798:17;;;;;;;;;;;;;;;:73;;;;18905:32;18930:6;18905:9;:20;18915:9;18905:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;18882:9;:20;18892:9;18882:20;;;;;;;;;;;;;;;:55;;;;19008:4;19001:11;;18688:332;;;;;:::o;19032:166::-;19129:12;;19119:6;:22;;:49;;;;19145:15;:23;19161:6;19145:23;;;;;;;;;;;;;;;;;;;;;;;;;19119:49;19111:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;19032:166;;:::o;20614:197::-;20663:4;20701;;;;;;;;;;;20687:18;;:10;:18;;;;:38;;;;;20719:6;;;;;;;;;;;20718:7;20687:38;:62;;;;;20738:11;;;;;;;;;;;20687:62;:116;;;;;20790:13;;20762:9;:24;20780:4;20762:24;;;;;;;;;;;;;;;;:41;;20687:116;20680:123;;20614:197;:::o;20819:1661::-;14911:4;14902:6;;:13;;;;;;;;;;;;;;;;;;20868:27:::1;20898:60;20914:15;;20931:26;;20898:15;:60::i;:::-;:79;;20965:12;;20898:79;;;20961:1;20898:79;20868:109;;20988:23;21014:59;21071:1;21014:52;21057:8;;21014:38;21032:19;21014:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;20988:85;;21084:20;21107:34;21125:15;21107:13;;:17;;:34;;;;:::i;:::-;21084:57;;21154:21;21192:1;21178:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21154:40;;21223:4;21205;21210:1;21205:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;21249:4;;;;;;;;;;;21239;21244:1;21239:7;;;;;;;;;;;;;;;;;;;;;:14;;;;;;;;;::::0;::::1;21264:21;21288;21264:45;;21322:6;;;;;;;;;;;:57;;;21394:12;21421:1;21437:4;21464;21484:15;21322:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21523:17;21543:40;21569:13;21543:21;:25;;:40;;;;:::i;:::-;21523:60;;21596:19;21618:40;21631:26;21655:1;21631:19;:23;;:26;;;;:::i;:::-;21618:8;;:12;;:40;;;;:::i;:::-;21596:62;;21671:26;21700:58;21756:1;21700:51;21739:11;21700:34;21714:19;21700:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;21671:87;;21769:27;21799:45;21832:11;21799:28;21813:13;;21799:9;:13;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;21769:75;;21855:26;21884:44;21916:11;21884:27;21898:12;;21884:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;21855:73;;21945:11;;;;;;;;;;;:19;;;21972;21945:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;21941:65;;;;;;22024:20;;;;;;;;;;;22016:38;;:58;22055:18;22016:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22132:1;22114:15;:19;22111:362;;;22149:6;;;;;;;;;;;:22;;;22179:18;22225:4;22249:15;22283:1;22303::::0;22323:21:::1;;;;;;;;;;;22363:15;22149:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22413:48;22425:18;22445:15;22413:48;;;;;;;:::i;:::-;;;;;;;;22111:362;14917:1;;;;;;;;;;14929:5:::0;14920:6;;:14;;;;;;;;;;;;;;;;;;20819:1661::o;22488:318::-;22540:4;22578;;;;;;;;;;;22564:18;;:10;:18;;;;:38;;;;;22596:6;;;;;;;;;;;22595:7;22564:38;:69;;;;;22615:18;;;;;;;;;;;22564:69;:143;;;;;22695:12;22669:22;;22646:20;;:45;;;;:::i;:::-;:61;;22564:143;:234;;;;;22781:17;;22756:21;:42;;22564:234;22557:241;;22488:318;:::o;23251:303::-;23301:34;23311:17;;23330:4;;;;;;;;;;;23301:9;:34::i;:::-;23369:12;23346:20;:35;;;;23417:45;23444:17;;23417:22;;:26;;:45;;;;:::i;:::-;23392:22;:70;;;;23501:14;;23476:22;;:39;23473:74;;;23539:5;23518:18;;:26;;;;;;;;;;;;;;;;;;23473:74;23251:303::o;19206:114::-;19268:4;19293:11;:19;19305:6;19293:19;;;;;;;;;;;;;;;;;;;;;;;;;19292:20;19285:27;;19206:114;;;:::o;20234:372::-;20319:7;20339:17;20359:61;20405:14;;20359:41;20370:29;20394:4;;;;;;;;;;;20382:16;;:8;:16;;;20370:11;:29::i;:::-;20359:6;:10;;:41;;;;:::i;:::-;:45;;:61;;;;:::i;:::-;20339:81;;20460:39;20489:9;20460;:24;20478:4;20460:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20433:9;:24;20451:4;20433:24;;;;;;;;;;;;;;;:66;;;;20540:4;20515:42;;20524:6;20515:42;;;20547:9;20515:42;;;;;;:::i;:::-;;;;;;;;20577:21;20588:9;20577:6;:10;;:21;;;;:::i;:::-;20570:28;;;20234:372;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:155::-;;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;212:95;;;;:::o;313:133::-;;394:6;381:20;372:29;;410:30;434:5;410:30;:::i;:::-;362:84;;;;:::o;452:139::-;;536:6;523:20;514:29;;552:33;579:5;552:33;:::i;:::-;504:87;;;;:::o;597:143::-;;685:6;679:13;670:22;;701:33;728:5;701:33;:::i;:::-;660:80;;;;:::o;746:262::-;;854:2;842:9;833:7;829:23;825:32;822:2;;;870:1;867;860:12;822:2;913:1;938:53;983:7;974:6;963:9;959:22;938:53;:::i;:::-;928:63;;884:117;812:196;;;;:::o;1014:278::-;;1130:2;1118:9;1109:7;1105:23;1101:32;1098:2;;;1146:1;1143;1136:12;1098:2;1189:1;1214:61;1267:7;1258:6;1247:9;1243:22;1214:61;:::i;:::-;1204:71;;1160:125;1088:204;;;;:::o;1298:407::-;;;1423:2;1411:9;1402:7;1398:23;1394:32;1391:2;;;1439:1;1436;1429:12;1391:2;1482:1;1507:53;1552:7;1543:6;1532:9;1528:22;1507:53;:::i;:::-;1497:63;;1453:117;1609:2;1635:53;1680:7;1671:6;1660:9;1656:22;1635:53;:::i;:::-;1625:63;;1580:118;1381:324;;;;;:::o;1711:552::-;;;;1853:2;1841:9;1832:7;1828:23;1824:32;1821:2;;;1869:1;1866;1859:12;1821:2;1912:1;1937:53;1982:7;1973:6;1962:9;1958:22;1937:53;:::i;:::-;1927:63;;1883:117;2039:2;2065:53;2110:7;2101:6;2090:9;2086:22;2065:53;:::i;:::-;2055:63;;2010:118;2167:2;2193:53;2238:7;2229:6;2218:9;2214:22;2193:53;:::i;:::-;2183:63;;2138:118;1811:452;;;;;:::o;2269:401::-;;;2391:2;2379:9;2370:7;2366:23;2362:32;2359:2;;;2407:1;2404;2397:12;2359:2;2450:1;2475:53;2520:7;2511:6;2500:9;2496:22;2475:53;:::i;:::-;2465:63;;2421:117;2577:2;2603:50;2645:7;2636:6;2625:9;2621:22;2603:50;:::i;:::-;2593:60;;2548:115;2349:321;;;;;:::o;2676:407::-;;;2801:2;2789:9;2780:7;2776:23;2772:32;2769:2;;;2817:1;2814;2807:12;2769:2;2860:1;2885:53;2930:7;2921:6;2910:9;2906:22;2885:53;:::i;:::-;2875:63;;2831:117;2987:2;3013:53;3058:7;3049:6;3038:9;3034:22;3013:53;:::i;:::-;3003:63;;2958:118;2759:324;;;;;:::o;3089:256::-;;3194:2;3182:9;3173:7;3169:23;3165:32;3162:2;;;3210:1;3207;3200:12;3162:2;3253:1;3278:50;3320:7;3311:6;3300:9;3296:22;3278:50;:::i;:::-;3268:60;;3224:114;3152:193;;;;:::o;3351:401::-;;;3473:2;3461:9;3452:7;3448:23;3444:32;3441:2;;;3489:1;3486;3479:12;3441:2;3532:1;3557:50;3599:7;3590:6;3579:9;3575:22;3557:50;:::i;:::-;3547:60;;3503:114;3656:2;3682:53;3727:7;3718:6;3707:9;3703:22;3682:53;:::i;:::-;3672:63;;3627:118;3431:321;;;;;:::o;3758:692::-;;;;;3914:3;3902:9;3893:7;3889:23;3885:33;3882:2;;;3931:1;3928;3921:12;3882:2;3974:1;3999:50;4041:7;4032:6;4021:9;4017:22;3999:50;:::i;:::-;3989:60;;3945:114;4098:2;4124:53;4169:7;4160:6;4149:9;4145:22;4124:53;:::i;:::-;4114:63;;4069:118;4226:2;4252:53;4297:7;4288:6;4277:9;4273:22;4252:53;:::i;:::-;4242:63;;4197:118;4354:2;4380:53;4425:7;4416:6;4405:9;4401:22;4380:53;:::i;:::-;4370:63;;4325:118;3872:578;;;;;;;:::o;4456:262::-;;4564:2;4552:9;4543:7;4539:23;4535:32;4532:2;;;4580:1;4577;4570:12;4532:2;4623:1;4648:53;4693:7;4684:6;4673:9;4669:22;4648:53;:::i;:::-;4638:63;;4594:117;4522:196;;;;:::o;4724:401::-;;;4846:2;4834:9;4825:7;4821:23;4817:32;4814:2;;;4862:1;4859;4852:12;4814:2;4905:1;4930:53;4975:7;4966:6;4955:9;4951:22;4930:53;:::i;:::-;4920:63;;4876:117;5032:2;5058:50;5100:7;5091:6;5080:9;5076:22;5058:50;:::i;:::-;5048:60;;5003:115;4804:321;;;;;:::o;5131:407::-;;;5256:2;5244:9;5235:7;5231:23;5227:32;5224:2;;;5272:1;5269;5262:12;5224:2;5315:1;5340:53;5385:7;5376:6;5365:9;5361:22;5340:53;:::i;:::-;5330:63;;5286:117;5442:2;5468:53;5513:7;5504:6;5493:9;5489:22;5468:53;:::i;:::-;5458:63;;5413:118;5214:324;;;;;:::o;5544:552::-;;;;5686:2;5674:9;5665:7;5661:23;5657:32;5654:2;;;5702:1;5699;5692:12;5654:2;5745:1;5770:53;5815:7;5806:6;5795:9;5791:22;5770:53;:::i;:::-;5760:63;;5716:117;5872:2;5898:53;5943:7;5934:6;5923:9;5919:22;5898:53;:::i;:::-;5888:63;;5843:118;6000:2;6026:53;6071:7;6062:6;6051:9;6047:22;6026:53;:::i;:::-;6016:63;;5971:118;5644:452;;;;;:::o;6102:596::-;;;;6255:2;6243:9;6234:7;6230:23;6226:32;6223:2;;;6271:1;6268;6261:12;6223:2;6314:1;6339:64;6395:7;6386:6;6375:9;6371:22;6339:64;:::i;:::-;6329:74;;6285:128;6452:2;6478:64;6534:7;6525:6;6514:9;6510:22;6478:64;:::i;:::-;6468:74;;6423:129;6591:2;6617:64;6673:7;6664:6;6653:9;6649:22;6617:64;:::i;:::-;6607:74;;6562:129;6213:485;;;;;:::o;6704:844::-;;;;;;6880:3;6868:9;6859:7;6855:23;6851:33;6848:2;;;6897:1;6894;6887:12;6848:2;6940:1;6965:53;7010:7;7001:6;6990:9;6986:22;6965:53;:::i;:::-;6955:63;;6911:117;7067:2;7093:53;7138:7;7129:6;7118:9;7114:22;7093:53;:::i;:::-;7083:63;;7038:118;7195:2;7221:53;7266:7;7257:6;7246:9;7242:22;7221:53;:::i;:::-;7211:63;;7166:118;7323:2;7349:53;7394:7;7385:6;7374:9;7370:22;7349:53;:::i;:::-;7339:63;;7294:118;7451:3;7478:53;7523:7;7514:6;7503:9;7499:22;7478:53;:::i;:::-;7468:63;;7422:119;6838:710;;;;;;;;:::o;7554:179::-;;7644:46;7686:3;7678:6;7644:46;:::i;:::-;7722:4;7717:3;7713:14;7699:28;;7634:99;;;;:::o;7739:147::-;7834:45;7873:5;7834:45;:::i;:::-;7829:3;7822:58;7812:74;;:::o;7892:108::-;7969:24;7987:5;7969:24;:::i;:::-;7964:3;7957:37;7947:53;;:::o;8006:118::-;8093:24;8111:5;8093:24;:::i;:::-;8088:3;8081:37;8071:53;;:::o;8160:732::-;;8308:54;8356:5;8308:54;:::i;:::-;8378:86;8457:6;8452:3;8378:86;:::i;:::-;8371:93;;8488:56;8538:5;8488:56;:::i;:::-;8567:7;8598:1;8583:284;8608:6;8605:1;8602:13;8583:284;;;8684:6;8678:13;8711:63;8770:3;8755:13;8711:63;:::i;:::-;8704:70;;8797:60;8850:6;8797:60;:::i;:::-;8787:70;;8643:224;8630:1;8627;8623:9;8618:14;;8583:284;;;8587:14;8883:3;8876:10;;8284:608;;;;;;;:::o;8898:109::-;8979:21;8994:5;8979:21;:::i;:::-;8974:3;8967:34;8957:50;;:::o;9013:167::-;9118:55;9167:5;9118:55;:::i;:::-;9113:3;9106:68;9096:84;;:::o;9186:147::-;9281:45;9320:5;9281:45;:::i;:::-;9276:3;9269:58;9259:74;;:::o;9339:364::-;;9455:39;9488:5;9455:39;:::i;:::-;9510:71;9574:6;9569:3;9510:71;:::i;:::-;9503:78;;9590:52;9635:6;9630:3;9623:4;9616:5;9612:16;9590:52;:::i;:::-;9667:29;9689:6;9667:29;:::i;:::-;9662:3;9658:39;9651:46;;9431:272;;;;;:::o;9709:315::-;;9872:67;9936:2;9931:3;9872:67;:::i;:::-;9865:74;;9969:19;9965:1;9960:3;9956:11;9949:40;10015:2;10010:3;10006:12;9999:19;;9855:169;;;:::o;10030:318::-;;10193:67;10257:2;10252:3;10193:67;:::i;:::-;10186:74;;10290:22;10286:1;10281:3;10277:11;10270:43;10339:2;10334:3;10330:12;10323:19;;10176:172;;;:::o;10354:303::-;;10517:66;10581:1;10576:3;10517:66;:::i;:::-;10510:73;;10613:8;10609:1;10604:3;10600:11;10593:29;10648:2;10643:3;10639:12;10632:19;;10500:157;;;:::o;10663:309::-;;10826:67;10890:2;10885:3;10826:67;:::i;:::-;10819:74;;10923:13;10919:1;10914:3;10910:11;10903:34;10963:2;10958:3;10954:12;10947:19;;10809:163;;;:::o;10978:118::-;11065:24;11083:5;11065:24;:::i;:::-;11060:3;11053:37;11043:53;;:::o;11102:112::-;11185:22;11201:5;11185:22;:::i;:::-;11180:3;11173:35;11163:51;;:::o;11220:222::-;;11351:2;11340:9;11336:18;11328:26;;11364:71;11432:1;11421:9;11417:17;11408:6;11364:71;:::i;:::-;11318:124;;;;:::o;11448:238::-;;11587:2;11576:9;11572:18;11564:26;;11600:79;11676:1;11665:9;11661:17;11652:6;11600:79;:::i;:::-;11554:132;;;;:::o;11692:348::-;;11859:2;11848:9;11844:18;11836:26;;11872:71;11940:1;11929:9;11925:17;11916:6;11872:71;:::i;:::-;11953:80;12029:2;12018:9;12014:18;12005:6;11953:80;:::i;:::-;11826:214;;;;;:::o;12046:332::-;;12205:2;12194:9;12190:18;12182:26;;12218:71;12286:1;12275:9;12271:17;12262:6;12218:71;:::i;:::-;12299:72;12367:2;12356:9;12352:18;12343:6;12299:72;:::i;:::-;12172:206;;;;;:::o;12384:807::-;;12671:3;12660:9;12656:19;12648:27;;12685:71;12753:1;12742:9;12738:17;12729:6;12685:71;:::i;:::-;12766:72;12834:2;12823:9;12819:18;12810:6;12766:72;:::i;:::-;12848:80;12924:2;12913:9;12909:18;12900:6;12848:80;:::i;:::-;12938;13014:2;13003:9;12999:18;12990:6;12938:80;:::i;:::-;13028:73;13096:3;13085:9;13081:19;13072:6;13028:73;:::i;:::-;13111;13179:3;13168:9;13164:19;13155:6;13111:73;:::i;:::-;12638:553;;;;;;;;;:::o;13197:210::-;;13322:2;13311:9;13307:18;13299:26;;13335:65;13397:1;13386:9;13382:17;13373:6;13335:65;:::i;:::-;13289:118;;;;:::o;13413:258::-;;13562:2;13551:9;13547:18;13539:26;;13575:89;13661:1;13650:9;13646:17;13637:6;13575:89;:::i;:::-;13529:142;;;;:::o;13677:720::-;;13950:3;13939:9;13935:19;13927:27;;13964:79;14040:1;14029:9;14025:17;14016:6;13964:79;:::i;:::-;14090:9;14084:4;14080:20;14075:2;14064:9;14060:18;14053:48;14118:108;14221:4;14212:6;14118:108;:::i;:::-;14110:116;;14236:72;14304:2;14293:9;14289:18;14280:6;14236:72;:::i;:::-;14318;14386:2;14375:9;14371:18;14362:6;14318:72;:::i;:::-;13917:480;;;;;;;:::o;14403:313::-;;14554:2;14543:9;14539:18;14531:26;;14603:9;14597:4;14593:20;14589:1;14578:9;14574:17;14567:47;14631:78;14704:4;14695:6;14631:78;:::i;:::-;14623:86;;14521:195;;;;:::o;14722:419::-;;14926:2;14915:9;14911:18;14903:26;;14975:9;14969:4;14965:20;14961:1;14950:9;14946:17;14939:47;15003:131;15129:4;15003:131;:::i;:::-;14995:139;;14893:248;;;:::o;15147:419::-;;15351:2;15340:9;15336:18;15328:26;;15400:9;15394:4;15390:20;15386:1;15375:9;15371:17;15364:47;15428:131;15554:4;15428:131;:::i;:::-;15420:139;;15318:248;;;:::o;15572:419::-;;15776:2;15765:9;15761:18;15753:26;;15825:9;15819:4;15815:20;15811:1;15800:9;15796:17;15789:47;15853:131;15979:4;15853:131;:::i;:::-;15845:139;;15743:248;;;:::o;15997:419::-;;16201:2;16190:9;16186:18;16178:26;;16250:9;16244:4;16240:20;16236:1;16225:9;16221:17;16214:47;16278:131;16404:4;16278:131;:::i;:::-;16270:139;;16168:248;;;:::o;16422:222::-;;16553:2;16542:9;16538:18;16530:26;;16566:71;16634:1;16623:9;16619:17;16610:6;16566:71;:::i;:::-;16520:124;;;;:::o;16650:831::-;;16951:3;16940:9;16936:19;16928:27;;16965:71;17033:1;17022:9;17018:17;17009:6;16965:71;:::i;:::-;17046:80;17122:2;17111:9;17107:18;17098:6;17046:80;:::i;:::-;17173:9;17167:4;17163:20;17158:2;17147:9;17143:18;17136:48;17201:108;17304:4;17295:6;17201:108;:::i;:::-;17193:116;;17319:72;17387:2;17376:9;17372:18;17363:6;17319:72;:::i;:::-;17401:73;17469:3;17458:9;17454:19;17445:6;17401:73;:::i;:::-;16918:563;;;;;;;;:::o;17487:332::-;;17646:2;17635:9;17631:18;17623:26;;17659:71;17727:1;17716:9;17712:17;17703:6;17659:71;:::i;:::-;17740:72;17808:2;17797:9;17793:18;17784:6;17740:72;:::i;:::-;17613:206;;;;;:::o;17825:214::-;;17952:2;17941:9;17937:18;17929:26;;17965:67;18029:1;18018:9;18014:17;18005:6;17965:67;:::i;:::-;17919:120;;;;:::o;18045:132::-;;18135:3;18127:11;;18165:4;18160:3;18156:14;18148:22;;18117:60;;;:::o;18183:114::-;;18284:5;18278:12;18268:22;;18257:40;;;:::o;18303:99::-;;18389:5;18383:12;18373:22;;18362:40;;;:::o;18408:113::-;;18510:4;18505:3;18501:14;18493:22;;18483:38;;;:::o;18527:184::-;;18660:6;18655:3;18648:19;18700:4;18695:3;18691:14;18676:29;;18638:73;;;;:::o;18717:169::-;;18835:6;18830:3;18823:19;18875:4;18870:3;18866:14;18851:29;;18813:73;;;;:::o;18892:305::-;;18951:20;18969:1;18951:20;:::i;:::-;18946:25;;18985:20;19003:1;18985:20;:::i;:::-;18980:25;;19139:1;19071:66;19067:74;19064:1;19061:81;19058:2;;;19145:18;;:::i;:::-;19058:2;19189:1;19186;19182:9;19175:16;;18936:261;;;;:::o;19203:185::-;;19260:20;19278:1;19260:20;:::i;:::-;19255:25;;19294:20;19312:1;19294:20;:::i;:::-;19289:25;;19333:1;19323:2;;19338:18;;:::i;:::-;19323:2;19380:1;19377;19373:9;19368:14;;19245:143;;;;:::o;19394:348::-;;19457:20;19475:1;19457:20;:::i;:::-;19452:25;;19491:20;19509:1;19491:20;:::i;:::-;19486:25;;19679:1;19611:66;19607:74;19604:1;19601:81;19596:1;19589:9;19582:17;19578:105;19575:2;;;19686:18;;:::i;:::-;19575:2;19734:1;19731;19727:9;19716:20;;19442:300;;;;:::o;19748:191::-;;19808:20;19826:1;19808:20;:::i;:::-;19803:25;;19842:20;19860:1;19842:20;:::i;:::-;19837:25;;19881:1;19878;19875:8;19872:2;;;19886:18;;:::i;:::-;19872:2;19931:1;19928;19924:9;19916:17;;19793:146;;;;:::o;19945:96::-;;20011:24;20029:5;20011:24;:::i;:::-;20000:35;;19990:51;;;:::o;20047:104::-;;20121:24;20139:5;20121:24;:::i;:::-;20110:35;;20100:51;;;:::o;20157:90::-;;20234:5;20227:13;20220:21;20209:32;;20199:48;;;:::o;20253:126::-;;20330:42;20323:5;20319:54;20308:65;;20298:81;;;:::o;20385:77::-;;20451:5;20440:16;;20430:32;;;:::o;20468:86::-;;20543:4;20536:5;20532:16;20521:27;;20511:43;;;:::o;20560:134::-;;20651:37;20682:5;20651:37;:::i;:::-;20638:50;;20628:66;;;:::o;20700:162::-;;20801:55;20850:5;20801:55;:::i;:::-;20788:68;;20778:84;;;:::o;20868:131::-;;20969:24;20987:5;20969:24;:::i;:::-;20956:37;;20946:53;;;:::o;21005:121::-;;21096:24;21114:5;21096:24;:::i;:::-;21083:37;;21073:53;;;:::o;21132:126::-;;21215:37;21246:5;21215:37;:::i;:::-;21202:50;;21192:66;;;:::o;21264:113::-;;21347:24;21365:5;21347:24;:::i;:::-;21334:37;;21324:53;;;:::o;21383:307::-;21451:1;21461:113;21475:6;21472:1;21469:13;21461:113;;;21560:1;21555:3;21551:11;21545:18;21541:1;21536:3;21532:11;21525:39;21497:2;21494:1;21490:10;21485:15;;21461:113;;;21592:6;21589:1;21586:13;21583:2;;;21672:1;21663:6;21658:3;21654:16;21647:27;21583:2;21432:258;;;;:::o;21696:180::-;21744:77;21741:1;21734:88;21841:4;21838:1;21831:15;21865:4;21862:1;21855:15;21882:180;21930:77;21927:1;21920:88;22027:4;22024:1;22017:15;22051:4;22048:1;22041:15;22068:102;;22160:2;22156:7;22151:2;22144:5;22140:14;22136:28;22126:38;;22116:54;;;:::o;22176:122::-;22249:24;22267:5;22249:24;:::i;:::-;22242:5;22239:35;22229:2;;22288:1;22285;22278:12;22229:2;22219:79;:::o;22304:138::-;22385:32;22411:5;22385:32;:::i;:::-;22378:5;22375:43;22365:2;;22432:1;22429;22422:12;22365:2;22355:87;:::o;22448:116::-;22518:21;22533:5;22518:21;:::i;:::-;22511:5;22508:32;22498:2;;22554:1;22551;22544:12;22498:2;22488:76;:::o;22570:122::-;22643:24;22661:5;22643:24;:::i;:::-;22636:5;22633:35;22623:2;;22682:1;22679;22672:12;22623:2;22613:79;:::o

Swarm Source

ipfs://36d4a2012882bd12af98dddf7b11a6b203ff145bbb5026ac6ee92bde34a54ee0
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.