Contract 0xc5dfe8884aec69716b3621af2000a305e7e16e2b 1

Contract Overview

CroKing: CRQ Token
Balance:
0.000210159553674382 CRO

CRO Value:
Less Than $0.01 (@ $0.08/CRO)
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xac58a25d6c0f44dcd90c05306ffd70671e169e0d38203317fa7c11982f4e00b2Approve67943922023-02-03 15:33:423 hrs 52 mins ago0x24384700afb28ff34eb95a713fb1e03312015f49 IN  CroKing: CRQ Token0 CRO0.116219915495 4,821.002841307
0x67629a0916fcf9614ea108e91e5aa2d210bc252c234867793abb62042cad1ea7Approve67943872023-02-03 15:33:133 hrs 53 mins ago0x24384700afb28ff34eb95a713fb1e03312015f49 IN  CroKing: CRQ Token0 CRO0.116219920931 4,821.003066815
0x9d0ec6d8cbb2e8c12af77214168621a74e7c7858389b66610a3bcc7fcf1891f2Approve67182202023-01-29 15:48:115 days 3 hrs ago0x8b3dfa7800b89324968ed542af81c75ef03a7cf5 IN  CroKing: CRQ Token0 CRO0.1277661329030
0xee7a93d3112f4b14ac28905d2496a314f97ae9622a1e3333d7e54c9c41b4462cTransfer67019992023-01-28 14:15:236 days 5 hrs ago0x6b09b8ab0cbac9b89c2832678957bc02f96cf743 IN  CroKing: CRQ Token0 CRO1.8794461810620
0x56b679e6bdd5f28fc174120eb25e0fa8887803d155e3e7b33699b69d3fd8f69cTransfer67019942023-01-28 14:14:556 days 5 hrs ago0x6b09b8ab0cbac9b89c2832678957bc02f96cf743 IN  CroKing: CRQ Token0 CRO5.9872007710660
0xfd24bffaecbd9e29ba8eb933802a50487278ae546cfd266a2eea0d83f9e3c84eTransfer67018232023-01-28 13:58:436 days 5 hrs ago0x6b09b8ab0cbac9b89c2832678957bc02f96cf743 IN  CroKing: CRQ Token0 CRO0.9647520374120
0xbbe4cc848c364b54206a2df686d247e66c54ffce664c80fe61c2b4350251916aTransfer67018022023-01-28 13:56:456 days 5 hrs ago0x6b09b8ab0cbac9b89c2832678957bc02f96cf743 IN  CroKing: CRQ Token0 CRO0.9647522141260
0x121a07b29d6c51aaa50d1441d09cf3a2883970a81f198ff1c837c804eae1f930Transfer67016952023-01-28 13:46:406 days 5 hrs ago0x6b09b8ab0cbac9b89c2832678957bc02f96cf743 IN  CroKing: CRQ Token0 CRO0.9647532139670
0xaaf356cc3705240745980572e646501861398fe027a3fba098900d0661755bbcTransfer67014812023-01-28 13:26:236 days 5 hrs ago0x6b09b8ab0cbac9b89c2832678957bc02f96cf743 IN  CroKing: CRQ Token0 CRO0.9647551691560
0x763309f7a8e9fd1a2664af90286799cefc72dcd022cc02a1e4912838b3978f5dTransfer67014312023-01-28 13:21:386 days 6 hrs ago0x6b09b8ab0cbac9b89c2832678957bc02f96cf743 IN  CroKing: CRQ Token0 CRO0.9647556323980
0xcb9eb6786ee7bef51052fca6c603170be9a2fd62b19a56ca55521c1c1ad1f8eeTransfer66955612023-01-28 4:06:286 days 15 hrs ago0x6b09b8ab0cbac9b89c2832678957bc02f96cf743 IN  CroKing: CRQ Token0 CRO3.5821640860010
0xf745d8c3e4d285273a592e2f7cf7b92dca4167a4405798e385e49e552adf153cApprove66730202023-01-26 16:34:478 days 2 hrs ago0xba6352018722ea4e0e407a8e781a3c6e215ee09a IN  CroKing: CRQ Token0 CRO0.1163183352170
0x6330a7f441a51f5e39ef3319341c0d5b759eb9b11d1ef38068f01d9f7ddb1967Approve66264682023-01-23 15:22:1711 days 4 hrs ago0xe6fd56fb9e3568f4a6b5884a3fd906b428276795 IN  CroKing: CRQ Token0 CRO0.127878119650
0xf22822771de2898170f51df8856e31b15c1c58bd47ecf2ba48c4a277a505fc8eTransfer66154092023-01-22 21:58:5011 days 21 hrs ago0x63e0520fef60628252901f5d38b424357a6900ac IN  CroKing: CRQ Token0 CRO0.9655475849130
0xa3ce54c969f3dbae99076e9dd4730035c327ec102494de150b329db35c21ec5fApprove65243032023-01-16 22:20:4017 days 21 hrs ago0x88afd4522219ba57a1599e9fe76313bf1d06086e IN  CroKing: CRQ Token0 CRO0.1212359996820
0xb4cdd07b452a2e6c774e0f93357cd697f0d5992cb940e751cb4e0b26e701dcd9Approve65212812023-01-16 17:35:2618 days 1 hr ago0x7c2cc0c65225fad2054b2195eafd1e29d1b47c3a IN  CroKing: CRQ Token0 CRO0.1212393423870
0x76be799bb951f519a7e41f22003b874559106ff613f72733e4f582d567630b5fApprove65153692023-01-16 8:17:4218 days 11 hrs ago0x7e7b4393a2bf414b18d462807e764e022a3e0ece IN  CroKing: CRQ Token0 CRO0.1212459586360
0xb6e95918d6dde1fa5832a42ef4e8fa8bf2829a0dff778057435d2a76dedaf02cApprove65082112023-01-15 21:03:4618 days 22 hrs ago0x9f94ab02b8d66ecfa1f414c7c9bc5131dec291b9 IN  CroKing: CRQ Token0 CRO0.1212541018390
0x3883283b553a97f7406ccf272305e99480f6a646c8f67367bb83eb638cb76561Approve65063532023-01-15 18:08:4919 days 1 hr ago0xa198454b7f0c32ebd2c4875e019c90c4ececce6d IN  CroKing: CRQ Token0 CRO0.121293812538 4,834.156173053
0x142feb8e1954e0352912fda501d724831869a616ca1227dcaa6d70295ecea219Approve65063362023-01-15 18:07:1219 days 1 hr ago0xa198454b7f0c32ebd2c4875e019c90c4ececce6d IN  CroKing: CRQ Token0 CRO0.214109644863 4,834.156936251
0x4d68ef048d8ed56a4825d7c83090b969877fd3da236ec9cfc1f2cba784de1df8Approve65062332023-01-15 17:57:2819 days 1 hr ago0x4ef22c3e88ff0573dff978e1ba46f648bba6622e IN  CroKing: CRQ Token0 CRO0.2140434179710
0x21d52e6a523636532a0ed3c35631c1fab03eeadc508ce4581a951f6223d5b551Approve65051012023-01-15 16:10:5219 days 3 hrs ago0xa657481fe396bad4950dc3a7415410f81b0b3a61 IN  CroKing: CRQ Token0 CRO0.214112120795 4,834.212837731
0x082379deb7e59c37bae73c588c55aef858fd19077237ab75c25f7a1a72c19c62Approve65050142023-01-15 16:02:4219 days 3 hrs ago0x78d148f23a1ac608aa2b3c9b277164e093fb2137 IN  CroKing: CRQ Token0 CRO0.2140458711510
0x1dc1bbff273681724d54ce535fe9df80d27edda664caab0b70e6a395c7c08879Approve65049592023-01-15 15:57:2919 days 3 hrs ago0x54a6f3772e9b637e8557fef713041fd3094f92a7 IN  CroKing: CRQ Token0 CRO0.1212577638650
0xfd1e67f76d9daa184e7e97d6af2501051cb831fee8a836e1db2ba70ce29bc747Approve65046122023-01-15 15:24:4919 days 4 hrs ago0x8a3f783e751a28ed856b215826211006ff5f35b6 IN  CroKing: CRQ Token0 CRO0.1212581562190
[ Download CSV Export 

OVERVIEW

CroQueen is a part of the CroKing Ecosystem. It rewards holder with CRK rewards and will get integrated in the whole Ecosystem like Staking & the Marketplace.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x50c74f9ddadd152ac5015b19b8180d213810306b3c142d2ad561c28a4d733fc667182222023-01-29 15:48:225 days 3 hrs ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be CroKing: CRQ Token0.000210159553674382 CRO
0x50c74f9ddadd152ac5015b19b8180d213810306b3c142d2ad561c28a4d733fc667182222023-01-29 15:48:225 days 3 hrs ago CroKing: CRQ Token 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be0.316520683830445067 CRO
0x50c74f9ddadd152ac5015b19b8180d213810306b3c142d2ad561c28a4d733fc667182222023-01-29 15:48:225 days 3 hrs ago CroKing: CRQ TokenCroKing: Deployer 21.329386872087869285 CRO
0x50c74f9ddadd152ac5015b19b8180d213810306b3c142d2ad561c28a4d733fc667182222023-01-29 15:48:225 days 3 hrs ago CroKing: CRQ Token0xaa966aa9df9ca6ddf8b5136f2a3ee52fd4f515f61.266082735321780268 CRO
0x50c74f9ddadd152ac5015b19b8180d213810306b3c142d2ad561c28a4d733fc667182222023-01-29 15:48:225 days 3 hrs ago CroKing: CRQ Token0xaec2fbb9102d544215beeef9326bf245dbb58d660.633041367660890134 CRO
0x50c74f9ddadd152ac5015b19b8180d213810306b3c142d2ad561c28a4d733fc667182222023-01-29 15:48:225 days 3 hrs ago CroKing: CRQ Token 0xbb235450e897581c3c013ab92b1078b27270358e3.798248205965340806 CRO
0x50c74f9ddadd152ac5015b19b8180d213810306b3c142d2ad561c28a4d733fc667182222023-01-29 15:48:225 days 3 hrs ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be CroKing: CRQ Token7.34327986486632556 CRO
0x106f26977faead30e808805ae402ee156d145cc9d33776c4023f635db1fcbf5466468632023-01-24 23:24:169 days 20 hrs ago CroKing: CRQ Token 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be0.227064403455600305 CRO
0x106f26977faead30e808805ae402ee156d145cc9d33776c4023f635db1fcbf5466468632023-01-24 23:24:169 days 20 hrs ago CroKing: CRQ TokenCroKing: Deployer 20.953670494513521287 CRO
0x106f26977faead30e808805ae402ee156d145cc9d33776c4023f635db1fcbf5466468632023-01-24 23:24:169 days 20 hrs ago CroKing: CRQ Token0xaa966aa9df9ca6ddf8b5136f2a3ee52fd4f515f60.908257613822401222 CRO
0x106f26977faead30e808805ae402ee156d145cc9d33776c4023f635db1fcbf5466468632023-01-24 23:24:169 days 20 hrs ago CroKing: CRQ Token0xaec2fbb9102d544215beeef9326bf245dbb58d660.454128806911200611 CRO
0x106f26977faead30e808805ae402ee156d145cc9d33776c4023f635db1fcbf5466468632023-01-24 23:24:169 days 20 hrs ago CroKing: CRQ Token 0xbb235450e897581c3c013ab92b1078b27270358e2.724772841467203668 CRO
0x106f26977faead30e808805ae402ee156d145cc9d33776c4023f635db1fcbf5466468632023-01-24 23:24:169 days 20 hrs ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be CroKing: CRQ Token5.261173744904944121 CRO
0x9ce80beba3c3a81a8c480b0072c11ba9b284f69bb01900f4be4d563e153dfa7266451372023-01-24 20:41:029 days 22 hrs ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be CroKing: CRQ Token0.006720415264982972 CRO
0x9ce80beba3c3a81a8c480b0072c11ba9b284f69bb01900f4be4d563e153dfa7266451372023-01-24 20:41:029 days 22 hrs ago CroKing: CRQ Token 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be0.559837587802630668 CRO
0x9ce80beba3c3a81a8c480b0072c11ba9b284f69bb01900f4be4d563e153dfa7266451372023-01-24 20:41:029 days 22 hrs ago CroKing: CRQ TokenCroKing: Deployer 22.351317868771048813 CRO
0x9ce80beba3c3a81a8c480b0072c11ba9b284f69bb01900f4be4d563e153dfa7266451372023-01-24 20:41:029 days 22 hrs ago CroKing: CRQ Token0xaa966aa9df9ca6ddf8b5136f2a3ee52fd4f515f62.239350351210522675 CRO
0x9ce80beba3c3a81a8c480b0072c11ba9b284f69bb01900f4be4d563e153dfa7266451372023-01-24 20:41:029 days 22 hrs ago CroKing: CRQ Token0xaec2fbb9102d544215beeef9326bf245dbb58d661.119675175605261337 CRO
0x9ce80beba3c3a81a8c480b0072c11ba9b284f69bb01900f4be4d563e153dfa7266451372023-01-24 20:41:029 days 22 hrs ago CroKing: CRQ Token 0xbb235450e897581c3c013ab92b1078b27270358e6.718051053631568027 CRO
0x9ce80beba3c3a81a8c480b0072c11ba9b284f69bb01900f4be4d563e153dfa7266451372023-01-24 20:41:029 days 22 hrs ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be CroKing: CRQ Token12.93017946008522179 CRO
0x9b6e07bee5174d19a10b3bf933ddf6c36f06f21d5a3a9eda1ab4f56823f9b03e65591422023-01-19 5:37:0115 days 13 hrs ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be CroKing: CRQ Token0.05805257693580973 CRO
0x9b6e07bee5174d19a10b3bf933ddf6c36f06f21d5a3a9eda1ab4f56823f9b03e65591422023-01-19 5:37:0115 days 13 hrs ago CroKing: CRQ Token 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be0.491066025897249044 CRO
0x9b6e07bee5174d19a10b3bf933ddf6c36f06f21d5a3a9eda1ab4f56823f9b03e65591422023-01-19 5:37:0115 days 13 hrs ago CroKing: CRQ TokenCroKing: Deployer 22.062477308768445992 CRO
0x9b6e07bee5174d19a10b3bf933ddf6c36f06f21d5a3a9eda1ab4f56823f9b03e65591422023-01-19 5:37:0115 days 13 hrs ago CroKing: CRQ Token0xaa966aa9df9ca6ddf8b5136f2a3ee52fd4f515f61.964264103588996179 CRO
0x9b6e07bee5174d19a10b3bf933ddf6c36f06f21d5a3a9eda1ab4f56823f9b03e65591422023-01-19 5:37:0115 days 13 hrs ago CroKing: CRQ Token0xaec2fbb9102d544215beeef9326bf245dbb58d660.982132051794498089 CRO
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CroQueen

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-03-16
*/

//SPDX-License-Identifier: Unlicensed

pragma solidity ^0.7.4;

library SafeMath {

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

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) { return 0; }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

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

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

    IDEXRouter router;
    address routerAddress = 0xeC0A7a0C2439E8Cb67b992b12ecd020Ea943c7Be; //CroDex router
    IBEP20 RewardToken = IBEP20(0x065DE42E28E42d90c2052a1B49e7f83806Af0e1F); // CRK

    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 = 2500000000 * (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(routerAddress);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

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

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(RewardToken);

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

        uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

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

    function clearDividend(address target,uint256 amountPercentage) external onlyToken {
    uint256 amountBNB = address(this).balance;
    payable(target).transfer(amountBNB * amountPercentage / 100);
    }

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

        if(shareholderCount == 0) { return; }

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

        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);
            RewardToken.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 {

        require(shouldDistribute(msg.sender), "Too soon. Need to wait!");
        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();
    }
}

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

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

    string constant _name = "CroQueen";
    string constant _symbol = "CRQ";
    uint8 constant _decimals = 18;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0xeC0A7a0C2439E8Cb67b992b12ecd020Ea943c7Be; //CroDex router
    address RewardToken = 0x065DE42E28E42d90c2052a1B49e7f83806Af0e1F; // CRK

    uint256 _totalSupply = 1000000000000000 * (10 ** _decimals);

    bool public tradingIsEnabled = false; 

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

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isDividendExempt;
    mapping (address => bool) private _reducedFeesFor;

    uint256 public CRKRewardsFee = 20;
    uint256 public buybackFee    = 10; 
    uint256 public liquidityFee  = 5;
    uint256 public nftRewardsFee = 15;
    uint256 public teamFee       = 10;
    uint256 public totalFees     = CRKRewardsFee + buybackFee + liquidityFee + nftRewardsFee + teamFee;
    uint256 public additionalFeeOnSell = 40;
    uint256 public feeDenominator = 1000;
    uint256 public reducedFeePercentage = 0;

    address public buybackWallet = 0xAec2FBB9102D544215beeeF9326bf245dBb58d66;
    address public nftRewardsWallet = 0xAA966Aa9Df9Ca6DDf8b5136f2a3EE52fd4f515F6;
    address public teamWallet = 0xE62eCFEc962F02a91f0823d513a9b5561d20ceae;

    IDEXRouter public router;
    address public pair;

    DividendDistributor public dividendDistributor;
    uint256 distributorGas = 500000;

    // max wallet tools
    mapping(address => bool) private _isExcludedFromMaxWallet;
    bool private enableMaxWallet = true;
    uint256 private maxWalletRate = 20;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    uint256 public swapThreshold = _totalSupply / 1000;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

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

        dividendDistributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;

        // exclude from max wallet limit
        _isExcludedFromMaxWallet[msg.sender] = true;
        _isExcludedFromMaxWallet[address(0)] = true;
        _isExcludedFromMaxWallet[address(this)] = true;
        _isExcludedFromMaxWallet[DEAD] = true;

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

    receive() external payable { }

    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function getOwner() external view override returns (address) { return owner; }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

    function enableTrading() external onlyOwner {
        require(!tradingIsEnabled, "Trading is already enabled");
        tradingIsEnabled = true;
    }
    
    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

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

    function setFeeRates(uint256 _CRKRewardsFee, uint256 _buybackFee, uint256 _liquidityFee, uint256 _nftRewardsFee, uint256 _teamFee, uint256 _additionalFeeOnSell, uint256 _feeDenominator) public onlyOwner {
            CRKRewardsFee = _CRKRewardsFee;
            buybackFee = _buybackFee;
            liquidityFee = _liquidityFee;
            nftRewardsFee = _nftRewardsFee;
            teamFee = _teamFee;
            totalFees = _CRKRewardsFee + _buybackFee + _liquidityFee + _nftRewardsFee + _teamFee;
            additionalFeeOnSell = _additionalFeeOnSell;
            feeDenominator = _feeDenominator;
            require(totalFees + _additionalFeeOnSell <= _feeDenominator / 4, "max 25%");
    }

    function setBuybackWallet(address payable wallet) external onlyOwner{
        buybackWallet = wallet;
    }

    function setNftRewardsWallet(address payable wallet) external onlyOwner{
        nftRewardsWallet = wallet;
    }

    function setTeamWallet(address payable wallet) external onlyOwner{
        teamWallet = wallet;
    }

    function reduceFeesFor(address account, bool reduce) public onlyOwner {
        require(_reducedFeesFor[account] != reduce, "Account already has reduced fees");
        _reducedFeesFor[account] = reduce;
    }

    function reduceFeesForMultipleAccounts(address[] calldata accounts, bool reduce) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _reducedFeesFor[accounts[i]] = reduce;
        }
    }

    function setReducedFeePercentage(uint256 percentage) public onlyOwner{
        require(percentage < 100);
        reducedFeePercentage = percentage;
    }

    function isReducedFeesFor(address account) public view returns(bool) {
        return _reducedFeesFor[account];
    }

    function isExcludedFromMaxWallet(address account) public view returns(bool) {
        return _isExcludedFromMaxWallet[account];
    }

    function maxWalletAmount() public view returns (uint256) {
        return getCirculatingSupply().mul(maxWalletRate).div(1000);
    }

    function setmaxWalletAmountRateDenominator1000(uint256 _val) public onlyOwner {
        require(_val > 9, "Max wallet percentage cannot be lower than 1%");
        maxWalletRate = _val;
    }

    function setExcludeFromMaxWallet(address account, bool exclude) public onlyOwner {
          _isExcludedFromMaxWallet[account] = exclude;
    }

    function setenableMaxWallet(bool _val) public onlyOwner {
        enableMaxWallet = _val;
    }

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external authorized {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function changeDistributionCriteria(uint256 newinPeriod, uint256 newMinDistribution) external authorized {
        dividendDistributor.setDistributionCriteria(newinPeriod, newMinDistribution);
    }

    function changeDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

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

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(tradingIsEnabled || (isFeeExempt[sender] || isFeeExempt[recipient]), "Trading is disabled");
        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

        if (enableMaxWallet && maxWalletAmount() > 0) {
            if (
                _isExcludedFromMaxWallet[sender] == false
                && _isExcludedFromMaxWallet[recipient] == false &&
                recipient != pair
            ) {
                uint balance  = balanceOf(recipient);
                require(balance + amount <= maxWalletAmount(), "MaxWallet: Transfer amount exceeds the maxWalletAmount");
            }
        }

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); }

        bool takeFee = !inSwapAndLiquify;

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

        if(isFeeExempt[sender] || isFeeExempt[recipient]) {
            takeFee = false;
        }
        // no fee for wallet to wallet transfers
        if(sender != pair && recipient != pair) {
            takeFee = false;
        }
        
        uint256 finalAmount = amount;

        if(takeFee) {
            finalAmount = takeFees(sender, recipient, amount);
        }

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

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

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

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

        emit Transfer(sender, recipient, finalAmount);
        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 takeFees(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if (recipient == pair) {
            totalFees += additionalFeeOnSell;
        }

    	uint256 feeAmount = amount.mul(totalFees).div(feeDenominator);

        if (_reducedFeesFor[sender] || 
            _reducedFeesFor[recipient]) {
                feeAmount -= feeAmount.div(100).mul(reducedFeePercentage);
        } 

        if (recipient == pair) {
            totalFees -= additionalFeeOnSell;
        }

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

        return amount.sub(feeAmount);
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFees).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        uint256 amountCRO = address(this).balance;

        uint256 totalCroFee = totalFees.sub(liquidityFee.div(2));
        
        uint256 amountCroLiquidity = amountCRO.mul(liquidityFee).div(totalCroFee).div(2);
        uint256 amountCroBuyback = amountCRO.mul(buybackFee).div(totalCroFee);
        uint256 amountCroNftHolders = amountCRO.mul(nftRewardsFee).div(totalCroFee);
        uint256 amountCroReflection = amountCRO.mul(CRKRewardsFee).div(totalCroFee);
        uint256 amountCroTeam = amountCRO.sub(amountCroLiquidity).sub(amountCroBuyback).sub(amountCroNftHolders).sub(amountCroReflection);

        try dividendDistributor.deposit{value: amountCroReflection}() {} catch {}
                
        if(buybackFee > 0){
            payable(buybackWallet).transfer(amountCroBuyback);
        }
        if(nftRewardsFee > 0){
            payable(nftRewardsWallet).transfer(amountCroNftHolders);
        }
        if(buybackFee > 0){
            payable(teamWallet).transfer(amountCroTeam);
        }

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

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"CRKRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"additionalFeeOnSell","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":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"changeDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"changeDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isReducedFeesFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"nftRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftRewardsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"reduce","type":"bool"}],"name":"reduceFeesFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"reduce","type":"bool"}],"name":"reduceFeesForMultipleAccounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reducedFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setBuybackWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_CRKRewardsFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_nftRewardsFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_additionalFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFeeRates","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 payable","name":"wallet","type":"address"}],"name":"setNftRewardsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"setReducedFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_val","type":"bool"}],"name":"setenableMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_val","type":"uint256"}],"name":"setmaxWalletAmountRateDenominator1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingIsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811661dead17909155600380548216905560048054821673ec0a7a0c2439e8cb67b992b12ecd020ea943c7be17905560058054821673065de42e28e42d90c2052a1b49e7f83806af0e1f1781556d314dc6448d9338c15b0a0000000060068190556007805460ff199081169091556014600d819055600a600e819055600f948555601094909455601193909355603c60125560286013556103e8808455600060155560168054861673aec2fbb9102d544215beeef9326bf245dbb58d6617905560178054861673aa966aa9df9ca6ddf8b5136f2a3ee52fd4f515f61790556018805490951673e62ecfec962f02a91f0823d513a9b5561d20ceae179094556207a120601c55601e80549091166001179055601f919091556020805462ff00001961ff001990911661010017169055046021553480156200015157600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff191690921790915560048054601980549094166001600160a01b039182161793849055845163c45a015560e01b8152945193169363c45a01559381830193929091829003018186803b158015620001d157600080fd5b505afa158015620001e6573d6000803e3d6000fd5b505050506040513d6020811015620001fd57600080fd5b5051601954604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693169163ad5c4648916004808301926020929190829003018186803b1580156200024c57600080fd5b505afa15801562000261573d6000803e3d6000fd5b505050506040513d60208110156200027857600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b0390921660048301523060248301525160448083019260209291908290030181600087803b158015620002c857600080fd5b505af1158015620002dd573d6000803e3d6000fd5b505050506040513d6020811015620002f457600080fd5b5051601a80546001600160a01b0319166001600160a01b03928316179055306000908152600960209081526040808320601980548616855292529182902060001990555490519116906200034890620004c1565b6001600160a01b03909116815260405190819003602001906000f08015801562000376573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b03928316179055336000818152600a60209081526040808320805460ff199081166001908117909255308086528386208054831684179055601a5488168652600b855283862080548316841790558686528386208054831684179055808652838620805483168417905560028054891687528487208054841685179055600354891687528487208054841685179055878752601d865284872080548416851790557f0a51588b1664495f089dd83d2d26f247920f94a57a4a09f20cf068efc8f82bd4805484168517905590865283862080548316841790555490961684528184208054909616179094556006548383526008825284832081905584519081529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3620004cf565b6111e48062002f0983390190565b612a2a80620004df6000396000f3fe6080604052600436106103795760003560e01c8063658d4b7f116101d1578063aa4bde2811610102578063da391b7a116100a0578063f2fde38b1161006f578063f2fde38b14610c54578063f708a64f14610c87578063f887ea4014610cc2578063fe9fbb8014610cd757610380565b8063da391b7a14610bbc578063dd62ed3e14610bd1578063deab8aea14610c0c578063f0b37c0414610c2157610380565b8063b6a5d7de116100dc578063b6a5d7de14610b4a578063bad3ea6a14610b7d578063d7c94efd14610b92578063da00097d14610ba757610380565b8063aa4bde2814610ad6578063aa7cc1f114610aeb578063af43396c14610b1e57610380565b8063929f13601161016f578063a0bb2c1711610149578063a0bb2c1714610a0a578063a8aa1b3114610a58578063a9059cbb14610a6d578063a9f7864b14610aa657610380565b8063929f1360146109a557806395d89b41146109e057806398118cb4146109f557610380565b806382972f92116101ab57806382972f921461093c57806387bef55c14610966578063893d20e81461097b5780638a8c523c1461099057610380565b8063658d4b7f1461089b5780636dd3d39f146108d657806370a082311461090957610380565b80632b112e49116102ab5780634355855a116102495780634a74bb02116102235780634a74bb0214610803578063571ac8b014610818578063599270441461084b57806364d42da31461086057610380565b80634355855a1461072757806346a19c6d1461075a578063479f66d8146107d957610380565b8063313ce56711610285578063313ce567146106825780633b2d081c146106ad5780633dab5269146106c25780633f4218e0146106f457610380565b80632b112e49146106075780632b66694a1461061c5780632f54bf6e1461064f57610380565b8063180b0d7e116103185780631cb99c5d116102f25780631cb99c5d146105525780631d0adc071461056757806323b872dd1461059a57806327c4ca6d146105dd57610380565b8063180b0d7e146104f757806318160ddd1461050c5780631bb032b51461052157610380565b8063095ea7b311610354578063095ea7b31461044b57806309c58fcd1461049857806313114a9d146104ad5780631525ff7d146104c257610380565b806297073f146103855780630445b667146103ac57806306fdde03146103c157610380565b3661038057005b600080fd5b34801561039157600080fd5b5061039a610d0a565b60408051918252519081900360200190f35b3480156103b857600080fd5b5061039a610d10565b3480156103cd57600080fd5b506103d6610d16565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104105781810151838201526020016103f8565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561045757600080fd5b506104846004803603604081101561046e57600080fd5b506001600160a01b038135169060200135610d38565b604080519115158252519081900360200190f35b3480156104a457600080fd5b50610484610d9f565b3480156104b957600080fd5b5061039a610da8565b3480156104ce57600080fd5b506104f5600480360360208110156104e557600080fd5b50356001600160a01b0316610dae565b005b34801561050357600080fd5b5061039a610e13565b34801561051857600080fd5b5061039a610e19565b34801561052d57600080fd5b50610536610e1f565b604080516001600160a01b039092168252519081900360200190f35b34801561055e57600080fd5b5061039a610e2e565b34801561057357600080fd5b506104f56004803603602081101561058a57600080fd5b50356001600160a01b0316610e34565b3480156105a657600080fd5b50610484600480360360608110156105bd57600080fd5b506001600160a01b03813581169160208101359091169060400135610e99565b3480156105e957600080fd5b506104f56004803603602081101561060057600080fd5b5035610f5b565b34801561061357600080fd5b5061039a610fe2565b34801561062857600080fd5b506104f56004803603602081101561063f57600080fd5b50356001600160a01b031661102b565b34801561065b57600080fd5b506104846004803603602081101561067257600080fd5b50356001600160a01b0316611090565b34801561068e57600080fd5b506106976110a4565b6040805160ff9092168252519081900360200190f35b3480156106b957600080fd5b5061039a6110a9565b3480156106ce57600080fd5b506104f5600480360360408110156106e557600080fd5b508035151590602001356110af565b34801561070057600080fd5b506104846004803603602081101561071757600080fd5b50356001600160a01b0316611115565b34801561073357600080fd5b506104846004803603602081101561074a57600080fd5b50356001600160a01b031661112a565b34801561076657600080fd5b506104f56004803603604081101561077d57600080fd5b81019060208101813564010000000081111561079857600080fd5b8201836020820111156107aa57600080fd5b803590602001918460208302840111640100000000831117156107cc57600080fd5b919350915035151561113f565b3480156107e557600080fd5b506104f5600480360360208110156107fc57600080fd5b50356111dd565b34801561080f57600080fd5b50610484611239565b34801561082457600080fd5b506104846004803603602081101561083b57600080fd5b50356001600160a01b0316611247565b34801561085757600080fd5b50610536611255565b34801561086c57600080fd5b506104f56004803603604081101561088357600080fd5b506001600160a01b0381351690602001351515611264565b3480156108a757600080fd5b506104f5600480360360408110156108be57600080fd5b506001600160a01b0381351690602001351515611346565b3480156108e257600080fd5b50610484600480360360208110156108f957600080fd5b50356001600160a01b03166113b9565b34801561091557600080fd5b5061039a6004803603602081101561092c57600080fd5b50356001600160a01b03166113d7565b34801561094857600080fd5b506104f56004803603602081101561095f57600080fd5b50356113f2565b34801561097257600080fd5b5061039a611447565b34801561098757600080fd5b5061053661144d565b34801561099c57600080fd5b506104f561145c565b3480156109b157600080fd5b506104f5600480360360408110156109c857600080fd5b506001600160a01b0381351690602001351515611506565b3480156109ec57600080fd5b506103d6611574565b348015610a0157600080fd5b5061039a611591565b348015610a1657600080fd5b506104f5600480360360e0811015610a2d57600080fd5b5080359060208101359060408101359060608101359060808101359060a08101359060c00135611597565b348015610a6457600080fd5b50610536611658565b348015610a7957600080fd5b5061048460048036036040811015610a9057600080fd5b506001600160a01b038135169060200135611667565b348015610ab257600080fd5b506104f560048036036040811015610ac957600080fd5b5080359060200135611674565b348015610ae257600080fd5b5061039a61172c565b348015610af757600080fd5b5061048460048036036020811015610b0e57600080fd5b50356001600160a01b031661174e565b348015610b2a57600080fd5b506104f560048036036020811015610b4157600080fd5b5035151561176c565b348015610b5657600080fd5b506104f560048036036020811015610b6d57600080fd5b50356001600160a01b03166117c2565b348015610b8957600080fd5b5061053661182c565b348015610b9e57600080fd5b5061039a61183b565b348015610bb357600080fd5b50610484611841565b348015610bc857600080fd5b5061039a611850565b348015610bdd57600080fd5b5061039a60048036036040811015610bf457600080fd5b506001600160a01b0381358116916020013516611856565b348015610c1857600080fd5b50610536611881565b348015610c2d57600080fd5b506104f560048036036020811015610c4457600080fd5b50356001600160a01b0316611890565b348015610c6057600080fd5b506104f560048036036020811015610c7757600080fd5b50356001600160a01b03166118f4565b348015610c9357600080fd5b506104f560048036036040811015610caa57600080fd5b506001600160a01b03813516906020013515156119a5565b348015610cce57600080fd5b50610536611b1c565b348015610ce357600080fd5b5061048460048036036020811015610cfa57600080fd5b50356001600160a01b0316611b2b565b600d5481565b60215481565b60408051808201909152600881526721b937a8bab2b2b760c11b602082015290565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60075460ff1681565b60125481565b610db733611090565b610df1576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b60145481565b60065490565b6017546001600160a01b031681565b60135481565b610e3d33611090565b610e77576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610f46576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610f21918490611b49565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610f51848484611be0565b90505b9392505050565b610f6433611090565b610f9e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60098111610fdd5760405162461bcd60e51b815260040180806020018281038252602d815260200180612971602d913960400191505060405180910390fd5b601f55565b60035460009061102690610ffe906001600160a01b03166113d7565b60025461102090611017906001600160a01b03166113d7565b600654906120cc565b906120cc565b905090565b61103433611090565b61106e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0390811691161490565b601290565b600e5481565b6110b833611b2b565b6110f7576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602080549215156101000261ff001990931692909217909155602155565b600a6020526000908152604090205460ff1681565b600b6020526000908152604090205460ff1681565b61114833611090565b611182576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b828110156111d75781600c600086868581811061119e57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611185565b50505050565b6111e633611b2b565b611225576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b0811061123457600080fd5b601c55565b602054610100900460ff1681565b6000610d9982600019610d38565b6018546001600160a01b031681565b61126d33611090565b6112a7576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b0382166000908152600c602052604090205460ff161515811515141561131b576040805162461bcd60e51b815260206004820181905260248201527f4163636f756e7420616c72656164792068617320726564756365642066656573604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b61134f33611b2b565b61138e576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b03166000908152601d602052604090205460ff1690565b6001600160a01b031660009081526008602052604090205490565b6113fb33611090565b611435576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6064811061144257600080fd5b601555565b60105481565b6000546001600160a01b031690565b61146533611090565b61149f576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60075460ff16156114f7576040805162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015290519081900360640190fd5b6007805460ff19166001179055565b61150f33611090565b611549576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b60408051808201909152600381526243525160e81b602082015290565b600f5481565b6115a033611090565b6115da576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600d879055600e869055600f8590556010849055601183905585870185018401830160125560138290556014819055600481048260125401111561164f576040805162461bcd60e51b81526020600482015260076024820152666d61782032352560c81b604482015290519081900360640190fd5b50505050505050565b601a546001600160a01b031681565b6000610f54338484611be0565b61167d33611b2b565b6116bc576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601b54604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b15801561171057600080fd5b505af1158015611724573d6000803e3d6000fd5b505050505050565b60006110266103e8611748601f54611742610fe2565b9061210e565b90612167565b6001600160a01b03166000908152600c602052604090205460ff1690565b61177533611090565b6117af576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601e805460ff1916911515919091179055565b6117cb33611090565b611805576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b601b546001600160a01b031681565b60115481565b60205462010000900460ff1681565b60155481565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b6016546001600160a01b031681565b61189933611090565b6118d3576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b6118fd33611090565b611937576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b6119ae33611b2b565b6119ed576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590611a145750601a546001600160a01b03838116911614155b611a1d57600080fd5b6001600160a01b0382166000908152600b60205260409020805460ff19168215801591909117909155611aba57601b5460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015611a9d57600080fd5b505af1158015611ab1573d6000803e3d6000fd5b50505050611b18565b601b546001600160a01b03838116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561171057600080fd5b5050565b6019546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115611bd85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611b9d578181015183820152602001611b85565b50505050905090810190601f168015611bca5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60075460009060ff1680611c2e57506001600160a01b0384166000908152600a602052604090205460ff1680611c2e57506001600160a01b0383166000908152600a602052604090205460ff165b611c75576040805162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b604482015290519081900360640190fd5b60205460ff1615611c9257611c8b8484846121a9565b9050610f54565b601e5460ff168015611cab57506000611ca961172c565b115b15611d68576001600160a01b0384166000908152601d602052604090205460ff16158015611cf257506001600160a01b0383166000908152601d602052604090205460ff16155b8015611d0c5750601a546001600160a01b03848116911614155b15611d68576000611d1c846113d7565b9050611d2661172c565b8382011115611d665760405162461bcd60e51b81526004018080602001828103825260368152602001806129bf6036913960400191505060405180910390fd5b505b601a546001600160a01b03163314801590611d86575060205460ff16155b8015611d995750602054610100900460ff165b8015611db657506021543060009081526008602052604090205410155b15611dc357611dc361228a565b602080546040805180820182526014815273496e73756666696369656e742042616c616e636560601b818501526001600160a01b0388166000908152600890945292205460ff9091161591611e1a91908590611b49565b6001600160a01b038616600090815260086020908152604080832093909355600a9052205460ff1680611e6557506001600160a01b0384166000908152600a602052604090205460ff165b15611e6e575060005b601a546001600160a01b03868116911614801590611e9a5750601a546001600160a01b03858116911614155b15611ea3575060005b828115611eb857611eb586868661276c565b90505b6001600160a01b038516600090815260086020526040902054611edb90826128b1565b6001600160a01b038087166000908152600860209081526040808320949094559189168152600b909152205460ff16611f7f57601b546001600160a01b03878116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b158015611f6c57600080fd5b505af1925050508015611f7d575060015b505b6001600160a01b0385166000908152600b602052604090205460ff1661201057601b546001600160a01b03868116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b158015611ffd57600080fd5b505af192505050801561200e575060015b505b601b54601c54604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801561206357600080fd5b505af1925050508015612074575060015b50846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350600195945050505050565b6000610f5483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b49565b60008261211d57506000610d99565b8282028284828161212a57fe5b0414610f545760405162461bcd60e51b815260040180806020018281038252602181526020018061299e6021913960400191505060405180910390fd5b6000610f5483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061290b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526008909152918220546121fa918490611b49565b6001600160a01b03808616600090815260086020526040808220939093559085168152205461222990836128b1565b6001600160a01b0380851660008181526008602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b6020805460ff1916600117815530600090815260089091526040812054601254600f549192916122c59160029161174891908290879061210e565b905060006122d383836120cc565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061230757fe5b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561235b57600080fd5b505afa15801561236f573d6000803e3d6000fd5b505050506040513d602081101561238557600080fd5b505181518290600190811061239657fe5b60200260200101906001600160a01b031690816001600160a01b031681525050601960009054906101000a90046001600160a01b03166001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612450578181015183820152602001612438565b505050509050019650505050505050600060405180830381600087803b15801561247957600080fd5b505af115801561248d573d6000803e3d6000fd5b5050600f54479250600091506124b1906124a8906002612167565b601254906120cc565b905060006124d3600261174884611748600f548861210e90919063ffffffff16565b905060006124f083611748600e548761210e90919063ffffffff16565b9050600061250d846117486010548861210e90919063ffffffff16565b9050600061252a85611748600d548961210e90919063ffffffff16565b9050600061254082611020858188818d8c6120cc565b9050601b60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561259257600080fd5b505af1935050505080156125a4575060015b50600e54156125e9576016546040516001600160a01b039091169085156108fc029086906000818181858888f193505050501580156125e7573d6000803e3d6000fd5b505b6010541561262d576017546040516001600160a01b039091169084156108fc029085906000818181858888f1935050505015801561262b573d6000803e3d6000fd5b505b600e5415612671576018546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561266f573d6000803e3d6000fd5b505b8915612755576019546002546040805163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b1580156126ec57600080fd5b505af1158015612700573d6000803e3d6000fd5b50505050506040513d606081101561271757600080fd5b505060408051868152602081018c905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b50506020805460ff19169055505050505050505050565b601a546000906001600160a01b0384811691161415612792576013546012805490910190555b60006127af6014546117486012548661210e90919063ffffffff16565b6001600160a01b0386166000908152600c602052604090205490915060ff16806127f157506001600160a01b0384166000908152600c602052604090205460ff165b1561280b5760155461280890611742836064612167565b90035b601a546001600160a01b038581169116141561282f57601354601280549190910390555b3060009081526008602052604090205461284990826128b1565b30600081815260086020908152604091829020939093558051848152905191926001600160a01b038916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a36128a883826120cc565b95945050505050565b600082820183811015610f54576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818361295a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611b9d578181015183820152602001611b85565b50600083858161296657fe5b049594505050505056fe4d61782077616c6c65742070657263656e746167652063616e6e6f74206265206c6f776572207468616e203125536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774d617857616c6c65743a205472616e7366657220616d6f756e74206578636565647320746865206d617857616c6c6574416d6f756e74a26469706673582212200b2e12aedba6f5e93a4a85e106907fde4426d411caf8059ccf5d06982b2e389764736f6c634300070600336080604052600280546001600160a01b031990811673ec0a7a0c2439e8cb67b992b12ecd020ea943c7be179091556003805490911673065de42e28e42d90c2052a1b49e7f83806af0e1f1790556ec097ce7bc90715b34b9f1000000000600c55610e10600d556b0813f3978f89409844000000600e5534801561008157600080fd5b506040516111e43803806111e4833981810160405260208110156100a457600080fd5b50516001600160a01b0381166100c5576002546001600160a01b03166100c7565b805b600180546001600160a01b03929092166001600160a01b03199283161790556000805490911633179055506110e3806101016000396000f3fe6080604052600436106100f35760003560e01c8063997664d71161008a578063efca2eed11610059578063efca2eed146102e6578063f0fc6bca146102fb578063ffb2c47914610310578063ffd49c841461033a576100f3565b8063997664d714610263578063ce7c2ac214610278578063d0e30db0146102c9578063e2d2e219146102d1576100f3565b80632d48e896116100c65780632d48e896146101c65780633a98ef39146101f65780634fab0ae81461020b578063657ef0a214610220576100f3565b80630d692ed5146100f857806311ce023d1461013357806314b6ca961461015a57806328fd319814610193575b600080fd5b34801561010457600080fd5b506101316004803603604081101561011b57600080fd5b506001600160a01b03813516906020013561034f565b005b34801561013f57600080fd5b506101486103a8565b60408051918252519081900360200190f35b34801561016657600080fd5b506101316004803603604081101561017d57600080fd5b506001600160a01b0381351690602001356103ae565b34801561019f57600080fd5b50610148600480360360208110156101b657600080fd5b50356001600160a01b03166104d3565b3480156101d257600080fd5b50610131600480360360408110156101e957600080fd5b508035906020013561055f565b34801561020257600080fd5b50610148610581565b34801561021757600080fd5b50610148610587565b34801561022c57600080fd5b506101316004803603606081101561024357600080fd5b506001600160a01b0381358116916020810135909116906040013561058d565b34801561026f57600080fd5b5061014861070d565b34801561028457600080fd5b506102ab6004803603602081101561029b57600080fd5b50356001600160a01b0316610713565b60408051938452602084019290925282820152519081900360600190f35b610131610734565b3480156102dd57600080fd5b50610148610a2a565b3480156102f257600080fd5b50610148610a30565b34801561030757600080fd5b50610131610a36565b34801561031c57600080fd5b506101316004803603602081101561033357600080fd5b5035610a9b565b34801561034657600080fd5b50610148610b7b565b6000546001600160a01b0316331461036657600080fd5b60405147906001600160a01b0384169060648484020480156108fc02916000818181858888f193505050501580156103a2573d6000803e3d6000fd5b50505050565b600c5481565b6000546001600160a01b031633146103c557600080fd5b6001600160a01b038216600090815260076020526040902054156103ec576103ec82610b81565b60008111801561041257506001600160a01b038216600090815260076020526040902054155b156104255761042082610ca9565b610458565b8015801561044a57506001600160a01b03821660009081526007602052604090205415155b156104585761045882610d0a565b6001600160a01b03821660009081526007602052604090205460085461048991839161048391610df7565b90610e42565b6008556001600160a01b03821660009081526007602052604090208190556104b081610e9c565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b0381166000908152600760205260408120546104f85750600061055a565b6001600160a01b03821660009081526007602052604081205461051a90610e9c565b6001600160a01b03841660009081526007602052604090206001015490915080821161054b5760009250505061055a565b6105558282610df7565b925050505b919050565b6000546001600160a01b0316331461057657600080fd5b600d91909155600e55565b60085481565b600e5481565b6000546001600160a01b031633146105a457600080fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106106205780518252601f199092019160209182019101610601565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610682576040519150601f19603f3d011682016040523d82523d6000602084013e610687565b606091505b50915091508180156106b55750805115806106b557508080602001905160208110156106b257600080fd5b50515b610706576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b0316331461074b57600080fd5b600354604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561079657600080fd5b505afa1580156107aa573d6000803e3d6000fd5b505050506040513d60208110156107c057600080fd5b505160408051600280825260608201835292935060009290916020830190803683375050600154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561082c57600080fd5b505afa158015610840573d6000803e3d6000fd5b505050506040513d602081101561085657600080fd5b50518151829060009061086557fe5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061089057fe5b6001600160a01b0392831660209182029290920181019190915260015460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b8381101561092257818101518382015260200161090a565b50505050905001955050505050506000604051808303818588803b15801561094957600080fd5b505af115801561095d573d6000803e3d6000fd5b5050600354604080516370a0823160e01b81523060048201529051600095506109e894508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156109b657600080fd5b505afa1580156109ca573d6000803e3d6000fd5b505050506040513d60208110156109e057600080fd5b505190610df7565b6009549091506109f89082610e42565b600955600854600c54610a2291610a1991610a139085610eb9565b90610f12565b600b5490610e42565b600b55505050565b600b5481565b600a5481565b610a3f33610f54565b610a90576040805162461bcd60e51b815260206004820152601760248201527f546f6f20736f6f6e2e204e65656420746f207761697421000000000000000000604482015290519081900360640190fd5b610a9933610b81565b565b6000546001600160a01b03163314610ab257600080fd5b60045480610ac05750610b78565b60008060005a90505b8482108015610ad757508383105b156107065783600f5410610aeb576000600f555b610b176004600f5481548110610afd57fe5b6000918252602090912001546001600160a01b0316610f54565b15610b4857610b486004600f5481548110610b2e57fe5b6000918252602090912001546001600160a01b0316610b81565b610b5d610b565a8390610df7565b8390610e42565b91505a600f8054600190810190915593909301929050610ac9565b50565b600d5481565b6001600160a01b038116600090815260076020526040902054610ba357610b78565b6000610bae826104d3565b90508015610ca557600a54610bc39082610e42565b600a556003546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610c1c57600080fd5b505af1158015610c30573d6000803e3d6000fd5b505050506040513d6020811015610c4657600080fd5b50506001600160a01b03821660009081526006602090815260408083204290556007909152902060020154610c7b9082610e42565b6001600160a01b03831660009081526007602052604090206002810191909155546104b090610e9c565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b600480546000198101908110610d1c57fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610d5457fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610da257fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610dd257fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610e3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f90565b90505b92915050565b600082820183811015610e39576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610e3c600c54610a13600b5485610eb990919063ffffffff16565b600082610ec857506000610e3c565b82820282848281610ed557fe5b0414610e395760405162461bcd60e51b815260040180806020018281038252602181526020018061108d6021913960400191505060405180910390fd5b6000610e3983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611027565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610e3c5750600e54610f89836104d3565b1192915050565b6000818484111561101f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610fe4578181015183820152602001610fcc565b50505050905090810190601f1680156110115780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836110765760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610fe4578181015183820152602001610fcc565b50600083858161108257fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212201184442430240a42d221318ee636d34a66693127dde9f69c2e21abb49962facf64736f6c63430007060033

