ETH Price: $3,607.35 (+4.67%)
 

Overview

Max Total Supply

1,000,000,000 $EAT

Holders

14

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,799,999.020000000055212304 $EAT

Value
$0.00
0x47c1e0087b047602ab77601293b2399f75fdc656
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:
EAT

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-26
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function _createInitialSupply(address account, uint256 amount)
        internal
        virtual
    {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership(bool confirmRenounce)
        external
        virtual
        onlyOwner
    {
        require(confirmRenounce, "Please confirm renounce!");
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface ILpPair {
    function sync() external;
}

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

    function WETH() external pure returns (address);

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

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

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

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);
}

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

//EAT.sol

contract EAT is ERC20, Ownable {
    IDexRouter public dexRouter;
    address public lpPair;
    bool private swapping;
    uint256 public swapTokensAtAmount;
    address public marketingWallet;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    bool private sellingEnabled =false;

    mapping(address => bool) public flaggedAsBot;
    address[] public botBuyers;
    uint256 public botsCaught;
    uint256 public tradingActiveBlock = 0;
    uint256 public blockForPenaltyEnd;
    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWallet;
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event TradingEnabled();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMarketingWallet(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);

    constructor() payable ERC20("EAT", "$EAT") {
        address newOwner = msg.sender;
        address _dexRouter;

        _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        dexRouter = IDexRouter(_dexRouter);
        lpPair = IDexFactory(dexRouter.factory()).createPair(
            address(this),
            dexRouter.WETH()
        );
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 1 * 1e9 * 1e18;

        maxBuyAmount = totalSupply / 100;
        maxSellAmount = (totalSupply * 3) / 100;
        maxWallet = (totalSupply * 2) / 100;
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05 %

       
        
        buyMarketingFee = 1;
        buyLiquidityFee = 1;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = 50;
        sellLiquidityFee = 50;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;

        marketingWallet = address(0xEfE78B6EBb0A9e58B37c5e34B951d54758aB8e7E);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(marketingWallet), true);
        excludeFromFees(address(dexRouter), true);
        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);
        _excludeFromMaxTransaction(address(marketingWallet), true);
        _excludeFromMaxTransaction(address(dexRouter), true);
        _createInitialSupply(newOwner, totalSupply);

        transferOwnership(newOwner);
    }

    receive() external payable {}

    function getBotBuyers() external view returns (address[] memory) {
        return botBuyers;
    }

    function unflagBot(address wallet) external onlyOwner {
        require(flaggedAsBot[wallet], "Wallet is already not flagged.");
        flaggedAsBot[wallet] = false;
    }

     function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        _excludeFromMaxTransaction(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function flagBot(address wallet) external onlyOwner {
        require(!flaggedAsBot[wallet], "Wallet is already flagged.");
        flaggedAsBot[wallet] = true;
    }

    function updateBuyFees(uint256 _projectFee, uint256 _liquidityFee)
        external
        onlyOwner
    {
        buyMarketingFee = _projectFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;
    }

    function updateBuySellLimit(uint256 _buyAmount, uint256 _sellAmount)
        external
        onlyOwner
    {
        maxSellAmount = _sellAmount;
        maxBuyAmount = _buyAmount;
    }

    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }
    
    
    // Enable selling - cannot be turned off!  only for bot , normal user can sell .
    function setTrade(bool confirmSellingEnabled) external onlyOwner {

        sellingEnabled=confirmSellingEnabled;
        
    }

    function _excludeFromMaxTransaction(address updAds, bool isExcluded)
        private
    {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        
        maxWallet = newNum * (10 ** 18);
        
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        external
        onlyOwner
    {
        if (!isEx) {
            require(
                updAds != lpPair,
                "Cannot remove uniswap pair from max txn"
            );
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        external
        onlyOwner
    {
        require(
            pair != lpPair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );
        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateSellFees(uint256 _projectFee, uint256 _liquidityFee)
        external
        onlyOwner
    {
        sellMarketingFee = _projectFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");

        if (!tradingActive) {
            require(
                _isExcludedFromFees[from] || _isExcludedFromFees[to],
                "Trading is not active."
            );
        }

        if (!earlyBuyPenaltyInEffect() && tradingActive) {
            require(
                !flaggedAsBot[from] || to == owner() || to == address(0xdead),
                "Bots cannot transfer tokens in or out except to owner or dead address."
            );
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0xdead) &&
                !_isExcludedFromFees[from] &&
                !_isExcludedFromFees[to]
            ) {
                if (transferDelayEnabled) {
                    if (to != address(dexRouter) && to != address(lpPair)) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number - 2 &&
                                _holderLastTransferTimestamp[to] <
                                block.number - 2,
                            "_transfer:: Transfer Delay enabled.  Try again later."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxBuyAmount,
                        "Buy transfer amount exceeds the max buy."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max Wallet Exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(sellingEnabled, "Selling disabled");
                    require(
                        amount <= maxSellAmount,
                        "Sell transfer amount exceeds the max sell."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max Wallet Exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap && swapEnabled && !swapping && automatedMarketMakerPairs[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // bot/sniper penalty.
            if (
                (earlyBuyPenaltyInEffect() ||
                    (amount >= maxBuyAmount - .9 ether &&
                        blockForPenaltyEnd + 8 >= block.number)) &&
                automatedMarketMakerPairs[from] &&
                !automatedMarketMakerPairs[to] &&
                !_isExcludedFromFees[to] &&
                buyTotalFees > 0
            ) {
                if (!earlyBuyPenaltyInEffect()) {
                    // reduce by 1 wei per max buy over what Uniswap will allow to revert bots as best as possible to limit erroneously blacklisted wallets. First bot will get in and be blacklisted, rest will be reverted (*cross fingers*)
                    maxBuyAmount -= 1;
                }

                if (!flaggedAsBot[to]) {
                    flaggedAsBot[to] = true;
                    botsCaught += 1;
                    botBuyers.push(to);
                    emit CaughtEarlyBuyer(to);
                }

                fees = (amount * 99) / 100;
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 100;
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / 100;
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function earlyBuyPenaltyInEffect() public view returns (bool) {
        return block.number < blockForPenaltyEnd;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);

        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(marketingWallet),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 10) {
            contractBalance = swapTokensAtAmount * 10;
        }

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForMarketing = (ethBalance * tokensForMarketing) /
            (totalTokensToSwap - (tokensForLiquidity / 2));

        ethForLiquidity -= ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }

    function transferForeignToken(address _token, address _to)
        external
        onlyOwner
        returns (bool _sent)
    {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}(
            ""
        );
    }

    function enableTrading(uint256 blocksForPenalty) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        require(
            blocksForPenalty <= 10,
            "Cannot make penalty blocks more than 10"
        );
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        blockForPenaltyEnd = tradingActiveBlock + blocksForPenalty;
        emit TradingEnabled();
    }

    function addLP(bool confirmAddLp) external onlyOwner {
        require(confirmAddLp, "Please confirm adding of the LP");
        require(!tradingActive, "Trading is already active, cannot relaunch.");

        // add the liquidity
        require(
            address(this).balance > 0,
            "Must have ETH on contract to launch"
        );
        require(
            balanceOf(address(this)) > 0,
            "Must have Tokens on contract to launch"
        );

        _approve(address(this), address(dexRouter), balanceOf(address(this)));

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(marketingWallet),
            block.timestamp
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingEnabled","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedMarketingWallet","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"confirmAddLp","type":"bool"}],"name":"addLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"botBuyers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocksForPenalty","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"flagBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"flaggedAsBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBotBuyers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"confirmRenounce","type":"bool"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"confirmSellingEnabled","type":"bool"}],"name":"setTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"unflagBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyAmount","type":"uint256"},{"internalType":"uint256","name":"_sellAmount","type":"uint256"}],"name":"updateBuySellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_projectFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6009805462ffffff60a01b1916600160a01b179055600b805461ffff191660011790556000600f55600360808181526211505560ea1b60a052610100604052600460c0908152630911505560e21b60e05290916200005e838262000843565b5060046200006d828262000843565b5050506000620000826200043b60201b60201c565b600580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620039d1833981519152908290a350600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801562000129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014f91906200090f565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d891906200090f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000226573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024c91906200090f565b600780546001600160a01b0319166001600160a01b03929092169182179055620002789060016200043f565b60075462000291906001600160a01b03166001620004a2565b6b033b2e3c9fd0803ce8000000620002ab60648262000957565b6011556064620002bd8260036200097a565b620002c9919062000957565b6012556064620002db8260026200097a565b620002e7919062000957565b601355612710620002fa8260056200097a565b62000306919062000957565b6008556001601a819055601b8190556200032190806200099a565b6019556032601581905560168190556200033c90806200099a565b601455600980546001600160a01b03191673efe78b6ebb0a9e58b37c5e34b951d54758ab8e7e179055620003728360016200050e565b6200037f3060016200050e565b6200038e61dead60016200050e565b600954620003a7906001600160a01b031660016200050e565b600654620003c0906001600160a01b031660016200050e565b620003cd8360016200043f565b620003da3060016200043f565b620003e961dead60016200043f565b60095462000402906001600160a01b031660016200043f565b6006546200041b906001600160a01b031660016200043f565b620004278382620005bc565b6200043283620006a1565b505050620009b0565b3390565b6001600160a01b0382166000818152601d6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152601e60205260409020805460ff1916821515179055620004d282826200043f565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b031633146200055d5760405162461bcd60e51b81526020600482018190526024820152600080516020620039b183398151915260448201526064015b60405180910390fd5b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006145760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000554565b80600260008282546200062891906200099a565b90915550506001600160a01b03821660009081526020819052604081208054839290620006579084906200099a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620006ec5760405162461bcd60e51b81526020600482018190526024820152600080516020620039b1833981519152604482015260640162000554565b6001600160a01b038116620007535760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000554565b6005546040516001600160a01b03808416921690600080516020620039d183398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620007c957607f821691505b602082108103620007ea57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200083e57600081815260208120601f850160051c81016020861015620008195750805b601f850160051c820191505b818110156200083a5782815560010162000825565b5050505b505050565b81516001600160401b038111156200085f576200085f6200079e565b6200087781620008708454620007b4565b84620007f0565b602080601f831160018114620008af5760008415620008965750858301515b600019600386901b1c1916600185901b1785556200083a565b600085815260208120601f198616915b82811015620008e057888601518255948401946001909101908401620008bf565b5085821015620008ff5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200092257600080fd5b81516001600160a01b03811681146200093a57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b6000826200097557634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141762000994576200099462000941565b92915050565b8082018082111562000994576200099462000941565b612ff180620009c06000396000f3fe60806040526004361061037a5760003560e01c806382aa7c68116101d1578063c024666811610102578063e884f260116100a0578063f5648a4f1161006f578063f5648a4f14610a04578063f637434214610a19578063f8b45b0514610a2f578063fed20c7814610a4557600080fd5b8063e884f260146109a3578063ee40166e146109b8578063f11a24d3146109ce578063f2fde38b146109e457600080fd5b8063d5fb5b17116100dc578063d5fb5b1714610911578063d85ba06314610931578063dd62ed3e14610947578063e2f456051461098d57600080fd5b8063c0246668146108b7578063c18bc195146108d7578063c876d0b9146108f757600080fd5b8063a457c2d71161016f578063b62496f511610149578063b62496f514610826578063b987553914610856578063bbc0c74214610876578063beee927d1461089757600080fd5b8063a457c2d7146107d0578063a62068ce146107f0578063a9059cbb1461080657600080fd5b80638da5cb5b116101ab5780638da5cb5b14610767578063921369131461078557806395d89b411461079b5780639a7a23d6146107b057600080fd5b806382aa7c68146107115780638366e79a1461073157806388e765ff1461075157600080fd5b8063452ed4f1116102ab5780636b0a894c116102495780637571336a116102235780637571336a1461069b57806375f0a874146106bb5780637bce5a04146106db5780637e926b4b146106f157600080fd5b80636b0a894c146106445780636ddd17131461065a57806370a082311461067b57600080fd5b806366ca9b831161028557806366ca9b83146105d657806366d602ae146105f65780636a11afc61461060c5780636a486a8e1461062e57600080fd5b8063452ed4f11461057e5780634a62bb651461059e57806358a6d531146105bf57600080fd5b806318160ddd1161031857806323b872dd116102f257806323b872dd14610502578063243c20f714610522578063313ce56714610542578063395093511461055e57600080fd5b806318160ddd146104b75780631a8145bb146104d65780631f3fed8f146104ec57600080fd5b80630758d924116103545780630758d9241461040f578063095ea7b31461044757806310d5de5314610467578063142e9ab81461049757600080fd5b8063017e01921461038657806302dbd8f8146103cb57806306fdde03146103ed57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b506103b66103a1366004612b3e565b600c6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156103d757600080fd5b506103eb6103e6366004612b62565b610a65565b005b3480156103f957600080fd5b50610402610ab3565b6040516103c29190612b84565b34801561041b57600080fd5b5060065461042f906001600160a01b031681565b6040516001600160a01b0390911681526020016103c2565b34801561045357600080fd5b506103b6610462366004612bd2565b610b45565b34801561047357600080fd5b506103b6610482366004612b3e565b601d6020526000908152604090205460ff1681565b3480156104a357600080fd5b506103eb6104b2366004612c0c565b610b5c565b3480156104c357600080fd5b506002545b6040519081526020016103c2565b3480156104e257600080fd5b506104c860185481565b3480156104f857600080fd5b506104c860175481565b34801561050e57600080fd5b506103b661051d366004612c29565b610ba0565b34801561052e57600080fd5b506103eb61053d366004612b3e565b610c4a565b34801561054e57600080fd5b50604051601281526020016103c2565b34801561056a57600080fd5b506103b6610579366004612bd2565b610d01565b34801561058a57600080fd5b5060075461042f906001600160a01b031681565b3480156105aa57600080fd5b506009546103b690600160a01b900460ff1681565b3480156105cb57600080fd5b5060105443106103b6565b3480156105e257600080fd5b506103eb6105f1366004612b62565b610d3d565b34801561060257600080fd5b506104c860125481565b34801561061857600080fd5b50610621610d82565b6040516103c29190612cae565b34801561063a57600080fd5b506104c860145481565b34801561065057600080fd5b506104c8600e5481565b34801561066657600080fd5b506009546103b690600160b01b900460ff1681565b34801561068757600080fd5b506104c8610696366004612b3e565b610de3565b3480156106a757600080fd5b506103eb6106b6366004612cc1565b610dfe565b3480156106c757600080fd5b5060095461042f906001600160a01b031681565b3480156106e757600080fd5b506104c8601a5481565b3480156106fd57600080fd5b506103eb61070c366004612c0c565b610ec6565b34801561071d57600080fd5b506103eb61072c366004612cfa565b610f88565b34801561073d57600080fd5b506103b661074c366004612d13565b6110c2565b34801561075d57600080fd5b506104c860115481565b34801561077357600080fd5b506005546001600160a01b031661042f565b34801561079157600080fd5b506104c860155481565b3480156107a757600080fd5b50610402611273565b3480156107bc57600080fd5b506103eb6107cb366004612cc1565b611282565b3480156107dc57600080fd5b506103b66107eb366004612bd2565b611376565b3480156107fc57600080fd5b506104c860105481565b34801561081257600080fd5b506103b6610821366004612bd2565b61140f565b34801561083257600080fd5b506103b6610841366004612b3e565b601e6020526000908152604090205460ff1681565b34801561086257600080fd5b506103eb610871366004612c0c565b61141c565b34801561088257600080fd5b506009546103b690600160a81b900460ff1681565b3480156108a357600080fd5b506103eb6108b2366004612b62565b61167a565b3480156108c357600080fd5b506103eb6108d2366004612cc1565b6116ac565b3480156108e357600080fd5b506103eb6108f2366004612cfa565b611735565b34801561090357600080fd5b50600b546103b69060ff1681565b34801561091d57600080fd5b5061042f61092c366004612cfa565b611777565b34801561093d57600080fd5b506104c860195481565b34801561095357600080fd5b506104c8610962366004612d13565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561099957600080fd5b506104c860085481565b3480156109af57600080fd5b506103eb6117a1565b3480156109c457600080fd5b506104c8600f5481565b3480156109da57600080fd5b506104c8601b5481565b3480156109f057600080fd5b506103eb6109ff366004612b3e565b6117d7565b348015610a1057600080fd5b506103eb6118c2565b348015610a2557600080fd5b506104c860165481565b348015610a3b57600080fd5b506104c860135481565b348015610a5157600080fd5b506103eb610a60366004612b3e565b61192e565b6005546001600160a01b03163314610a985760405162461bcd60e51b8152600401610a8f90612d41565b60405180910390fd5b60158290556016819055610aac8183612d8c565b6014555050565b606060038054610ac290612d9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610aee90612d9f565b8015610b3b5780601f10610b1057610100808354040283529160200191610b3b565b820191906000526020600020905b815481529060010190602001808311610b1e57829003601f168201915b5050505050905090565b6000610b523384846119e1565b5060015b92915050565b6005546001600160a01b03163314610b865760405162461bcd60e51b8152600401610a8f90612d41565b600b80549115156101000261ff0019909216919091179055565b6000610bad848484611b05565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c325760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a8f565b610c3f85338584036119e1565b506001949350505050565b6005546001600160a01b03163314610c745760405162461bcd60e51b8152600401610a8f90612d41565b6001600160a01b0381166000908152600c602052604090205460ff1615610cdd5760405162461bcd60e51b815260206004820152601a60248201527f57616c6c657420697320616c726561647920666c61676765642e0000000000006044820152606401610a8f565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b52918590610d38908690612d8c565b6119e1565b6005546001600160a01b03163314610d675760405162461bcd60e51b8152600401610a8f90612d41565b601a829055601b819055610d7b8183612d8c565b6019555050565b6060600d805480602002602001604051908101604052809291908181526020018280548015610b3b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610dbc575050505050905090565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610e285760405162461bcd60e51b8152600401610a8f90612d41565b80610e9b576007546001600160a01b0390811690831603610e9b5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610a8f565b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ef05760405162461bcd60e51b8152600401610a8f90612d41565b80610f3d5760405162461bcd60e51b815260206004820152601860248201527f506c6561736520636f6e6669726d2072656e6f756e63652100000000000000006044820152606401610a8f565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350600580546001600160a01b0319169055565b6005546001600160a01b03163314610fb25760405162461bcd60e51b8152600401610a8f90612d41565b600954600160a81b900460ff161561100c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610a8f565b600a81111561106d5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206d616b652070656e616c747920626c6f636b73206d6f72652060448201526607468616e2031360cc1b6064820152608401610a8f565b6009805461ffff60a81b191661010160a81b17905543600f819055611093908290612d8c565b6010556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a150565b6005546000906001600160a01b031633146110ef5760405162461bcd60e51b8152600401610a8f90612d41565b6001600160a01b0383166111455760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610a8f565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa15801561118c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b09190612dd9565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611203573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112279190612df2565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b606060048054610ac290612d9f565b6005546001600160a01b031633146112ac5760405162461bcd60e51b8152600401610a8f90612d41565b6007546001600160a01b03908116908316036113305760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a8f565b61133a82826125e2565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156113f85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a8f565b61140533858584036119e1565b5060019392505050565b6000610b52338484611b05565b6005546001600160a01b031633146114465760405162461bcd60e51b8152600401610a8f90612d41565b806114935760405162461bcd60e51b815260206004820152601f60248201527f506c6561736520636f6e6669726d20616464696e67206f6620746865204c50006044820152606401610a8f565b600954600160a81b900460ff16156115015760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610a8f565b6000471161155d5760405162461bcd60e51b815260206004820152602360248201527f4d757374206861766520455448206f6e20636f6e747261637420746f206c61756044820152620dcc6d60eb1b6064820152608401610a8f565b600061156830610de3565b116115c45760405162461bcd60e51b815260206004820152602660248201527f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f206044820152650d8c2eadcc6d60d31b6064820152608401610a8f565b6006546115df9030906001600160a01b0316610d3882610de3565b6006546001600160a01b031663f305d71947306115fb81610de3565b6009546040516001600160e01b031960e087901b16815261163193929160009182916001600160a01b0316904290600401612e0f565b60606040518083038185885af115801561164f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116749190612e4a565b50505050565b6005546001600160a01b031633146116a45760405162461bcd60e51b8152600401610a8f90612d41565b601255601155565b6005546001600160a01b031633146116d65760405162461bcd60e51b8152600401610a8f90612d41565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461175f5760405162461bcd60e51b8152600401610a8f90612d41565b61177181670de0b6b3a7640000612e78565b60135550565b600d818154811061178757600080fd5b6000918252602090912001546001600160a01b0316905081565b6005546001600160a01b031633146117cb5760405162461bcd60e51b8152600401610a8f90612d41565b600b805460ff19169055565b6005546001600160a01b031633146118015760405162461bcd60e51b8152600401610a8f90612d41565b6001600160a01b0381166118665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a8f565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146118ec5760405162461bcd60e51b8152600401610a8f90612d41565b604051600090339047908381818185875af1925050503d8060008114611674576040519150601f19603f3d011682016040523d82523d6000602084013e611674565b6005546001600160a01b031633146119585760405162461bcd60e51b8152600401610a8f90612d41565b6001600160a01b0381166000908152600c602052604090205460ff166119c05760405162461bcd60e51b815260206004820152601e60248201527f57616c6c657420697320616c7265616479206e6f7420666c61676765642e00006044820152606401610a8f565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6001600160a01b038316611a435760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a8f565b6001600160a01b038216611aa45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a8f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b2b5760405162461bcd60e51b8152600401610a8f90612e8f565b6001600160a01b038216611b515760405162461bcd60e51b8152600401610a8f90612ed4565b60008111611ba15760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610a8f565b600954600160a81b900460ff16611c36576001600160a01b0383166000908152601c602052604090205460ff1680611bf157506001600160a01b0382166000908152601c602052604090205460ff165b611c365760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a8f565b6010544310158015611c515750600954600160a81b900460ff165b15611d21576001600160a01b0383166000908152600c602052604090205460ff161580611c8b57506005546001600160a01b038381169116145b80611ca057506001600160a01b03821661dead145b611d215760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610a8f565b600954600160a01b900460ff1615612150576005546001600160a01b03848116911614801590611d5f57506005546001600160a01b03838116911614155b8015611d7657506001600160a01b03821661dead14155b8015611d9b57506001600160a01b0383166000908152601c602052604090205460ff16155b8015611dc057506001600160a01b0382166000908152601c602052604090205460ff16155b1561215057600b5460ff1615611ed9576006546001600160a01b03838116911614801590611dfc57506007546001600160a01b03838116911614155b15611ed957611e0c600243612f17565b326000908152600a6020526040902054108015611e4a5750611e2f600243612f17565b6001600160a01b0383166000908152600a6020526040902054105b611eb45760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610a8f565b326000908152600a602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383166000908152601e602052604090205460ff168015611f1a57506001600160a01b0382166000908152601d602052604090205460ff16155b15611fe157601154811115611f825760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610a8f565b601354611f8e83610de3565b611f989083612d8c565b1115611fdc5760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610a8f565b612150565b6001600160a01b0382166000908152601e602052604090205460ff16801561202257506001600160a01b0383166000908152601d602052604090205460ff16155b156120d657600b54610100900460ff166120715760405162461bcd60e51b815260206004820152601060248201526f14d95b1b1a5b99c8191a5cd8589b195960821b6044820152606401610a8f565b601254811115611fdc5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610a8f565b6001600160a01b0382166000908152601d602052604090205460ff166121505760135461210283610de3565b61210c9083612d8c565b11156121505760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610a8f565b600061215b30610de3565b6008549091508110801590819061217b5750600954600160b01b900460ff165b80156121915750600754600160a01b900460ff16155b80156121b557506001600160a01b0384166000908152601e602052604090205460ff165b156121e3576007805460ff60a01b1916600160a01b1790556121d5612610565b6007805460ff60a01b191690555b6001600160a01b0385166000908152601c602052604090205460019060ff168061222557506001600160a01b0385166000908152601c602052604090205460ff165b1561222e575060005b600081156125ce576010544310806122745750670c7d713b49da00006011546122579190612f17565b851015801561227457504360105460086122719190612d8c565b10155b801561229857506001600160a01b0387166000908152601e602052604090205460ff165b80156122bd57506001600160a01b0386166000908152601e602052604090205460ff16155b80156122e257506001600160a01b0386166000908152601c602052604090205460ff16155b80156122f057506000601954115b15612477576010544310612317576001601160008282546123119190612f17565b90915550505b6001600160a01b0386166000908152600c602052604090205460ff166123f7576001600160a01b0386166000908152600c60205260408120805460ff19166001908117909155600e805491929091612370908490612d8c565b9091555050600d80546001810182556000919091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319166001600160a01b0388169081179091556040519081527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b6064612404866063612e78565b61240e9190612f2a565b9050601954601b54826124219190612e78565b61242b9190612f2a565b6018600082825461243c9190612d8c565b9091555050601954601a546124519083612e78565b61245b9190612f2a565b6017600082825461246c9190612d8c565b909155506125b09050565b6001600160a01b0386166000908152601e602052604090205460ff1680156124a157506000601454115b15612503576064601454866124b69190612e78565b6124c09190612f2a565b9050601454601654826124d39190612e78565b6124dd9190612f2a565b601860008282546124ee9190612d8c565b90915550506014546015546124519083612e78565b6001600160a01b0387166000908152601e602052604090205460ff16801561252d57506000601954115b156125b0576064601954866125429190612e78565b61254c9190612f2a565b9050601954601b548261255f9190612e78565b6125699190612f2a565b6018600082825461257a9190612d8c565b9091555050601954601a5461258f9083612e78565b6125999190612f2a565b601760008282546125aa9190612d8c565b90915550505b80156125c1576125c1873083612772565b6125cb8186612f17565b94505b6125d9878787612772565b50505050505050565b6001600160a01b0382166000908152601e60205260409020805460ff191682151517905561133a82826128c7565b600061261b30610de3565b9050600060175460185461262f9190612d8c565b905081158061263c575080155b15612645575050565b60085461265390600a612e78565b82111561266b5760085461266890600a612e78565b91505b6000806002836018548661267f9190612e78565b6126899190612f2a565b6126939190612f2a565b90506126a76126a28286612f17565b61292a565b601854479081906000906126bd90600290612f2a565b6126c79087612f17565b6017546126d49085612e78565b6126de9190612f2a565b90506126ea8183612f17565b60006018819055601755915083158015906127055750600082115b15612714576127148483612a84565b6009546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612761576040519150601f19603f3d011682016040523d82523d6000602084013e612766565b606091505b50505050505050505050565b6001600160a01b0383166127985760405162461bcd60e51b8152600401610a8f90612e8f565b6001600160a01b0382166127be5760405162461bcd60e51b8152600401610a8f90612ed4565b6001600160a01b038316600090815260208190526040902054818110156128365760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a8f565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061286d908490612d8c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128b991815260200190565b60405180910390a350505050565b6001600160a01b0382166000818152601d6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061295f5761295f612f4c565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156129b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129dc9190612f62565b816001815181106129ef576129ef612f4c565b6001600160a01b039283166020918202929092010152600654612a1591309116846119e1565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612a4e908590600090869030904290600401612f7f565b600060405180830381600087803b158015612a6857600080fd5b505af1158015612a7c573d6000803e3d6000fd5b505050505050565b600654612a9c9030906001600160a01b0316846119e1565b60065460095460405163f305d71960e01b81526001600160a01b039283169263f305d719928592612adc9230928992600092839216904290600401612e0f565b60606040518083038185885af1158015612afa573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b1f9190612e4a565b5050505050565b6001600160a01b0381168114612b3b57600080fd5b50565b600060208284031215612b5057600080fd5b8135612b5b81612b26565b9392505050565b60008060408385031215612b7557600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015612bb157858101830151858201604001528201612b95565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215612be557600080fd5b8235612bf081612b26565b946020939093013593505050565b8015158114612b3b57600080fd5b600060208284031215612c1e57600080fd5b8135612b5b81612bfe565b600080600060608486031215612c3e57600080fd5b8335612c4981612b26565b92506020840135612c5981612b26565b929592945050506040919091013590565b600081518084526020808501945080840160005b83811015612ca35781516001600160a01b031687529582019590820190600101612c7e565b509495945050505050565b602081526000612b5b6020830184612c6a565b60008060408385031215612cd457600080fd5b8235612cdf81612b26565b91506020830135612cef81612bfe565b809150509250929050565b600060208284031215612d0c57600080fd5b5035919050565b60008060408385031215612d2657600080fd5b8235612d3181612b26565b91506020830135612cef81612b26565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b5657610b56612d76565b600181811c90821680612db357607f821691505b602082108103612dd357634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612deb57600080fd5b5051919050565b600060208284031215612e0457600080fd5b8151612b5b81612bfe565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215612e5f57600080fd5b8351925060208401519150604084015190509250925092565b8082028115828204841417610b5657610b56612d76565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610b5657610b56612d76565b600082612f4757634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612f7457600080fd5b8151612b5b81612b26565b85815284602082015260a060408201526000612f9e60a0830186612c6a565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220be27050cbfca6250e296f5cd15c03605afdbbb789729b3225e5c340e4f251d9364736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x60806040526004361061037a5760003560e01c806382aa7c68116101d1578063c024666811610102578063e884f260116100a0578063f5648a4f1161006f578063f5648a4f14610a04578063f637434214610a19578063f8b45b0514610a2f578063fed20c7814610a4557600080fd5b8063e884f260146109a3578063ee40166e146109b8578063f11a24d3146109ce578063f2fde38b146109e457600080fd5b8063d5fb5b17116100dc578063d5fb5b1714610911578063d85ba06314610931578063dd62ed3e14610947578063e2f456051461098d57600080fd5b8063c0246668146108b7578063c18bc195146108d7578063c876d0b9146108f757600080fd5b8063a457c2d71161016f578063b62496f511610149578063b62496f514610826578063b987553914610856578063bbc0c74214610876578063beee927d1461089757600080fd5b8063a457c2d7146107d0578063a62068ce146107f0578063a9059cbb1461080657600080fd5b80638da5cb5b116101ab5780638da5cb5b14610767578063921369131461078557806395d89b411461079b5780639a7a23d6146107b057600080fd5b806382aa7c68146107115780638366e79a1461073157806388e765ff1461075157600080fd5b8063452ed4f1116102ab5780636b0a894c116102495780637571336a116102235780637571336a1461069b57806375f0a874146106bb5780637bce5a04146106db5780637e926b4b146106f157600080fd5b80636b0a894c146106445780636ddd17131461065a57806370a082311461067b57600080fd5b806366ca9b831161028557806366ca9b83146105d657806366d602ae146105f65780636a11afc61461060c5780636a486a8e1461062e57600080fd5b8063452ed4f11461057e5780634a62bb651461059e57806358a6d531146105bf57600080fd5b806318160ddd1161031857806323b872dd116102f257806323b872dd14610502578063243c20f714610522578063313ce56714610542578063395093511461055e57600080fd5b806318160ddd146104b75780631a8145bb146104d65780631f3fed8f146104ec57600080fd5b80630758d924116103545780630758d9241461040f578063095ea7b31461044757806310d5de5314610467578063142e9ab81461049757600080fd5b8063017e01921461038657806302dbd8f8146103cb57806306fdde03146103ed57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b506103b66103a1366004612b3e565b600c6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156103d757600080fd5b506103eb6103e6366004612b62565b610a65565b005b3480156103f957600080fd5b50610402610ab3565b6040516103c29190612b84565b34801561041b57600080fd5b5060065461042f906001600160a01b031681565b6040516001600160a01b0390911681526020016103c2565b34801561045357600080fd5b506103b6610462366004612bd2565b610b45565b34801561047357600080fd5b506103b6610482366004612b3e565b601d6020526000908152604090205460ff1681565b3480156104a357600080fd5b506103eb6104b2366004612c0c565b610b5c565b3480156104c357600080fd5b506002545b6040519081526020016103c2565b3480156104e257600080fd5b506104c860185481565b3480156104f857600080fd5b506104c860175481565b34801561050e57600080fd5b506103b661051d366004612c29565b610ba0565b34801561052e57600080fd5b506103eb61053d366004612b3e565b610c4a565b34801561054e57600080fd5b50604051601281526020016103c2565b34801561056a57600080fd5b506103b6610579366004612bd2565b610d01565b34801561058a57600080fd5b5060075461042f906001600160a01b031681565b3480156105aa57600080fd5b506009546103b690600160a01b900460ff1681565b3480156105cb57600080fd5b5060105443106103b6565b3480156105e257600080fd5b506103eb6105f1366004612b62565b610d3d565b34801561060257600080fd5b506104c860125481565b34801561061857600080fd5b50610621610d82565b6040516103c29190612cae565b34801561063a57600080fd5b506104c860145481565b34801561065057600080fd5b506104c8600e5481565b34801561066657600080fd5b506009546103b690600160b01b900460ff1681565b34801561068757600080fd5b506104c8610696366004612b3e565b610de3565b3480156106a757600080fd5b506103eb6106b6366004612cc1565b610dfe565b3480156106c757600080fd5b5060095461042f906001600160a01b031681565b3480156106e757600080fd5b506104c8601a5481565b3480156106fd57600080fd5b506103eb61070c366004612c0c565b610ec6565b34801561071d57600080fd5b506103eb61072c366004612cfa565b610f88565b34801561073d57600080fd5b506103b661074c366004612d13565b6110c2565b34801561075d57600080fd5b506104c860115481565b34801561077357600080fd5b506005546001600160a01b031661042f565b34801561079157600080fd5b506104c860155481565b3480156107a757600080fd5b50610402611273565b3480156107bc57600080fd5b506103eb6107cb366004612cc1565b611282565b3480156107dc57600080fd5b506103b66107eb366004612bd2565b611376565b3480156107fc57600080fd5b506104c860105481565b34801561081257600080fd5b506103b6610821366004612bd2565b61140f565b34801561083257600080fd5b506103b6610841366004612b3e565b601e6020526000908152604090205460ff1681565b34801561086257600080fd5b506103eb610871366004612c0c565b61141c565b34801561088257600080fd5b506009546103b690600160a81b900460ff1681565b3480156108a357600080fd5b506103eb6108b2366004612b62565b61167a565b3480156108c357600080fd5b506103eb6108d2366004612cc1565b6116ac565b3480156108e357600080fd5b506103eb6108f2366004612cfa565b611735565b34801561090357600080fd5b50600b546103b69060ff1681565b34801561091d57600080fd5b5061042f61092c366004612cfa565b611777565b34801561093d57600080fd5b506104c860195481565b34801561095357600080fd5b506104c8610962366004612d13565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561099957600080fd5b506104c860085481565b3480156109af57600080fd5b506103eb6117a1565b3480156109c457600080fd5b506104c8600f5481565b3480156109da57600080fd5b506104c8601b5481565b3480156109f057600080fd5b506103eb6109ff366004612b3e565b6117d7565b348015610a1057600080fd5b506103eb6118c2565b348015610a2557600080fd5b506104c860165481565b348015610a3b57600080fd5b506104c860135481565b348015610a5157600080fd5b506103eb610a60366004612b3e565b61192e565b6005546001600160a01b03163314610a985760405162461bcd60e51b8152600401610a8f90612d41565b60405180910390fd5b60158290556016819055610aac8183612d8c565b6014555050565b606060038054610ac290612d9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610aee90612d9f565b8015610b3b5780601f10610b1057610100808354040283529160200191610b3b565b820191906000526020600020905b815481529060010190602001808311610b1e57829003601f168201915b5050505050905090565b6000610b523384846119e1565b5060015b92915050565b6005546001600160a01b03163314610b865760405162461bcd60e51b8152600401610a8f90612d41565b600b80549115156101000261ff0019909216919091179055565b6000610bad848484611b05565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c325760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a8f565b610c3f85338584036119e1565b506001949350505050565b6005546001600160a01b03163314610c745760405162461bcd60e51b8152600401610a8f90612d41565b6001600160a01b0381166000908152600c602052604090205460ff1615610cdd5760405162461bcd60e51b815260206004820152601a60248201527f57616c6c657420697320616c726561647920666c61676765642e0000000000006044820152606401610a8f565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b52918590610d38908690612d8c565b6119e1565b6005546001600160a01b03163314610d675760405162461bcd60e51b8152600401610a8f90612d41565b601a829055601b819055610d7b8183612d8c565b6019555050565b6060600d805480602002602001604051908101604052809291908181526020018280548015610b3b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610dbc575050505050905090565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610e285760405162461bcd60e51b8152600401610a8f90612d41565b80610e9b576007546001600160a01b0390811690831603610e9b5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610a8f565b6001600160a01b03919091166000908152601d60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ef05760405162461bcd60e51b8152600401610a8f90612d41565b80610f3d5760405162461bcd60e51b815260206004820152601860248201527f506c6561736520636f6e6669726d2072656e6f756e63652100000000000000006044820152606401610a8f565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350600580546001600160a01b0319169055565b6005546001600160a01b03163314610fb25760405162461bcd60e51b8152600401610a8f90612d41565b600954600160a81b900460ff161561100c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610a8f565b600a81111561106d5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206d616b652070656e616c747920626c6f636b73206d6f72652060448201526607468616e2031360cc1b6064820152608401610a8f565b6009805461ffff60a81b191661010160a81b17905543600f819055611093908290612d8c565b6010556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a150565b6005546000906001600160a01b031633146110ef5760405162461bcd60e51b8152600401610a8f90612d41565b6001600160a01b0383166111455760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610a8f565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa15801561118c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b09190612dd9565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611203573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112279190612df2565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b606060048054610ac290612d9f565b6005546001600160a01b031633146112ac5760405162461bcd60e51b8152600401610a8f90612d41565b6007546001600160a01b03908116908316036113305760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a8f565b61133a82826125e2565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156113f85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a8f565b61140533858584036119e1565b5060019392505050565b6000610b52338484611b05565b6005546001600160a01b031633146114465760405162461bcd60e51b8152600401610a8f90612d41565b806114935760405162461bcd60e51b815260206004820152601f60248201527f506c6561736520636f6e6669726d20616464696e67206f6620746865204c50006044820152606401610a8f565b600954600160a81b900460ff16156115015760405162461bcd60e51b815260206004820152602b60248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201526a3a103932b630bab731b41760a91b6064820152608401610a8f565b6000471161155d5760405162461bcd60e51b815260206004820152602360248201527f4d757374206861766520455448206f6e20636f6e747261637420746f206c61756044820152620dcc6d60eb1b6064820152608401610a8f565b600061156830610de3565b116115c45760405162461bcd60e51b815260206004820152602660248201527f4d757374206861766520546f6b656e73206f6e20636f6e747261637420746f206044820152650d8c2eadcc6d60d31b6064820152608401610a8f565b6006546115df9030906001600160a01b0316610d3882610de3565b6006546001600160a01b031663f305d71947306115fb81610de3565b6009546040516001600160e01b031960e087901b16815261163193929160009182916001600160a01b0316904290600401612e0f565b60606040518083038185885af115801561164f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116749190612e4a565b50505050565b6005546001600160a01b031633146116a45760405162461bcd60e51b8152600401610a8f90612d41565b601255601155565b6005546001600160a01b031633146116d65760405162461bcd60e51b8152600401610a8f90612d41565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461175f5760405162461bcd60e51b8152600401610a8f90612d41565b61177181670de0b6b3a7640000612e78565b60135550565b600d818154811061178757600080fd5b6000918252602090912001546001600160a01b0316905081565b6005546001600160a01b031633146117cb5760405162461bcd60e51b8152600401610a8f90612d41565b600b805460ff19169055565b6005546001600160a01b031633146118015760405162461bcd60e51b8152600401610a8f90612d41565b6001600160a01b0381166118665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a8f565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146118ec5760405162461bcd60e51b8152600401610a8f90612d41565b604051600090339047908381818185875af1925050503d8060008114611674576040519150601f19603f3d011682016040523d82523d6000602084013e611674565b6005546001600160a01b031633146119585760405162461bcd60e51b8152600401610a8f90612d41565b6001600160a01b0381166000908152600c602052604090205460ff166119c05760405162461bcd60e51b815260206004820152601e60248201527f57616c6c657420697320616c7265616479206e6f7420666c61676765642e00006044820152606401610a8f565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6001600160a01b038316611a435760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a8f565b6001600160a01b038216611aa45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a8f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b2b5760405162461bcd60e51b8152600401610a8f90612e8f565b6001600160a01b038216611b515760405162461bcd60e51b8152600401610a8f90612ed4565b60008111611ba15760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610a8f565b600954600160a81b900460ff16611c36576001600160a01b0383166000908152601c602052604090205460ff1680611bf157506001600160a01b0382166000908152601c602052604090205460ff165b611c365760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a8f565b6010544310158015611c515750600954600160a81b900460ff165b15611d21576001600160a01b0383166000908152600c602052604090205460ff161580611c8b57506005546001600160a01b038381169116145b80611ca057506001600160a01b03821661dead145b611d215760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610a8f565b600954600160a01b900460ff1615612150576005546001600160a01b03848116911614801590611d5f57506005546001600160a01b03838116911614155b8015611d7657506001600160a01b03821661dead14155b8015611d9b57506001600160a01b0383166000908152601c602052604090205460ff16155b8015611dc057506001600160a01b0382166000908152601c602052604090205460ff16155b1561215057600b5460ff1615611ed9576006546001600160a01b03838116911614801590611dfc57506007546001600160a01b03838116911614155b15611ed957611e0c600243612f17565b326000908152600a6020526040902054108015611e4a5750611e2f600243612f17565b6001600160a01b0383166000908152600a6020526040902054105b611eb45760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610a8f565b326000908152600a602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383166000908152601e602052604090205460ff168015611f1a57506001600160a01b0382166000908152601d602052604090205460ff16155b15611fe157601154811115611f825760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610a8f565b601354611f8e83610de3565b611f989083612d8c565b1115611fdc5760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610a8f565b612150565b6001600160a01b0382166000908152601e602052604090205460ff16801561202257506001600160a01b0383166000908152601d602052604090205460ff16155b156120d657600b54610100900460ff166120715760405162461bcd60e51b815260206004820152601060248201526f14d95b1b1a5b99c8191a5cd8589b195960821b6044820152606401610a8f565b601254811115611fdc5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610a8f565b6001600160a01b0382166000908152601d602052604090205460ff166121505760135461210283610de3565b61210c9083612d8c565b11156121505760405162461bcd60e51b815260206004820152601360248201527213585e0815d85b1b195d08115e18d959591959606a1b6044820152606401610a8f565b600061215b30610de3565b6008549091508110801590819061217b5750600954600160b01b900460ff165b80156121915750600754600160a01b900460ff16155b80156121b557506001600160a01b0384166000908152601e602052604090205460ff165b156121e3576007805460ff60a01b1916600160a01b1790556121d5612610565b6007805460ff60a01b191690555b6001600160a01b0385166000908152601c602052604090205460019060ff168061222557506001600160a01b0385166000908152601c602052604090205460ff165b1561222e575060005b600081156125ce576010544310806122745750670c7d713b49da00006011546122579190612f17565b851015801561227457504360105460086122719190612d8c565b10155b801561229857506001600160a01b0387166000908152601e602052604090205460ff165b80156122bd57506001600160a01b0386166000908152601e602052604090205460ff16155b80156122e257506001600160a01b0386166000908152601c602052604090205460ff16155b80156122f057506000601954115b15612477576010544310612317576001601160008282546123119190612f17565b90915550505b6001600160a01b0386166000908152600c602052604090205460ff166123f7576001600160a01b0386166000908152600c60205260408120805460ff19166001908117909155600e805491929091612370908490612d8c565b9091555050600d80546001810182556000919091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319166001600160a01b0388169081179091556040519081527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b6064612404866063612e78565b61240e9190612f2a565b9050601954601b54826124219190612e78565b61242b9190612f2a565b6018600082825461243c9190612d8c565b9091555050601954601a546124519083612e78565b61245b9190612f2a565b6017600082825461246c9190612d8c565b909155506125b09050565b6001600160a01b0386166000908152601e602052604090205460ff1680156124a157506000601454115b15612503576064601454866124b69190612e78565b6124c09190612f2a565b9050601454601654826124d39190612e78565b6124dd9190612f2a565b601860008282546124ee9190612d8c565b90915550506014546015546124519083612e78565b6001600160a01b0387166000908152601e602052604090205460ff16801561252d57506000601954115b156125b0576064601954866125429190612e78565b61254c9190612f2a565b9050601954601b548261255f9190612e78565b6125699190612f2a565b6018600082825461257a9190612d8c565b9091555050601954601a5461258f9083612e78565b6125999190612f2a565b601760008282546125aa9190612d8c565b90915550505b80156125c1576125c1873083612772565b6125cb8186612f17565b94505b6125d9878787612772565b50505050505050565b6001600160a01b0382166000908152601e60205260409020805460ff191682151517905561133a82826128c7565b600061261b30610de3565b9050600060175460185461262f9190612d8c565b905081158061263c575080155b15612645575050565b60085461265390600a612e78565b82111561266b5760085461266890600a612e78565b91505b6000806002836018548661267f9190612e78565b6126899190612f2a565b6126939190612f2a565b90506126a76126a28286612f17565b61292a565b601854479081906000906126bd90600290612f2a565b6126c79087612f17565b6017546126d49085612e78565b6126de9190612f2a565b90506126ea8183612f17565b60006018819055601755915083158015906127055750600082115b15612714576127148483612a84565b6009546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612761576040519150601f19603f3d011682016040523d82523d6000602084013e612766565b606091505b50505050505050505050565b6001600160a01b0383166127985760405162461bcd60e51b8152600401610a8f90612e8f565b6001600160a01b0382166127be5760405162461bcd60e51b8152600401610a8f90612ed4565b6001600160a01b038316600090815260208190526040902054818110156128365760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a8f565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061286d908490612d8c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128b991815260200190565b60405180910390a350505050565b6001600160a01b0382166000818152601d6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061295f5761295f612f4c565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156129b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129dc9190612f62565b816001815181106129ef576129ef612f4c565b6001600160a01b039283166020918202929092010152600654612a1591309116846119e1565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612a4e908590600090869030904290600401612f7f565b600060405180830381600087803b158015612a6857600080fd5b505af1158015612a7c573d6000803e3d6000fd5b505050505050565b600654612a9c9030906001600160a01b0316846119e1565b60065460095460405163f305d71960e01b81526001600160a01b039283169263f305d719928592612adc9230928992600092839216904290600401612e0f565b60606040518083038185885af1158015612afa573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b1f9190612e4a565b5050505050565b6001600160a01b0381168114612b3b57600080fd5b50565b600060208284031215612b5057600080fd5b8135612b5b81612b26565b9392505050565b60008060408385031215612b7557600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015612bb157858101830151858201604001528201612b95565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215612be557600080fd5b8235612bf081612b26565b946020939093013593505050565b8015158114612b3b57600080fd5b600060208284031215612c1e57600080fd5b8135612b5b81612bfe565b600080600060608486031215612c3e57600080fd5b8335612c4981612b26565b92506020840135612c5981612b26565b929592945050506040919091013590565b600081518084526020808501945080840160005b83811015612ca35781516001600160a01b031687529582019590820190600101612c7e565b509495945050505050565b602081526000612b5b6020830184612c6a565b60008060408385031215612cd457600080fd5b8235612cdf81612b26565b91506020830135612cef81612bfe565b809150509250929050565b600060208284031215612d0c57600080fd5b5035919050565b60008060408385031215612d2657600080fd5b8235612d3181612b26565b91506020830135612cef81612b26565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b5657610b56612d76565b600181811c90821680612db357607f821691505b602082108103612dd357634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612deb57600080fd5b5051919050565b600060208284031215612e0457600080fd5b8151612b5b81612bfe565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215612e5f57600080fd5b8351925060208401519150604084015190509250925092565b8082028115828204841417610b5657610b56612d76565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610b5657610b56612d76565b600082612f4757634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612f7457600080fd5b8151612b5b81612b26565b85815284602082015260a060408201526000612f9e60a0830186612c6a565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220be27050cbfca6250e296f5cd15c03605afdbbb789729b3225e5c340e4f251d9364736f6c63430008130033

Deployed Bytecode Sourcemap

10687:17131:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11174:44;;;;;;;;;;-1:-1:-1;11174:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;567:14:1;;560:22;542:41;;530:2;515:18;11174:44:0;;;;;;;;16985:264;;;;;;;;;;-1:-1:-1;16985:264:0;;;;;:::i;:::-;;:::i;:::-;;4023:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10725:27::-;;;;;;;;;;-1:-1:-1;10725:27:0;;;;-1:-1:-1;;;;;10725:27:0;;;;;;-1:-1:-1;;;;;1582:32:1;;;1564:51;;1552:2;1537:18;10725:27:0;1400:221:1;5080:210:0;;;;;;;;;;-1:-1:-1;5080:210:0;;;;;:::i;:::-;;:::i;11840:63::-;;;;;;;;;;-1:-1:-1;11840:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15769:132;;;;;;;;;;-1:-1:-1;15769:132:0;;;;;:::i;:::-;;:::i;4344:108::-;;;;;;;;;;-1:-1:-1;4432:12:0;;4344:108;;;2461:25:1;;;2449:2;2434:18;4344:108:0;2315:177:1;11625:33:0;;;;;;;;;;;;;;;;11585;;;;;;;;;;;;;;;;6093:529;;;;;;;;;;-1:-1:-1;6093:529:0;;;;;:::i;:::-;;:::i;14923:169::-;;;;;;;;;;-1:-1:-1;14923:169:0;;;;;:::i;:::-;;:::i;4243:93::-;;;;;;;;;;-1:-1:-1;4243:93:0;;4326:2;3100:36:1;;3088:2;3073:18;4243:93:0;2958:184:1;5298:297:0;;;;;;;;;;-1:-1:-1;5298:297:0;;;;;:::i;:::-;;:::i;10759:21::-;;;;;;;;;;-1:-1:-1;10759:21:0;;;;-1:-1:-1;;;;;10759:21:0;;;10894:33;;;;;;;;;;-1:-1:-1;10894:33:0;;;;-1:-1:-1;;;10894:33:0;;;;;;23291:121;;;;;;;;;;-1:-1:-1;23386:18:0;;23371:12;:33;23291:121;;15100:258;;;;;;;;;;-1:-1:-1;15100:258:0;;;;;:::i;:::-;;:::i;11408:28::-;;;;;;;;;;;;;;;;14387:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11474:28::-;;;;;;;;;;;;;;;;11258:25;;;;;;;;;;;;;;;;10974:31;;;;;;;;;;-1:-1:-1;10974:31:0;;;;-1:-1:-1;;;10974:31:0;;;;;;4686:177;;;;;;;;;;-1:-1:-1;4686:177:0;;;;;:::i;:::-;;:::i;16282:334::-;;;;;;;;;;-1:-1:-1;16282:334:0;;;;;:::i;:::-;;:::i;10855:30::-;;;;;;;;;;-1:-1:-1;10855:30:0;;;;-1:-1:-1;;;;;10855:30:0;;;11699;;;;;;;;;;;;;;;;8557:265;;;;;;;;;;-1:-1:-1;8557:265:0;;;;;:::i;:::-;;:::i;26471:464::-;;;;;;;;;;-1:-1:-1;26471:464:0;;;;;:::i;:::-;;:::i;25795:413::-;;;;;;;;;;-1:-1:-1;25795:413:0;;;;;:::i;:::-;;:::i;11374:27::-;;;;;;;;;;;;;;;;8343:79;;;;;;;;;;-1:-1:-1;8408:6:0;;-1:-1:-1;;;;;8408:6:0;8343:79;;11509:31;;;;;;;;;;;;;;;;4131:104;;;;;;;;;;;;;:::i;16624:353::-;;;;;;;;;;-1:-1:-1;16624:353:0;;;;;:::i;:::-;;:::i;5603:482::-;;;;;;;;;;-1:-1:-1;5603:482:0;;;;;:::i;:::-;;:::i;11334:33::-;;;;;;;;;;;;;;;;4460:216;;;;;;;;;;-1:-1:-1;4460:216:0;;;;;:::i;:::-;;:::i;11910:57::-;;;;;;;;;;-1:-1:-1;11910:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26943:872;;;;;;;;;;-1:-1:-1;26943:872:0;;;;;:::i;:::-;;:::i;10934:33::-;;;;;;;;;;-1:-1:-1;10934:33:0;;;;-1:-1:-1;;;10934:33:0;;;;;;15366:193;;;;;;;;;;-1:-1:-1;15366:193:0;;;;;:::i;:::-;;:::i;17257:182::-;;;;;;;;;;-1:-1:-1;17257:182:0;;;;;:::i;:::-;;:::i;16138:136::-;;;;;;;;;;-1:-1:-1;16138:136:0;;;;;:::i;:::-;;:::i;11085:39::-;;;;;;;;;;-1:-1:-1;11085:39:0;;;;;;;;11225:26;;;;;;;;;;-1:-1:-1;11225:26:0;;;;;:::i;:::-;;:::i;11665:27::-;;;;;;;;;;;;;;;;4871:201;;;;;;;;;;-1:-1:-1;4871:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;5037:18:0;;;5005:7;5037:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4871:201;10815:33;;;;;;;;;;;;;;;;15567:98;;;;;;;;;;;;;:::i;11290:37::-;;;;;;;;;;;;;;;;11736:30;;;;;;;;;;;;;;;;8830:281;;;;;;;;;;-1:-1:-1;8830:281:0;;;;;:::i;:::-;;:::i;26278:185::-;;;;;;;;;;;;;:::i;11547:31::-;;;;;;;;;;;;;;;;11443:24;;;;;;;;;;;;;;;;14495:175;;;;;;;;;;-1:-1:-1;14495:175:0;;;;;:::i;:::-;;:::i;16985:264::-;8470:6;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;;;;;;;;;17106:16:::1;:30:::0;;;17147:16:::1;:32:::0;;;17206:35:::1;17166:13:::0;17125:11;17206:35:::1;:::i;:::-;17190:13;:51:::0;-1:-1:-1;;16985:264:0:o;4023:100::-;4077:13;4110:5;4103:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:100;:::o;5080:210::-;5199:4;5221:39;2925:10;5244:7;5253:6;5221:8;:39::i;:::-;-1:-1:-1;5278:4:0;5080:210;;;;;:::o;15769:132::-;8470:6;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;15847:14:::1;:36:::0;;;::::1;;;;-1:-1:-1::0;;15847:36:0;;::::1;::::0;;;::::1;::::0;;15769:132::o;6093:529::-;6233:4;6250:36;6260:6;6268:9;6279:6;6250:9;:36::i;:::-;-1:-1:-1;;;;;6326:19:0;;6299:24;6326:19;;;:11;:19;;;;;;;;2925:10;6326:33;;;;;;;;6392:26;;;;6370:116;;;;-1:-1:-1;;;6370:116:0;;6262:2:1;6370:116:0;;;6244:21:1;6301:2;6281:18;;;6274:30;6340:34;6320:18;;;6313:62;-1:-1:-1;;;6391:18:1;;;6384:38;6439:19;;6370:116:0;6060:404:1;6370:116:0;6522:57;6531:6;2925:10;6572:6;6553:16;:25;6522:8;:57::i;:::-;-1:-1:-1;6610:4:0;;6093:529;-1:-1:-1;;;;6093:529:0:o;14923:169::-;8470:6;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14995:20:0;::::1;;::::0;;;:12:::1;:20;::::0;;;;;::::1;;14994:21;14986:60;;;::::0;-1:-1:-1;;;14986:60:0;;6671:2:1;14986:60:0::1;::::0;::::1;6653:21:1::0;6710:2;6690:18;;;6683:30;6749:28;6729:18;;;6722:56;6795:18;;14986:60:0::1;6469:350:1::0;14986:60:0::1;-1:-1:-1::0;;;;;15057:20:0::1;;::::0;;;:12:::1;:20;::::0;;;;:27;;-1:-1:-1;;15057:27:0::1;15080:4;15057:27;::::0;;14923:169::o;5298:297::-;2925:10;5413:4;5507:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5507:34:0;;;;;;;;;;5413:4;;5435:130;;5485:7;;5507:47;;5544:10;;5507:47;:::i;:::-;5435:8;:130::i;15100:258::-;8470:6;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;15220:15:::1;:29:::0;;;15260:15:::1;:31:::0;;;15317:33:::1;15278:13:::0;15238:11;15317:33:::1;:::i;:::-;15302:12;:48:::0;-1:-1:-1;;15100:258:0:o;14387:100::-;14434:16;14470:9;14463:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14463:16:0;;;;;;;;;;;;;;;;;;;;;;14387:100;:::o;4686:177::-;-1:-1:-1;;;;;4837:18:0;4805:7;4837:18;;;;;;;;;;;;4686:177::o;16282:334::-;8470:6;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;16402:4:::1;16397:155;;16459:6;::::0;-1:-1:-1;;;;;16459:6:0;;::::1;16449:16:::0;;::::1;::::0;16423:117:::1;;;::::0;-1:-1:-1;;;16423:117:0;;7026:2:1;16423:117:0::1;::::0;::::1;7008:21:1::0;7065:2;7045:18;;;7038:30;7104:34;7084:18;;;7077:62;-1:-1:-1;;;7155:18:1;;;7148:37;7202:19;;16423:117:0::1;6824:403:1::0;16423:117:0::1;-1:-1:-1::0;;;;;16562:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;16562:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16282:334::o;8557:265::-;8470:6;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;8684:15:::1;8676:52;;;::::0;-1:-1:-1;;;8676:52:0;;7434:2:1;8676:52:0::1;::::0;::::1;7416:21:1::0;7473:2;7453:18;;;7446:30;7512:26;7492:18;;;7485:54;7556:18;;8676:52:0::1;7232:348:1::0;8676:52:0::1;8765:6;::::0;8744:40:::1;::::0;8781:1:::1;::::0;-1:-1:-1;;;;;8765:6:0::1;::::0;8744:40:::1;::::0;8781:1;;8744:40:::1;-1:-1:-1::0;8795:6:0::1;:19:::0;;-1:-1:-1;;;;;;8795:19:0::1;::::0;;8557:265::o;26471:464::-;8470:6;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;26559:13:::1;::::0;-1:-1:-1;;;26559:13:0;::::1;;;26558:14;26550:50;;;::::0;-1:-1:-1;;;26550:50:0;;7787:2:1;26550:50:0::1;::::0;::::1;7769:21:1::0;7826:2;7806:18;;;7799:30;7865:25;7845:18;;;7838:53;7908:18;;26550:50:0::1;7585:347:1::0;26550:50:0::1;26653:2;26633:16;:22;;26611:111;;;::::0;-1:-1:-1;;;26611:111:0;;8139:2:1;26611:111:0::1;::::0;::::1;8121:21:1::0;8178:2;8158:18;;;8151:30;8217:34;8197:18;;;8190:62;-1:-1:-1;;;8268:18:1;;;8261:37;8315:19;;26611:111:0::1;7937:403:1::0;26611:111:0::1;26733:13;:20:::0;;-1:-1:-1;;;;26764:18:0;-1:-1:-1;;;26764:18:0;;;26814:12:::1;26793:18;:33:::0;;;26858:37:::1;::::0;26879:16;;26858:37:::1;:::i;:::-;26837:18;:58:::0;26911:16:::1;::::0;::::1;::::0;;;::::1;26471:464:::0;:::o;25795:413::-;8470:6;;25909:10;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25945:20:0;::::1;25937:59;;;::::0;-1:-1:-1;;;25937:59:0;;8547:2:1;25937:59:0::1;::::0;::::1;8529:21:1::0;8586:2;8566:18;;;8559:30;8625:28;8605:18;;;8598:56;8671:18;;25937:59:0::1;8345:350:1::0;25937:59:0::1;26034:39;::::0;-1:-1:-1;;;26034:39:0;;26067:4:::1;26034:39;::::0;::::1;1564:51:1::0;26007:24:0::1;::::0;-1:-1:-1;;;;;26034:24:0;::::1;::::0;::::1;::::0;1537:18:1;;26034:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26092:46;::::0;-1:-1:-1;;;26092:46:0;;-1:-1:-1;;;;;9081:32:1;;;26092:46:0::1;::::0;::::1;9063:51:1::0;9130:18;;;9123:34;;;26007:66:0;;-1:-1:-1;26092:23:0;;::::1;::::0;::::1;::::0;9036:18:1;;26092:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26154;::::0;;-1:-1:-1;;;;;9081:32:1;;9063:51;;9145:2;9130:18;;9123:34;;;26084:54:0;;-1:-1:-1;26154:46:0::1;::::0;9036:18:1;26154:46:0::1;;;;;;;25926:282;25795:413:::0;;;;:::o;4131:104::-;4187:13;4220:7;4213:14;;;;;:::i;16624:353::-;8470:6;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;16770:6:::1;::::0;-1:-1:-1;;;;;16770:6:0;;::::1;16762:14:::0;;::::1;::::0;16740:121:::1;;;::::0;-1:-1:-1;;;16740:121:0;;9620:2:1;16740:121:0::1;::::0;::::1;9602:21:1::0;9659:2;9639:18;;;9632:30;9698:34;9678:18;;;9671:62;9769:27;9749:18;;;9742:55;9814:19;;16740:121:0::1;9418:421:1::0;16740:121:0::1;16872:41;16901:4;16907:5;16872:28;:41::i;:::-;16929:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;16929:40:0;::::1;::::0;::::1;::::0;;;::::1;16624:353:::0;;:::o;5603:482::-;2925:10;5723:4;5772:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5772:34:0;;;;;;;;;;5839:35;;;;5817:122;;;;-1:-1:-1;;;5817:122:0;;10046:2:1;5817:122:0;;;10028:21:1;10085:2;10065:18;;;10058:30;10124:34;10104:18;;;10097:62;-1:-1:-1;;;10175:18:1;;;10168:35;10220:19;;5817:122:0;9844:401:1;5817:122:0;5975:67;2925:10;5998:7;6026:15;6007:16;:34;5975:8;:67::i;:::-;-1:-1:-1;6073:4:0;;5603:482;-1:-1:-1;;;5603:482:0:o;4460:216::-;4582:4;4604:42;2925:10;4628:9;4639:6;4604:9;:42::i;26943:872::-;8470:6;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;27015:12:::1;27007:56;;;::::0;-1:-1:-1;;;27007:56:0;;10452:2:1;27007:56:0::1;::::0;::::1;10434:21:1::0;10491:2;10471:18;;;10464:30;10530:33;10510:18;;;10503:61;10581:18;;27007:56:0::1;10250:355:1::0;27007:56:0::1;27083:13;::::0;-1:-1:-1;;;27083:13:0;::::1;;;27082:14;27074:70;;;::::0;-1:-1:-1;;;27074:70:0;;10812:2:1;27074:70:0::1;::::0;::::1;10794:21:1::0;10851:2;10831:18;;;10824:30;10890:34;10870:18;;;10863:62;-1:-1:-1;;;10941:18:1;;;10934:41;10992:19;;27074:70:0::1;10610:407:1::0;27074:70:0::1;27233:1;27209:21;:25;27187:110;;;::::0;-1:-1:-1;;;27187:110:0;;11224:2:1;27187:110:0::1;::::0;::::1;11206:21:1::0;11263:2;11243:18;;;11236:30;11302:34;11282:18;;;11275:62;-1:-1:-1;;;11353:18:1;;;11346:33;11396:19;;27187:110:0::1;11022:399:1::0;27187:110:0::1;27357:1;27330:24;27348:4;27330:9;:24::i;:::-;:28;27308:116;;;::::0;-1:-1:-1;;;27308:116:0;;11628:2:1;27308:116:0::1;::::0;::::1;11610:21:1::0;11667:2;11647:18;;;11640:30;11706:34;11686:18;;;11679:62;-1:-1:-1;;;11757:18:1;;;11750:36;11803:19;;27308:116:0::1;11426:402:1::0;27308:116:0::1;27469:9;::::0;27437:69:::1;::::0;27454:4:::1;::::0;-1:-1:-1;;;;;27469:9:0::1;27481:24;27454:4:::0;27481:9:::1;:24::i;27437:69::-;27519:9;::::0;-1:-1:-1;;;;;27519:9:0::1;:25;27552:21;27597:4;27617:24;27597:4:::0;27617:9:::1;:24::i;:::-;27750:15;::::0;27519:288:::1;::::0;-1:-1:-1;;;;;;27519:288:0::1;::::0;;;;;;::::1;::::0;;;27656:1:::1;::::0;;;-1:-1:-1;;;;;27750:15:0::1;::::0;27781::::1;::::0;27519:288:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26943:872:::0;:::o;15366:193::-;8470:6;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;15488:13:::1;:27:::0;15526:12:::1;:25:::0;15366:193::o;17257:182::-;8470:6;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17342:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;17342:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17397:34;;542:41:1;;;17397:34:0::1;::::0;515:18:1;17397:34:0::1;;;;;;;17257:182:::0;;:::o;16138:136::-;8470:6;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;16237:19:::1;:6:::0;16247:8:::1;16237:19;:::i;:::-;16225:9;:31:::0;-1:-1:-1;16138:136:0:o;11225:26::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11225:26:0;;-1:-1:-1;11225:26:0;:::o;15567:98::-;8470:6;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;15629:20:::1;:28:::0;;-1:-1:-1;;15629:28:0::1;::::0;;15567:98::o;8830:281::-;8470:6;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8933:22:0;::::1;8911:110;;;::::0;-1:-1:-1;;;8911:110:0;;13131:2:1;8911:110:0::1;::::0;::::1;13113:21:1::0;13170:2;13150:18;;;13143:30;13209:34;13189:18;;;13182:62;-1:-1:-1;;;13260:18:1;;;13253:36;13306:19;;8911:110:0::1;12929:402:1::0;8911:110:0::1;9058:6;::::0;9037:38:::1;::::0;-1:-1:-1;;;;;9037:38:0;;::::1;::::0;9058:6:::1;::::0;9037:38:::1;::::0;9058:6:::1;::::0;9037:38:::1;9086:6;:17:::0;;-1:-1:-1;;;;;;9086:17:0::1;-1:-1:-1::0;;;;;9086:17:0;;;::::1;::::0;;;::::1;::::0;;8830:281::o;26278:185::-;8470:6;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;26373:82:::1;::::0;26336:12:::1;::::0;26381:10:::1;::::0;26405:21:::1;::::0;26336:12;26373:82;26336:12;26373:82;26405:21;26381:10;26373:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14495:175:::0;8470:6;;-1:-1:-1;;;;;8470:6:0;2925:10;8470:22;8462:67;;;;-1:-1:-1;;;8462:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14568:20:0;::::1;;::::0;;;:12:::1;:20;::::0;;;;;::::1;;14560:63;;;::::0;-1:-1:-1;;;14560:63:0;;13748:2:1;14560:63:0::1;::::0;::::1;13730:21:1::0;13787:2;13767:18;;;13760:30;13826:32;13806:18;;;13799:60;13876:18;;14560:63:0::1;13546:354:1::0;14560:63:0::1;-1:-1:-1::0;;;;;14634:20:0::1;14657:5;14634:20:::0;;;:12:::1;:20;::::0;;;;:28;;-1:-1:-1;;14634:28:0::1;::::0;;14495:175::o;6952:380::-;-1:-1:-1;;;;;7088:19:0;;7080:68;;;;-1:-1:-1;;;7080:68:0;;14107:2:1;7080:68:0;;;14089:21:1;14146:2;14126:18;;;14119:30;14185:34;14165:18;;;14158:62;-1:-1:-1;;;14236:18:1;;;14229:34;14280:19;;7080:68:0;13905:400:1;7080:68:0;-1:-1:-1;;;;;7167:21:0;;7159:68;;;;-1:-1:-1;;;7159:68:0;;14512:2:1;7159:68:0;;;14494:21:1;14551:2;14531:18;;;14524:30;14590:34;14570:18;;;14563:62;-1:-1:-1;;;14641:18:1;;;14634:32;14683:19;;7159:68:0;14310:398:1;7159:68:0;-1:-1:-1;;;;;7240:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7292:32;;2461:25:1;;;7292:32:0;;2434:18:1;7292:32:0;;;;;;;6952:380;;;:::o;17447:5836::-;-1:-1:-1;;;;;17579:18:0;;17571:68;;;;-1:-1:-1;;;17571:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17658:16:0;;17650:64;;;;-1:-1:-1;;;17650:64:0;;;;;;;:::i;:::-;17742:1;17733:6;:10;17725:52;;;;-1:-1:-1;;;17725:52:0;;15725:2:1;17725:52:0;;;15707:21:1;15764:2;15744:18;;;15737:30;15803:31;15783:18;;;15776:59;15852:18;;17725:52:0;15523:353:1;17725:52:0;17795:13;;-1:-1:-1;;;17795:13:0;;;;17790:183;;-1:-1:-1;;;;;17851:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;17880:23:0;;;;;;:19;:23;;;;;;;;17851:52;17825:136;;;;-1:-1:-1;;;17825:136:0;;16083:2:1;17825:136:0;;;16065:21:1;16122:2;16102:18;;;16095:30;-1:-1:-1;;;16141:18:1;;;16134:52;16203:18;;17825:136:0;15881:346:1;17825:136:0;23386:18;;23371:12;:33;17989:26;:43;;;;-1:-1:-1;18019:13:0;;-1:-1:-1;;;18019:13:0;;;;17989:43;17985:269;;;-1:-1:-1;;;;;18076:18:0;;;;;;:12;:18;;;;;;;;18075:19;;:36;;-1:-1:-1;8408:6:0;;-1:-1:-1;;;;;18098:13:0;;;8408:6;;18098:13;18075:36;:61;;;-1:-1:-1;;;;;;18115:21:0;;18129:6;18115:21;18075:61;18049:193;;;;-1:-1:-1;;;18049:193:0;;16434:2:1;18049:193:0;;;16416:21:1;16473:2;16453:18;;;16446:30;16512:34;16492:18;;;16485:62;16583:34;16563:18;;;16556:62;-1:-1:-1;;;16634:19:1;;;16627:37;16681:19;;18049:193:0;16232:474:1;18049:193:0;18270:14;;-1:-1:-1;;;18270:14:0;;;;18266:2214;;;8408:6;;-1:-1:-1;;;;;18323:15:0;;;8408:6;;18323:15;;;;:49;;-1:-1:-1;8408:6:0;;-1:-1:-1;;;;;18359:13:0;;;8408:6;;18359:13;;18323:49;:91;;;;-1:-1:-1;;;;;;18393:21:0;;18407:6;18393:21;;18323:91;:138;;;;-1:-1:-1;;;;;;18436:25:0;;;;;;:19;:25;;;;;;;;18435:26;18323:138;:183;;;;-1:-1:-1;;;;;;18483:23:0;;;;;;:19;:23;;;;;;;;18482:24;18323:183;18301:2168;;;18545:20;;;;18541:692;;;18608:9;;-1:-1:-1;;;;;18594:24:0;;;18608:9;;18594:24;;;;:49;;-1:-1:-1;18636:6:0;;-1:-1:-1;;;;;18622:21:0;;;18636:6;;18622:21;;18594:49;18590:624;;;18785:16;18800:1;18785:12;:16;:::i;:::-;18739:9;18710:39;;;;:28;:39;;;;;;:91;:212;;;;-1:-1:-1;18906:16:0;18921:1;18906:12;:16;:::i;:::-;-1:-1:-1;;;;;18838:32:0;;;;;;:28;:32;;;;;;:84;18710:212;18672:363;;;;-1:-1:-1;;;18672:363:0;;17046:2:1;18672:363:0;;;17028:21:1;17085:2;17065:18;;;17058:30;17124:34;17104:18;;;17097:62;-1:-1:-1;;;17175:18:1;;;17168:51;17236:19;;18672:363:0;16844:417:1;18672:363:0;19091:9;19062:39;;;;:28;:39;;;;;;19104:12;19062:54;;;;-1:-1:-1;;;;;19143:32:0;;;;;;:47;18590:624;-1:-1:-1;;;;;19307:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;19364:35:0;;;;;;:31;:35;;;;;;;;19363:36;19307:92;19281:1173;;;19486:12;;19476:6;:22;;19442:148;;;;-1:-1:-1;;;19442:148:0;;17468:2:1;19442:148:0;;;17450:21:1;17507:2;17487:18;;;17480:30;17546:34;17526:18;;;17519:62;-1:-1:-1;;;17597:18:1;;;17590:38;17645:19;;19442:148:0;17266:404:1;19442:148:0;19673:9;;19656:13;19666:2;19656:9;:13::i;:::-;19647:22;;:6;:22;:::i;:::-;:35;;19613:140;;;;-1:-1:-1;;;19613:140:0;;17877:2:1;19613:140:0;;;17859:21:1;17916:2;17896:18;;;17889:30;-1:-1:-1;;;17935:18:1;;;17928:49;17994:18;;19613:140:0;17675:343:1;19613:140:0;19281:1173;;;-1:-1:-1;;;;;19851:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;19906:37:0;;;;;;:31;:37;;;;;;;;19905:38;19851:92;19825:629;;;19994:14;;;;;;;19986:43;;;;-1:-1:-1;;;19986:43:0;;18225:2:1;19986:43:0;;;18207:21:1;18264:2;18244:18;;;18237:30;-1:-1:-1;;;18283:18:1;;;18276:46;18339:18;;19986:43:0;18023:340:1;19986:43:0;20096:13;;20086:6;:23;;20052:151;;;;-1:-1:-1;;;20052:151:0;;18570:2:1;20052:151:0;;;18552:21:1;18609:2;18589:18;;;18582:30;18648:34;18628:18;;;18621:62;-1:-1:-1;;;18699:18:1;;;18692:40;18749:19;;20052:151:0;18368:406:1;19825:629:0;-1:-1:-1;;;;;20234:35:0;;;;;;:31;:35;;;;;;;;20229:225;;20354:9;;20337:13;20347:2;20337:9;:13::i;:::-;20328:22;;:6;:22;:::i;:::-;:35;;20294:140;;;;-1:-1:-1;;;20294:140:0;;17877:2:1;20294:140:0;;;17859:21:1;17916:2;17896:18;;;17889:30;-1:-1:-1;;;17935:18:1;;;17928:49;17994:18;;20294:140:0;17675:343:1;20294:140:0;20492:28;20523:24;20541:4;20523:9;:24::i;:::-;20599:18;;20492:55;;-1:-1:-1;20575:42:0;;;;;;;20648:22;;-1:-1:-1;20659:11:0;;-1:-1:-1;;;20659:11:0;;;;20648:22;:35;;;;-1:-1:-1;20675:8:0;;-1:-1:-1;;;20675:8:0;;;;20674:9;20648:35;:68;;;;-1:-1:-1;;;;;;20687:29:0;;;;;;:25;:29;;;;;;;;20648:68;20630:196;;;20743:8;:15;;-1:-1:-1;;;;20743:15:0;-1:-1:-1;;;20743:15:0;;;20773:10;:8;:10::i;:::-;20798:8;:16;;-1:-1:-1;;;;20798:16:0;;;20630:196;-1:-1:-1;;;;;20957:25:0;;20838:12;20957:25;;;:19;:25;;;;;;20853:4;;20957:25;;;:52;;-1:-1:-1;;;;;;20986:23:0;;;;;;:19;:23;;;;;;;;20957:52;20953:100;;;-1:-1:-1;21036:5:0;20953:100;21065:12;21170:7;21166:2064;;;23386:18;;23371:12;:33;21253:152;;;;21329:8;21314:12;;:23;;;;:::i;:::-;21304:6;:33;;:100;;;;;21392:12;21366:18;;21387:1;21366:22;;;;:::i;:::-;:38;;21304:100;21252:206;;;;-1:-1:-1;;;;;;21427:31:0;;;;;;:25;:31;;;;;;;;21252:206;:257;;;;-1:-1:-1;;;;;;21480:29:0;;;;;;:25;:29;;;;;;;;21479:30;21252:257;:302;;;;-1:-1:-1;;;;;;21531:23:0;;;;;;:19;:23;;;;;;;;21530:24;21252:302;:339;;;;;21590:1;21575:12;;:16;21252:339;21230:1851;;;23386:18;;23371:12;:33;21626:332;;21937:1;21921:12;;:17;;;;;;;:::i;:::-;;;;-1:-1:-1;;21626:332:0;-1:-1:-1;;;;;21983:16:0;;;;;;:12;:16;;;;;;;;21978:216;;-1:-1:-1;;;;;22024:16:0;;;;;;:12;:16;;;;;:23;;-1:-1:-1;;22024:23:0;22043:4;22024:23;;;;;;22070:10;:15;;22043:4;;22070:10;;:15;;22043:4;;22070:15;:::i;:::-;;;;-1:-1:-1;;22108:9:0;:18;;;;;;;-1:-1:-1;22108:18:0;;;;;;;;-1:-1:-1;;;;;;22108:18:0;-1:-1:-1;;;;;22108:18:0;;;;;;;;22154:20;;1564:51:1;;;22154:20:0;;1552:2:1;1537:18;22154:20:0;;;;;;;21978:216;22237:3;22222:11;:6;22231:2;22222:11;:::i;:::-;22221:19;;;;:::i;:::-;22214:26;;22308:12;;22289:15;;22282:4;:22;;;;:::i;:::-;22281:39;;;;:::i;:::-;22259:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;22388:12:0;;22369:15;;22362:22;;:4;:22;:::i;:::-;22361:39;;;;:::i;:::-;22339:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;21230:1851:0;;-1:-1:-1;21230:1851:0;;-1:-1:-1;;;;;22463:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;22512:1;22496:13;;:17;22463:50;22459:622;;;22568:3;22551:13;;22542:6;:22;;;;:::i;:::-;22541:30;;;;:::i;:::-;22534:37;;22640:13;;22620:16;;22613:4;:23;;;;:::i;:::-;22612:41;;;;:::i;:::-;22590:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;22722:13:0;;22702:16;;22695:23;;:4;:23;:::i;22459:622::-;-1:-1:-1;;;;;22797:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;22847:1;22832:12;;:16;22797:51;22793:288;;;22902:3;22886:12;;22877:6;:21;;;;:::i;:::-;22876:29;;;;:::i;:::-;22869:36;;22973:12;;22954:15;;22947:4;:22;;;;:::i;:::-;22946:39;;;;:::i;:::-;22924:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;23053:12:0;;23034:15;;23027:22;;:4;:22;:::i;:::-;23026:39;;;;:::i;:::-;23004:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;22793:288:0;23101:8;;23097:91;;23130:42;23146:4;23160;23167;23130:15;:42::i;:::-;23204:14;23214:4;23204:14;;:::i;:::-;;;21166:2064;23242:33;23258:4;23264:2;23268:6;23242:15;:33::i;:::-;17560:5723;;;;17447:5836;;;:::o;14679:236::-;-1:-1:-1;;;;;14762:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;14762:39:0;;;;;;;14812;14762:31;:39;14812:26;:39::i;24525:1262::-;24564:23;24590:24;24608:4;24590:9;:24::i;:::-;24564:50;;24625:25;24674:18;;24653;;:39;;;;:::i;:::-;24625:67;-1:-1:-1;24709:20:0;;;:46;;-1:-1:-1;24733:22:0;;24709:46;24705:85;;;24772:7;;24525:1262::o;24705:85::-;24824:18;;:23;;24845:2;24824:23;:::i;:::-;24806:15;:41;24802:115;;;24882:18;;:23;;24903:2;24882:23;:::i;:::-;24864:41;;24802:115;24929:12;25003:23;25116:1;25083:17;25048:18;;25030:15;:36;;;;:::i;:::-;25029:71;;;;:::i;:::-;:88;;;;:::i;:::-;25003:114;-1:-1:-1;25130:51:0;25147:33;25003:114;25147:15;:33;:::i;:::-;25130:16;:51::i;:::-;25393:18;;25215:21;;;;25194:18;;25393:22;;25414:1;;25393:22;:::i;:::-;25372:44;;:17;:44;:::i;:::-;25336:18;;25323:31;;:10;:31;:::i;:::-;25322:95;;;;:::i;:::-;25296:121;-1:-1:-1;25430:34:0;25296:121;25430:34;;:::i;:::-;25498:1;25477:18;:22;;;25510:18;:22;25430:34;-1:-1:-1;25549:19:0;;;;;:42;;;25590:1;25572:15;:19;25549:42;25545:121;;;25608:46;25621:15;25638;25608:12;:46::i;:::-;25700:15;;25692:87;;-1:-1:-1;;;;;25700:15:0;;;;25743:21;;25692:87;;;;25743:21;25700:15;25692:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;24525:1262:0:o;7341:651::-;-1:-1:-1;;;;;7481:20:0;;7473:70;;;;-1:-1:-1;;;7473:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7562:23:0;;7554:71;;;;-1:-1:-1;;;7554:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7662:17:0;;7638:21;7662:17;;;;;;;;;;;7712:23;;;;7690:111;;;;-1:-1:-1;;;7690:111:0;;19203:2:1;7690:111:0;;;19185:21:1;19242:2;19222:18;;;19215:30;19281:34;19261:18;;;19254:62;-1:-1:-1;;;19332:18:1;;;19325:36;19378:19;;7690:111:0;19001:402:1;7690:111:0;-1:-1:-1;;;;;7837:17:0;;;:9;:17;;;;;;;;;;;7857:22;;;7837:42;;7901:20;;;;;;;;:30;;7873:6;;7837:9;7901:30;;7873:6;;7901:30;:::i;:::-;;;;;;;;7966:9;-1:-1:-1;;;;;7949:35:0;7958:6;-1:-1:-1;;;;;7949:35:0;;7977:6;7949:35;;;;2461:25:1;;2449:2;2434:18;;2315:177;7949:35:0;;;;;;;;7462:530;7341:651;;;:::o;15909:221::-;-1:-1:-1;;;;;16011:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;16011:52:0;;;;;;;;;;16079:43;;19576:51:1;;;19643:18;;;19636:50;16079:43:0;;19549:18:1;16079:43:0;;;;;;;15909:221;;:::o;23420:571::-;23570:16;;;23584:1;23570:16;;;;;;;;23546:21;;23570:16;;;;;;;;;;-1:-1:-1;23570:16:0;23546:40;;23615:4;23597;23602:1;23597:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23597:23:0;;;:7;;;;;;;;;;:23;;;;23641:9;;:16;;;-1:-1:-1;;;23641:16:0;;;;:9;;;;;:14;;:16;;;;;23597:7;;23641:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23631:4;23636:1;23631:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23631:26:0;;;:7;;;;;;;;;:26;23702:9;;23670:56;;23687:4;;23702:9;23714:11;23670:8;:56::i;:::-;23765:9;;:218;;-1:-1:-1;;;23765:218:0;;-1:-1:-1;;;;;23765:9:0;;;;:60;;:218;;23840:11;;23765:9;;23910:4;;23937;;23957:15;;23765:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23475:516;23420:571;:::o;23999:518::-;24179:9;;24147:56;;24164:4;;-1:-1:-1;;;;;24179:9:0;24191:11;24147:8;:56::i;:::-;24246:9;;24452:15;;24246:263;;-1:-1:-1;;;24246:263:0;;-1:-1:-1;;;;;24246:9:0;;;;:25;;24279:9;;24246:263;;24312:4;;24332:11;;24246:9;;;;24452:15;;24483;;24246:263;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23999:518;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:247::-;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:1:o;594:248::-;662:6;670;723:2;711:9;702:7;698:23;694:32;691:52;;;739:1;736;729:12;691:52;-1:-1:-1;;762:23:1;;;832:2;817:18;;;804:32;;-1:-1:-1;594:248:1:o;847:548::-;959:4;988:2;1017;1006:9;999:21;1049:6;1043:13;1092:6;1087:2;1076:9;1072:18;1065:34;1117:1;1127:140;1141:6;1138:1;1135:13;1127:140;;;1236:14;;;1232:23;;1226:30;1202:17;;;1221:2;1198:26;1191:66;1156:10;;1127:140;;;1131:3;1316:1;1311:2;1302:6;1291:9;1287:22;1283:31;1276:42;1386:2;1379;1375:7;1370:2;1362:6;1358:15;1354:29;1343:9;1339:45;1335:54;1327:62;;;;847:548;;;;:::o;1626:315::-;1694:6;1702;1755:2;1743:9;1734:7;1730:23;1726:32;1723:52;;;1771:1;1768;1761:12;1723:52;1810:9;1797:23;1829:31;1854:5;1829:31;:::i;:::-;1879:5;1931:2;1916:18;;;;1903:32;;-1:-1:-1;;;1626:315:1:o;1946:118::-;2032:5;2025:13;2018:21;2011:5;2008:32;1998:60;;2054:1;2051;2044:12;2069:241;2125:6;2178:2;2166:9;2157:7;2153:23;2149:32;2146:52;;;2194:1;2191;2184:12;2146:52;2233:9;2220:23;2252:28;2274:5;2252:28;:::i;2497:456::-;2574:6;2582;2590;2643:2;2631:9;2622:7;2618:23;2614:32;2611:52;;;2659:1;2656;2649:12;2611:52;2698:9;2685:23;2717:31;2742:5;2717:31;:::i;:::-;2767:5;-1:-1:-1;2824:2:1;2809:18;;2796:32;2837:33;2796:32;2837:33;:::i;:::-;2497:456;;2889:7;;-1:-1:-1;;;2943:2:1;2928:18;;;;2915:32;;2497:456::o;3355:461::-;3408:3;3446:5;3440:12;3473:6;3468:3;3461:19;3499:4;3528:2;3523:3;3519:12;3512:19;;3565:2;3558:5;3554:14;3586:1;3596:195;3610:6;3607:1;3604:13;3596:195;;;3675:13;;-1:-1:-1;;;;;3671:39:1;3659:52;;3731:12;;;;3766:15;;;;3707:1;3625:9;3596:195;;;-1:-1:-1;3807:3:1;;3355:461;-1:-1:-1;;;;;3355:461:1:o;3821:261::-;4000:2;3989:9;3982:21;3963:4;4020:56;4072:2;4061:9;4057:18;4049:6;4020:56;:::i;4087:382::-;4152:6;4160;4213:2;4201:9;4192:7;4188:23;4184:32;4181:52;;;4229:1;4226;4219:12;4181:52;4268:9;4255:23;4287:31;4312:5;4287:31;:::i;:::-;4337:5;-1:-1:-1;4394:2:1;4379:18;;4366:32;4407:30;4366:32;4407:30;:::i;:::-;4456:7;4446:17;;;4087:382;;;;;:::o;4474:180::-;4533:6;4586:2;4574:9;4565:7;4561:23;4557:32;4554:52;;;4602:1;4599;4592:12;4554:52;-1:-1:-1;4625:23:1;;4474:180;-1:-1:-1;4474:180:1:o;4659:388::-;4727:6;4735;4788:2;4776:9;4767:7;4763:23;4759:32;4756:52;;;4804:1;4801;4794:12;4756:52;4843:9;4830:23;4862:31;4887:5;4862:31;:::i;:::-;4912:5;-1:-1:-1;4969:2:1;4954:18;;4941:32;4982:33;4941:32;4982:33;:::i;5052:356::-;5254:2;5236:21;;;5273:18;;;5266:30;5332:34;5327:2;5312:18;;5305:62;5399:2;5384:18;;5052:356::o;5413:127::-;5474:10;5469:3;5465:20;5462:1;5455:31;5505:4;5502:1;5495:15;5529:4;5526:1;5519:15;5545:125;5610:9;;;5631:10;;;5628:36;;;5644:18;;:::i;5675:380::-;5754:1;5750:12;;;;5797;;;5818:61;;5872:4;5864:6;5860:17;5850:27;;5818:61;5925:2;5917:6;5914:14;5894:18;5891:38;5888:161;;5971:10;5966:3;5962:20;5959:1;5952:31;6006:4;6003:1;5996:15;6034:4;6031:1;6024:15;5888:161;;5675:380;;;:::o;8700:184::-;8770:6;8823:2;8811:9;8802:7;8798:23;8794:32;8791:52;;;8839:1;8836;8829:12;8791:52;-1:-1:-1;8862:16:1;;8700:184;-1:-1:-1;8700:184:1:o;9168:245::-;9235:6;9288:2;9276:9;9267:7;9263:23;9259:32;9256:52;;;9304:1;9301;9294:12;9256:52;9336:9;9330:16;9355:28;9377:5;9355:28;:::i;11833:607::-;-1:-1:-1;;;;;12192:15:1;;;12174:34;;12239:2;12224:18;;12217:34;;;;12282:2;12267:18;;12260:34;;;;12325:2;12310:18;;12303:34;;;;12374:15;;;12368:3;12353:19;;12346:44;12154:3;12406:19;;12399:35;;;;12123:3;12108:19;;11833:607::o;12445:306::-;12533:6;12541;12549;12602:2;12590:9;12581:7;12577:23;12573:32;12570:52;;;12618:1;12615;12608:12;12570:52;12647:9;12641:16;12631:26;;12697:2;12686:9;12682:18;12676:25;12666:35;;12741:2;12730:9;12726:18;12720:25;12710:35;;12445:306;;;;;:::o;12756:168::-;12829:9;;;12860;;12877:15;;;12871:22;;12857:37;12847:71;;12898:18;;:::i;14713:401::-;14915:2;14897:21;;;14954:2;14934:18;;;14927:30;14993:34;14988:2;14973:18;;14966:62;-1:-1:-1;;;15059:2:1;15044:18;;15037:35;15104:3;15089:19;;14713:401::o;15119:399::-;15321:2;15303:21;;;15360:2;15340:18;;;15333:30;15399:34;15394:2;15379:18;;15372:62;-1:-1:-1;;;15465:2:1;15450:18;;15443:33;15508:3;15493:19;;15119:399::o;16711:128::-;16778:9;;;16799:11;;;16796:37;;;16813:18;;:::i;18779:217::-;18819:1;18845;18835:132;;18889:10;18884:3;18880:20;18877:1;18870:31;18924:4;18921:1;18914:15;18952:4;18949:1;18942:15;18835:132;-1:-1:-1;18981:9:1;;18779:217::o;19829:127::-;19890:10;19885:3;19881:20;19878:1;19871:31;19921:4;19918:1;19911:15;19945:4;19942:1;19935:15;19961:251;20031:6;20084:2;20072:9;20063:7;20059:23;20055:32;20052:52;;;20100:1;20097;20090:12;20052:52;20132:9;20126:16;20151:31;20176:5;20151:31;:::i;20217:582::-;20516:6;20505:9;20498:25;20559:6;20554:2;20543:9;20539:18;20532:34;20602:3;20597:2;20586:9;20582:18;20575:31;20479:4;20623:57;20675:3;20664:9;20660:19;20652:6;20623:57;:::i;:::-;-1:-1:-1;;;;;20716:32:1;;;;20711:2;20696:18;;20689:60;-1:-1:-1;20780:3:1;20765:19;20758:35;20615:65;20217:582;-1:-1:-1;;;20217:582:1:o

Swarm Source

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