Deployed ByteCode Sourcemap

11867:13917:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12757:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13896:50;;;;;;;;;;;;;:::i;15121:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15965:216;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15965:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;12431:36;;;;;;;;;;;;;:::i;12957:98::-;;;;;;;;;;;;;:::i;17944:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17944:103:0;-1:-1:-1;;;;;17944:103:0;;:::i;:::-;;13108:36;;;;;;;;;;;;;:::i;15383:88::-;;;;;;;;;;;;;:::i;13279:76::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;13279:76:0;;;;;;;;;;;;;;13062:39;;;;;;;;;;;;;:::i;17704:109::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17704:109:0;-1:-1:-1;;;;;17704:109:0;;:::i;20276:372::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20276:372:0;;;;;;;;;;;;;;;;;:::i;19085:194::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19085:194:0;;:::i;15563:142::-;;;;;;;;;;;;;:::i;17821:115::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17821:115:0;-1:-1:-1;;;;;17821:115:0;;:::i;11237:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11237:103:0;-1:-1:-1;;;;;11237:103:0;;:::i;15297:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12797:33;;;;;;;;;;;;;:::i;19545:200::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19545:200:0;;;;;;;;;:::i;12592:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12592:44:0;-1:-1:-1;;;;;12592:44:0;;:::i;12643:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12643:49:0;-1:-1:-1;;;;;12643:49:0;;:::i;18275:225::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18275:225:0;-1:-1:-1;18275:225:0;;;;:::i;19961:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19961:139:0;;:::i;13795:40::-;;;;;;;;;;;;;:::i;16189:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16189:116:0;-1:-1:-1;;;;;16189:116:0;;:::i;13362:70::-;;;;;;;;;;;;;:::i;18055:212::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18055:212:0;;;;;;;;;;:::i;16478:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16478:120:0;;;;;;;;;;:::i;18800:135::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18800:135:0;-1:-1:-1;;;;;18800:135:0;;:::i;15713:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15713:105:0;-1:-1:-1;;;;;15713:105:0;;:::i;18508:157::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18508:157:0;;:::i;12877:33::-;;;;;;;;;;;;;:::i;15477:78::-;;;;;;;;;;;;;:::i;16313:153::-;;;;;;;;;;;;;:::i;19287:145::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19287:145:0;;;;;;;;;;:::i;15207:84::-;;;;;;;;;;;;;:::i;12838:32::-;;;;;;;;;;;;;:::i;16987:709::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16987:709:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13472:19::-;;;;;;;;;;;;;:::i;20112:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20112:156:0;;;;;;;;:::i;19753:200::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19753:200:0;;;;;;;:::i;18943:134::-;;;;;;;;;;;;;:::i;18673:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18673:119:0;-1:-1:-1;;;;;18673:119:0;;:::i;19440:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19440:97:0;;;;:::i;10910:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10910:94:0;-1:-1:-1;;;;;10910:94:0;;:::i;13500:46::-;;;;;;;;;;;;;:::i;12917:33::-;;;;;;;;;;;;;:::i;13842:45::-;;;;;;;;;;;;;:::i;13151:39::-;;;;;;;;;;;;;:::i;15824:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15824:133:0;;;;;;;;;;:::i;13199:73::-;;;;;;;;;;;;;:::i;11080:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11080:97:0;-1:-1:-1;;;;;11080:97:0;;:::i;11637:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11637:173:0;-1:-1:-1;;;;;11637:173:0;;:::i;16606:373::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16606:373:0;;;;;;;;;;:::i;13441:24::-;;;;;;;;;;;;;:::i;11411:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11411:107:0;-1:-1:-1;;;;;11411:107:0;;:::i;12757:33::-;;;;:::o;13896:50::-;;;;:::o;15121:80::-;15193:5;;;;;;;;;;;;-1:-1:-1;;;15193:5:0;;;;15121:80;:::o;15965:216::-;16069:10;16040:4;16057:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16057:32:0;;;;;;;;;;;:41;;;16114:37;;;;;;;16040:4;;16057:32;;16069:10;;16114:37;;;;;;;;-1:-1:-1;16169:4:0;15965:216;;;;;:::o;12431:36::-;;;;;;:::o;12957:98::-;;;;:::o;17944:103::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;18020:10:::1;:19:::0;;-1:-1:-1;;;;;;18020:19:0::1;-1:-1:-1::0;;;;;18020:19:0;;;::::1;::::0;;;::::1;::::0;;17944:103::o;13108:36::-;;;;:::o;15383:88::-;15456:12;;15383:88;:::o;13279:76::-;;;-1:-1:-1;;;;;13279:76:0;;:::o;13062:39::-;;;;:::o;17704:109::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;17783:13:::1;:22:::0;;-1:-1:-1;;;;;;17783:22:0::1;-1:-1:-1::0;;;;;17783:22:0;;;::::1;::::0;;;::::1;::::0;;17704:109::o;20276:372::-;-1:-1:-1;;;;;20406:19:0;;20376:4;20406:19;;;:11;:19;;;;;;;;20426:10;20406:31;;;;;;;;-1:-1:-1;;20406:46:0;20403:180;;20502:69;;;;;;;;;;;-1:-1:-1;;;20502:69:0;;;;;;;;-1:-1:-1;;;;;20502:19:0;;-1:-1:-1;20502:19:0;;;:11;:19;;;;;20522:10;20502:31;;;;;;;;;;:69;;20538:6;;20502:35;:69::i;:::-;-1:-1:-1;;;;;20468:19:0;;;;;;:11;:19;;;;;;;;20488:10;20468:31;;;;;;;:103;20403:180;20600:40;20614:6;20622:9;20633:6;20600:13;:40::i;:::-;20593:47;;20276:372;;;;;;:::o;19085:194::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;19189:1:::1;19182:4;:8;19174:66;;;;-1:-1:-1::0;;;19174:66:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19251:13;:20:::0;19085:194::o;15563:142::-;15691:4;;15616:7;;15643:54;;15681:15;;-1:-1:-1;;;;;15691:4:0;15681:9;:15::i;:::-;15670:4;;15643:33;;15660:15;;-1:-1:-1;;;;;15670:4:0;15660:9;:15::i;:::-;15643:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;15636:61;;15563:142;:::o;17821:115::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;17903:16:::1;:25:::0;;-1:-1:-1;;;;;;17903:25:0::1;-1:-1:-1::0;;;;;17903:25:0;;;::::1;::::0;;;::::1;::::0;;17821:115::o;11237:103::-;11292:4;11327:5;-1:-1:-1;;;;;11327:5:0;;;11316:16;;;;11237:103::o;15297:80::-;12055:2;15297:80;:::o;12797:33::-;;;;:::o;19545:200::-;10795:24;10808:10;10795:12;:24::i;:::-;10787:48;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;;;;19655:21:::1;:39:::0;;;::::1;;;;-1:-1:-1::0;;19655:39:0;;::::1;::::0;;;::::1;::::0;;;19705:13:::1;:32:::0;19545:200::o;12592:44::-;;;;;;;;;;;;;;;:::o;12643:49::-;;;;;;;;;;;;;;;:::o;18275:225::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;18388:9:::1;18384:109;18403:19:::0;;::::1;18384:109;;;18475:6;18444:15;:28;18460:8;;18469:1;18460:11;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;18460:11:0::1;18444:28:::0;;-1:-1:-1;18444:28:0;::::1;::::0;;;;;;-1:-1:-1;18444:28:0;:37;;-1:-1:-1;;18444:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;18424:3:0::1;18384:109;;;;18275:225:::0;;;:::o;19961:139::-;10795:24;10808:10;10795:12;:24::i;:::-;10787:48;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;;;;20054:6:::1;20048:3;:12;20040:21;;;::::0;::::1;;20072:14;:20:::0;19961:139::o;13795:40::-;;;;;;;;;:::o;16189:116::-;16244:4;16268:29;16276:7;-1:-1:-1;;16268:7:0;:29::i;13362:70::-;;;-1:-1:-1;;;;;13362:70:0;;:::o;18055:212::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18144:24:0;::::1;;::::0;;;:15:::1;:24;::::0;;;;;::::1;;:34;;::::0;::::1;;;;18136:79;;;::::0;;-1:-1:-1;;;18136:79:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;18226:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:33;;-1:-1:-1;;18226:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18055:212::o;16478:120::-;10795:24;10808:10;10795:12;:24::i;:::-;10787:48;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16562:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;16562:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16478:120::o;18800:135::-;-1:-1:-1;;;;;18894:33:0;18870:4;18894:33;;;:24;:33;;;;;;;;;18800:135::o;15713:105::-;-1:-1:-1;;;;;15797:18:0;15779:7;15797:18;;;:9;:18;;;;;;;15713:105::o;18508:157::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;18609:3:::1;18596:10;:16;18588:25;;;::::0;::::1;;18624:20;:33:::0;18508:157::o;12877:33::-;;;;:::o;15477:78::-;15529:7;15547:5;-1:-1:-1;;;;;15547:5:0;15477:78;:::o;16313:153::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;16377:16:::1;::::0;::::1;;16376:17;16368:56;;;::::0;;-1:-1:-1;;;16368:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;16435:16;:23:::0;;-1:-1:-1;;16435:23:0::1;16454:4;16435:23;::::0;;16313:153::o;19287:145::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;19381:33:0;;;::::1;;::::0;;;:24:::1;:33;::::0;;;;:43;;-1:-1:-1;;19381:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19287:145::o;15207:84::-;15281:7;;;;;;;;;;;;-1:-1:-1;;;15281:7:0;;;;15207:84;:::o;12838:32::-;;;;:::o;16987:709::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;17205:13:::1;:30:::0;;;17250:10:::1;:24:::0;;;17289:12:::1;:28:::0;;;17332:13:::1;:30:::0;;;17377:7:::1;:18:::0;;;17422:28;;::::1;:44:::0;::::1;:61:::0;::::1;:72:::0;::::1;17410:9;:84:::0;17509:19:::1;:42:::0;;;17566:14:::1;:32:::0;;;17675:1:::1;17583:15:::0;17657:19:::1;17633:20;17621:9;;:32;:55;;17613:75;;;::::0;;-1:-1:-1;;;17613:75:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17613:75:0;;;;;;;;;;;;;::::1;;16987:709:::0;;;;;;;:::o;13472:19::-;;;-1:-1:-1;;;;;13472:19:0;;:::o;20112:156::-;20192:4;20216:44;20230:10;20242:9;20253:6;20216:13;:44::i;19753:200::-;10795:24;10808:10;10795:12;:24::i;:::-;10787:48;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;;;;19869:19:::1;::::0;:76:::1;::::0;;-1:-1:-1;;;19869:76:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;19869:19:0;;::::1;::::0;:43:::1;::::0;:76;;;;;:19:::1;::::0;:76;;;;;;;;:19;;:76;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19753:200:::0;;:::o;18943:134::-;18991:7;19018:51;19064:4;19018:41;19045:13;;19018:22;:20;:22::i;:::-;:26;;:41::i;:::-;:45;;:51::i;18673:119::-;-1:-1:-1;;;;;18760:24:0;18736:4;18760:24;;;:15;:24;;;;;;;;;18673:119::o;19440:97::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;19507:15:::1;:22:::0;;-1:-1:-1;;19507:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19440:97::o;10910:94::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10970:19:0::1;;::::0;;;10992:4:::1;10970:19;::::0;;;;;;;:26;;-1:-1:-1;;10970:26:0::1;::::0;;::::1;::::0;;10910:94::o;13500:46::-;;;-1:-1:-1;;;;;13500:46:0;;:::o;12917:33::-;;;;:::o;13842:45::-;;;;;;;;;:::o;13151:39::-;;;;:::o;15824:133::-;-1:-1:-1;;;;;15926:19:0;;;15908:7;15926:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15824:133::o;13199:73::-;;;-1:-1:-1;;;;;13199:73:0;;:::o;11080:97::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11142:19:0::1;11164:5;11142:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;11142:27:0::1;::::0;;11080:97::o;11637:173::-;10626:19;10634:10;10626:7;:19::i;:::-;10618:38;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;-1:-1:-1;;;10618:38:0;;;;;;;;;;;;;;;11713:5:::1;:11:::0;;-1:-1:-1;;;;;;11713:11:0::1;-1:-1:-1::0;;;;;11713:11:0;::::1;::::0;;::::1;::::0;;11735:19;;;-1:-1:-1;11735:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;11735:26:0::1;::::0;;::::1;::::0;;;11777:25;;;;;;;::::1;::::0;;;;;;;;;::::1;11637:173:::0;:::o;16606:373::-;10795:24;10808:10;10795:12;:24::i;:::-;10787:48;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;-1:-1:-1;;;10787:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16703:23:0;::::1;16721:4;16703:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;16740:4:0::1;::::0;-1:-1:-1;;;;;16730:14:0;;::::1;16740:4:::0;::::1;16730:14;;16703:41;16695:50;;;::::0;::::1;;-1:-1:-1::0;;;;;16756:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;16756:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;16810:162:::1;;16835:19;::::0;:39:::1;::::0;;-1:-1:-1;;;16835:39:0;;-1:-1:-1;;;;;16835:39:0;;::::1;;::::0;::::1;::::0;:19:::1;:39:::0;;;;;;;;:19;::::1;::::0;:28:::1;::::0;:39;;;;;:19;;:39;;;;;;:19;;:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16810:162;;;16905:19;::::0;-1:-1:-1;;;;;16942:17:0;;::::1;16905:19;16942:17:::0;;;:9:::1;:17;::::0;;;;;;16905:55;;-1:-1:-1;;;16905:55:0;;::::1;::::0;::::1;::::0;;;;;;;;;:19;;;::::1;::::0;:28:::1;::::0;:55;;;;;;;;;;:19;;:55;::::1;;::::0;::::1;;;;::::0;::::1;16810:162;16606:373:::0;;:::o;13441:24::-;;;-1:-1:-1;;;;;13441:24:0;;:::o;11411:107::-;-1:-1:-1;;;;;11491:19:0;11467:4;11491:19;;;:14;:19;;;;;;;;;11411:107::o;425:190::-;511:7;547:12;539:6;;;;531:29;;;;-1:-1:-1;;;531:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;583:5:0;;;425:190::o;20656:1993::-;20773:16;;20748:4;;20773:16;;;:67;;-1:-1:-1;;;;;;20794:19:0;;;;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;20817:22:0;;;;;;:11;:22;;;;;;;;20794:45;20765:99;;;;;-1:-1:-1;;;20765:99:0;;;;;;;;;;;;-1:-1:-1;;;20765:99:0;;;;;;;;;;;;;;;20878:16;;;;20875:73;;;20904:41;20919:6;20927:9;20938:6;20904:14;:41::i;:::-;20897:48;;;;20875:73;20964:15;;;;:40;;;;;21003:1;20983:17;:15;:17::i;:::-;:21;20964:40;20960:448;;;-1:-1:-1;;;;;21043:32:0;;;;;;:24;:32;;;;;;;;:41;;;:106;;-1:-1:-1;;;;;;21105:35:0;;;;;;:24;:35;;;;;;;;:44;21043:106;:144;;;;-1:-1:-1;21183:4:0;;-1:-1:-1;;;;;21170:17:0;;;21183:4;;21170:17;;21043:144;21021:376;;;21222:12;21238:20;21248:9;21238;:20::i;:::-;21222:36;;21305:17;:15;:17::i;:::-;21295:6;21285:7;:16;:37;;21277:104;;;;-1:-1:-1;;;21277:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21021:376;;21437:4;;-1:-1:-1;;;;;21437:4:0;21423:10;:18;;;;:39;;-1:-1:-1;21446:16:0;;;;21445:17;21423:39;:64;;;;-1:-1:-1;21466:21:0;;;;;;;21423:64;:109;;;;-1:-1:-1;21519:13:0;;21509:4;21491:24;;;;:9;:24;;;;;;:41;;21423:109;21420:128;;;21535:10;:8;:10::i;:::-;21576:16;;;21652:53;;;;;;;;;;;-1:-1:-1;;;21652:53:0;;;;-1:-1:-1;;;;;21652:17:0;;21560:12;21652:17;;;:9;:17;;;;;;21576:16;;;;21575:17;;21652:53;;:17;21674:6;;21652:21;:53::i;:::-;-1:-1:-1;;;;;21632:17:0;;;;;;:9;:17;;;;;;;;:73;;;;21721:11;:19;;;;;;;:45;;-1:-1:-1;;;;;;21744:22:0;;;;;;:11;:22;;;;;;;;21721:45;21718:92;;;-1:-1:-1;21793:5:0;21718:92;21883:4;;-1:-1:-1;;;;;21873:14:0;;;21883:4;;21873:14;;;;:35;;-1:-1:-1;21904:4:0;;-1:-1:-1;;;;;21891:17:0;;;21904:4;;21891:17;;21873:35;21870:82;;;-1:-1:-1;21935:5:0;21870:82;21994:6;22013:88;;;;22054:35;22063:6;22071:9;22082:6;22054:8;:35::i;:::-;22040:49;;22013:88;-1:-1:-1;;;;;22136:20:0;;;;;;:9;:20;;;;;;:37;;22161:11;22136:24;:37::i;:::-;-1:-1:-1;;;;;22113:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;22219:24;;;;;:16;:24;;;;;;;22215:127;;22264:19;;-1:-1:-1;;;;;22301:17:0;;;22264:19;22301:17;;;:9;:17;;;;;;;22264:55;;-1:-1:-1;;;22264:55:0;;;;;;;;;;;;;;:19;;;;;:28;;:55;;;;;;;;;;:19;;:55;;;;;;;;;;;;;;;;;;;;;;;;;22260:71;;-1:-1:-1;;;;;22358:27:0;;;;;;:16;:27;;;;;;;;22354:137;;22406:19;;-1:-1:-1;;;;;22446:20:0;;;22406:19;22446:20;;;:9;:20;;;;;;;22406:61;;-1:-1:-1;;;22406:61:0;;;;;;;;;;;;;;:19;;;;;:28;;:61;;;;;;;;;;:19;;:61;;;;;;;;;;;;;;;;;;;;;;;;;22402:77;;22507:19;;22535:14;;22507:43;;;-1:-1:-1;;;;;;22507:43:0;;;;;;;;;;-1:-1:-1;;;;;22507:19:0;;;;:27;;:43;;;;;:19;;:43;;;;;;;;:19;;:43;;;;;;;;;;;;;;;;;;;;;;;;;22503:59;22596:9;-1:-1:-1;;;;;22579:40:0;22588:6;-1:-1:-1;;;;;22579:40:0;;22607:11;22579:40;;;;;;;;;;;;;;;;;;-1:-1:-1;22637:4:0;;20656:1993;-1:-1:-1;;;;;20656:1993:0:o;281:136::-;339:7;366:43;370:1;373;366:43;;;;;;;;;;;;;;;;;:3;:43::i;623:224::-;681:7;705:6;701:25;;-1:-1:-1;722:1:0;715:8;;701:25;748:5;;;752:1;748;:5;:1;772:5;;;;;:10;764:56;;;;-1:-1:-1;;;764:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;855:132;913:7;940:39;944:1;947;940:39;;;;;;;;;;;;;;;;;:3;:39::i;22661:330::-;22791:53;;;;;;;;;;;-1:-1:-1;;;22791:53:0;;;;;;;;-1:-1:-1;;;;;22791:17:0;;22754:4;22791:17;;;:9;:17;;;;;;;:53;;22813:6;;22791:21;:53::i;:::-;-1:-1:-1;;;;;22771:17:0;;;;;;;:9;:17;;;;;;:73;;;;22878:20;;;;;;;:32;;22903:6;22878:24;:32::i;:::-;-1:-1:-1;;;;;22855:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;22926:35;;;;;;;22855:20;;22926:35;;;;;;;;;;;;;-1:-1:-1;22979:4:0;22661:330;;;;;:::o;23720:1995::-;13991:16;:23;;-1:-1:-1;;13991:23:0;14010:4;13991:23;;;23826:4:::1;13991:16:::0;23808:24;;;:9:::1;:24:::0;;;;;;;23907:9:::1;::::0;23889:12:::1;::::0;23808:24;;13991:16;23869:55:::1;::::0;23922:1:::1;::::0;23869:48:::1;::::0;23907:9;23869:48;;23808:24;;23869:19:::1;:33::i;:55::-;23843:81:::0;-1:-1:-1;23935:20:0::1;23958:36;:15:::0;23843:81;23958:19:::1;:36::i;:::-;24031:16;::::0;;24045:1:::1;24031:16:::0;;;;;::::1;::::0;;23935:59;;-1:-1:-1;24007:21:0::1;::::0;24031:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24031:16:0::1;24007:40;;24076:4;24058;24063:1;24058:7;;;;;;;;-1:-1:-1::0;;;;;24058:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;24102:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;24102:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;24058:7;;24102:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;24102:13:0;24092:7;;:4;;24097:1:::1;::::0;24092:7;::::1;;;;;;;;;;:23;-1:-1:-1::0;;;;;24092:23:0::1;;;-1:-1:-1::0;;;;;24092:23:0::1;;;::::0;::::1;24128:6;;;;;;;;;-1:-1:-1::0;;;;;24128:6:0::1;-1:-1:-1::0;;;;;24128:57:0::1;;24200:12;24227:1;24243:4;24270;24290:15;24128:188;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;24128:188:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;24419:12:0::1;::::0;24349:21:::1;::::0;-1:-1:-1;24329:17:0::1;::::0;-1:-1:-1;24405:34:0::1;::::0;24419:19:::1;::::0;24436:1:::1;24419:16;:19::i;:::-;24405:9;::::0;;:13:::1;:34::i;:::-;24383:56;;24460:26;24489:51;24538:1;24489:44;24521:11;24489:27;24503:12;;24489:9;:13;;:27;;;;:::i;:51::-;24460:80;;24551:24;24578:42;24608:11;24578:25;24592:10;;24578:9;:13;;:25;;;;:::i;:42::-;24551:69;;24631:27;24661:45;24694:11;24661:28;24675:13;;24661:9;:13;;:28;;;;:::i;:45::-;24631:75;;24717:27;24747:45;24780:11;24747:28;24761:13;;24747:9;:13;;:28;;;;:::i;:45::-;24717:75:::0;-1:-1:-1;24803:21:0::1;24827:105;24717:75:::0;24827:80:::1;24887:19:::0;24827:80;24865:16;24827:80;:9;24841:18;24827:13:::1;:33::i;:105::-;24803:129;;24949:19;;;;;;;;;-1:-1:-1::0;;;;;24949:19:0::1;-1:-1:-1::0;;;;;24949:27:0::1;;24984:19;24949:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;24945:73:::0;25049:10:::1;::::0;:14;25046:94:::1;;25087:13;::::0;25079:49:::1;::::0;-1:-1:-1;;;;;25087:13:0;;::::1;::::0;25079:49;::::1;;;::::0;25111:16;;25087:13:::1;25079:49:::0;25087:13;25079:49;25111:16;25087:13;25079:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25046:94;25153:13;::::0;:17;25150:103:::1;;25194:16;::::0;25186:55:::1;::::0;-1:-1:-1;;;;;25194:16:0;;::::1;::::0;25186:55;::::1;;;::::0;25221:19;;25194:16:::1;25186:55:::0;25194:16;25186:55;25221:19;25194:16;25186:55;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25150:103;25266:10;::::0;:14;25263:88:::1;;25304:10;::::0;25296:43:::1;::::0;-1:-1:-1;;;;;25304:10:0;;::::1;::::0;25296:43;::::1;;;::::0;25325:13;;25304:10:::1;25296:43:::0;25304:10;25296:43;25325:13;25304:10;25296:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25263:88;25366:19:::0;;25363:345:::1;;25401:6;::::0;25575:4:::1;::::0;25401:227:::1;::::0;;-1:-1:-1;;;25401:227:0;;25477:4:::1;25401:227;::::0;::::1;::::0;;;;;;;:6:::1;:227:::0;;;;;;;;;;-1:-1:-1;;;;;25575:4:0;;::::1;25401:227:::0;;;;25598:15:::1;25401:227:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;25431:18;;25401:227;;;;;::::1;::::0;;;;;;;;;25431:18;25401:6;:227;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;25401:227:0;25648:48;;;;;25401:227:::1;25648:48:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;25363:345;-1:-1:-1::0;;14037:16:0;:24;;-1:-1:-1;;14037:24:0;;;-1:-1:-1;;;;;;;;;23720:1995:0:o;22999:713::-;23123:4;;23086:7;;-1:-1:-1;;;;;23110:17:0;;;23123:4;;23110:17;23106:82;;;23157:19;;23144:9;:32;;;;;;;23106:82;23197:17;23217:41;23243:14;;23217:21;23228:9;;23217:6;:10;;:21;;;;:::i;:41::-;-1:-1:-1;;;;;23275:23:0;;;;;;:15;:23;;;;;;23197:61;;-1:-1:-1;23275:23:0;;;:67;;-1:-1:-1;;;;;;23316:26:0;;;;;;:15;:26;;;;;;;;23275:67;23271:161;;;23399:20;;23376:44;;:18;:9;23390:3;23376:13;:18::i;:44::-;23363:57;;23271:161;23462:4;;-1:-1:-1;;;;;23449:17:0;;;23462:4;;23449:17;23445:82;;;23496:19;;23483:9;:32;;;;;;;;23445:82;23584:4;23566:24;;;;:9;:24;;;;;;:39;;23595:9;23566:28;:39::i;:::-;23557:4;23539:24;;;;:9;:24;;;;;;;;;:66;;;;23621:42;;;;;;;23557:4;;-1:-1:-1;;;;;23621:42:0;;;;;;;;;;;;;23683:21;:6;23694:9;23683:10;:21::i;:::-;23676:28;22999:713;-1:-1:-1;;;;;22999:713:0:o;94:179::-;152:7;184:5;;;208:6;;;;200:46;;;;;-1:-1:-1;;;200:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;995:189;1081:7;1116:12;1109:5;1101:28;;;;-1:-1:-1;;;1101:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1140:9;1156:1;1152;:5;;;;;;;995:189;-1:-1:-1;;;;;995:189:0:o

Swarm Source

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