ETH Price: $3,212.61 (-3.55%)
 

Overview

Max Total Supply

1,000,000,000 Minato

Holders

63 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.475373017578744578 Minato

Value
$0.00
0x6d1be2a129ed99d999aabf9796cc36748dfd4699
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

'Minato' is an ERC-20 token which aims to enable talents to live their dreams and serve as role models - aiming to be the first talent development and elite support Token for E-sports players.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Minato

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 10 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-14
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

interface IERC20 {
  function totalSupply() external view returns (uint256);
  function decimals() external view returns (uint8);
  function symbol() external view returns (string memory);
  function name() external view returns (string memory);
  function getOwner() external view returns (address);
  function balanceOf(address account) external view returns (uint256);
  function transfer(address recipient, uint256 amount) external returns (bool);
  function allowance(address _owner, address spender) external view returns (uint256);
  function approve(address spender, uint256 amount) external returns (bool);
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface AntiSnipe {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function transfer(address sender) external;
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
}

contract Minato is IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
   
    uint256 constant private startingSupply = 1_000_000_000;
    string constant private _name = "Minato";
    string constant private _symbol = "Minato";
    uint8 constant private _decimals = 18;

    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    struct Ratios {
        uint16 liquidity;
        uint16 MDT;
        uint16 totalSwap;
    }

    Fees public _taxRates = Fees({
        buyFee: 1000,
        sellFee: 1200,
        transferFee: 1000
        });

    Ratios public _ratios = Ratios({
        liquidity: 200,
        MDT: 800,
        totalSwap: 1000
        });

    uint256 constant public maxBuyTaxes = 1200;
    uint256 constant public maxSellTaxes = 1200;
    uint256 constant public maxTransferTaxes = 1200;
    uint256 constant masterTaxDivisor = 10000;

    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable MDT;
    }

    TaxWallets public _taxWallets = TaxWallets({
        MDT: payable(0x59A8D740754f3Cfec673B098c53c069889cb84BF)
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public contractSwapTimer = 0 seconds;
    uint256 private lastSwap;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    
    uint256 private _maxTxAmount = (_tTotal * 1) / 100;
    uint256 private _maxWalletSize = (_tTotal * 2) / 100;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    AntiSnipe antiSnipe;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[msg.sender] = _tTotal;
        emit Transfer(address(0), msg.sender, _tTotal);

        // Set the owner.
        _owner = msg.sender;

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else {
            revert();
        }

        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[_owner] = true;
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.
    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if(balanceOf(_owner) > 0) {
            _finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, false, true);
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

    function renounceOwnership() public virtual onlyOwner {
        setExcludedFromFees(_owner, false);
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external pure override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; }
    function decimals() external pure override returns (uint8) { if (_tTotal == 0) { revert(); } return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function approveContractContingency() public onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) public onlyOwner {
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
            antiSnipe.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            antiSnipe.setLpPair(pair, true);
        }
    }

    function setInitializer(address initializer) external onlyOwner {
        require(!tradingEnabled);
        require(initializer != address(this), "Can't be self.");
        antiSnipe = AntiSnipe(initializer);
    }

    function isExcludedFromLimits(address account) external view returns (bool) {
        return _isExcludedFromLimits[account];
    }

    function isExcludedFromFees(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function isExcludedFromProtection(address account) external view returns (bool) {
        return _isExcludedFromProtection[account];
    }

    function setExcludedFromLimits(address account, bool enabled) external onlyOwner {
        _isExcludedFromLimits[account] = enabled;
    }

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function setExcludedFromProtection(address account, bool enabled) external onlyOwner {
        _isExcludedFromProtection[account] = enabled;
    }

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner {
        antiSnipe.setBlacklistEnabled(account, enabled);
    }

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner {
        antiSnipe.setBlacklistEnabledMultiple(accounts, enabled);
    }

    function isBlacklisted(address account) public view returns (bool) {
        return antiSnipe.isBlacklisted(account);
    }

    function removeSniper(address account) external onlyOwner {
        antiSnipe.removeSniper(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner {
        antiSnipe.setProtections(_antiSnipe, _antiBlock);
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setRatios(uint16 liquidity, uint16 MDT) external onlyOwner {
        _ratios.liquidity = liquidity;
        _ratios.MDT = MDT;
        _ratios.totalSwap = liquidity + MDT;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.totalSwap <= total, "Cannot exceed sum of buy and sell fees.");
    }

    function setWallets(address payable MDT) external onlyOwner {
        _taxWallets.MDT = payable(MDT);
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply.");
        _maxTxAmount = (_tTotal * percent) / divisor;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 100), "Max Wallet amt must be above 1% of total supply.");
        _maxWalletSize = (_tTotal * percent) / divisor;
    }

    function getMaxTX() public view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

    function getMaxWallet() public view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor, uint256 time) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        contractSwapTimer = time;
    }

    function setContractSwapEnabled(bool enabled) external onlyOwner {
        contractSwapEnabled = enabled;
        emit ContractSwapEnabledUpdated(enabled);
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if(buy || sell){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if(to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (sell) {
            if (!inSwap
                && contractSwapEnabled
            ) {
                if (lastSwap + contractSwapTimer <= block.timestamp) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                        contractSwap(contractTokenBalance);
                        lastSwap = block.timestamp;
                    }
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal lockTheSwap {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

        if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / ratios.totalSwap) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapAmt,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amtBalance = address(this).balance;
        uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt;

        if (toLiquify > 0) {
            dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                DEAD,
                block.timestamp
            );
            emit AutoLiquify(liquidityBalance, toLiquify);
        }

        amtBalance -= liquidityBalance;
        ratios.totalSwap -= ratios.liquidity;
        uint256 mdtBalance = amtBalance;
        if (ratios.MDT > 0) {
            _taxWallets.MDT.transfer(mdtBalance);
        }
    }

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            if(address(antiSnipe) == address(0)){
                antiSnipe = AntiSnipe(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if(address(antiSnipe) == address(0)){
            antiSnipe = AntiSnipe(address(this));
        }
        try antiSnipe.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        tradingEnabled = true;
        swapThreshold = (balanceOf(lpPair) * 10) / 10000;
        swapAmount = (balanceOf(lpPair) * 25) / 10000;
    }

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(_owner).transfer(address(this).balance);
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint8 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]);
            _finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, false, true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee, bool buy, bool sell, bool other) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }

        if (_hasLimits(from, to)) {
            bool checked;
            try antiSnipe.checkUser(from, to, amount) returns (bool check) {
                checked = check;
            } catch {
                revert();
            }

            if(!checked) {
                revert();
            }
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, buy, sell, amount) : amount;
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;

        _tOwned[address(this)] += feeAmount;
        emit Transfer(from, address(this), feeAmount);

        return amount - feeAmount;
    }
}

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":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"MDT","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"MDT","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","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":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"MDT","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"MDT","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600060038190556103e860808190526104b060a05260c08190526009805465ffffffffffff199081166503e804b003e81790915560c860e0526103206101005261012091909152600a80549091166503e8032000c81781556101606040527359a8d740754f3cfec673b098c53c069889cb84bf610140819052600d80546001600160a01b0319169091179055600e805461ff0019169055600f91909155606490620000ad906012906200070f565b620000bd90633b9aca0062000727565b620000ca90600162000727565b620000d6919062000749565b6013556064620000e96012600a6200070f565b620000f990633b9aca0062000727565b6200010690600262000727565b62000112919062000749565b6014556015805461ffff191690556200012e6012600a6200070f565b6200013e90633b9aca0062000727565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001816012600a6200070f565b6200019190633b9aca0062000727565b60405190815260200160405180910390a3600080546001600160a01b0319163317905546603803620001e957600b80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620002dc565b466061036200021e57600b80546001600160a01b03191673d99d1c33f9fc3444f8101754abc46c52416550d1179055620002dc565b46600114806200022e5750466004145b806200023a5750466003145b156200026c57600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620002dc565b4661a86a03620002a257600b80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d4179055620002dc565b4660fa03620002d757600b80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c29179055620002dc565b600080fd5b600b60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000330573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035691906200076c565b6001600160a01b031663c9c65396600b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003de91906200076c565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200042b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045191906200076c565b600c80546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260408120805460ff1916600117905554600b54620004a09291821691166000196200053e565b600b54620004bc9030906001600160a01b03166000196200053e565b600080546001600160a01b0390811682526007602090815260408084208054600160ff19918216811790925530865282862080548216831790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d805482168317905585549094168552600590925290922080549091169091179055620007ce565b6001600160a01b038316620005705760405162461bcd60e51b8152600401620005679062000797565b60405180910390fd5b6001600160a01b038216620005995760405162461bcd60e51b8152600401620005679062000797565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000651578160001904821115620006355762000635620005fa565b808516156200064357918102915b93841c939080029062000615565b509250929050565b6000826200066a5750600162000709565b81620006795750600062000709565b81600181146200069257600281146200069d57620006bd565b600191505062000709565b60ff841115620006b157620006b1620005fa565b50506001821b62000709565b5060208310610133831016604e8410600b8410161715620006e2575081810a62000709565b620006ee838362000610565b8060001904821115620007055762000705620005fa565b0290505b92915050565b60006200072060ff84168362000659565b9392505050565b6000816000190483118215151615620007445762000744620005fa565b500290565b6000826200076757634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200077f57600080fd5b81516001600160a01b03811681146200072057600080fd5b60208082526013908201527f45524332303a205a65726f204164647265737300000000000000000000000000604082015260600190565b6134b980620007de6000396000f3fe6080604052600436106102695760003560e01c806303fd2a45146102755780630445b667146102a1578063044df726146102c557806305bbedb6146102e7578063069d955f1461030757806306fdde031461035c5780630758d92414610391578063095ea7b3146103b15780630dcbcf1c146103e15780630fa604e41461041a57806318160ddd1461042f57806323b872dd1461044457806326003957146104645780632610eaca146104845780632b28fc7a146104a45780632e8fa821146104ba578063313ce567146104d057806332cde664146104f757806333251a0b1461051757806334cd82601461053757806336fddb04146105575780633f3cf56c14610577578063452ed4f1146105975780634ada218b146105b75780634fb2e45d146105d15780634fbee193146105f157806350a8e0161461062a578063590ffdce146106495780635c24b074146106695780635cce86cd146106895780636ebd0078146106c257806370a08231146106d7578063715018a6146106f757806380c581d11461070c578063893d20e81461072c5780638a63bd9b1461074a5780638a8c523c1461075f57806395d89b411461035c578063a9059cbb14610774578063b1b08f71146104a4578063b3d514fb146104a4578063bcd96a2514610794578063cab5ebea146107b4578063cf847706146107d4578063dd62ed3e14610804578063e4fcfd181461084a578063eafb5a3c14610860578063eb50e70e14610880578063ee5d9c2d146108a0578063eec2744e146108b5578063f94aa1b4146108d5578063fdb78c0e146108f5578063fe575a8714610914578063feadde9c1461093457600080fd5b3661027057005b600080fd5b34801561028157600080fd5b5061028b61dead81565b6040516102989190612bb7565b60405180910390f35b3480156102ad57600080fd5b506102b760115481565b604051908152602001610298565b3480156102d157600080fd5b506102e56102e0366004612bd9565b610954565b005b3480156102f357600080fd5b506102e5610302366004612d04565b6109f8565b34801561031357600080fd5b506009546103379061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610298565b34801561036857600080fd5b5060408051808201825260068152654d696e61746f60d01b602082015290516102989190612d4a565b34801561039d57600080fd5b50600b5461028b906001600160a01b031681565b3480156103bd57600080fd5b506103d16103cc366004612d9f565b610a59565b6040519015158152602001610298565b3480156103ed57600080fd5b506103d16103fc366004612dcb565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561042657600080fd5b506102b7610a70565b34801561043b57600080fd5b506102b7610a90565b34801561045057600080fd5b506103d161045f366004612de8565b610ad2565b34801561047057600080fd5b506102e561047f366004612e29565b610b4a565b34801561049057600080fd5b506102e561049f366004612e4b565b610c68565b3480156104b057600080fd5b506102b76104b081565b3480156104c657600080fd5b506102b760125481565b3480156104dc57600080fd5b506104e5610d95565b60405160ff9091168152602001610298565b34801561050357600080fd5b506102e5610512366004612f1c565b610dc3565b34801561052357600080fd5b506102e5610532366004612dcb565b610e9e565b34801561054357600080fd5b506102e5610552366004612f5f565b610f32565b34801561056357600080fd5b506102e5610572366004612f9a565b610fcb565b34801561058357600080fd5b506102e5610592366004612e29565b611020565b3480156105a357600080fd5b50600c5461028b906001600160a01b031681565b3480156105c357600080fd5b506015546103d19060ff1681565b3480156105dd57600080fd5b506102e56105ec366004612dcb565b611146565b3480156105fd57600080fd5b506103d161060c366004612dcb565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561063657600080fd5b506015546103d190610100900460ff1681565b34801561065557600080fd5b506102e5610664366004612f9a565b611256565b34801561067557600080fd5b506102e5610684366004612dcb565b6112ab565b34801561069557600080fd5b506103d16106a4366004612dcb565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156106ce57600080fd5b506102b7611358565b3480156106e357600080fd5b506102b76106f2366004612dcb565b611373565b34801561070357600080fd5b506102e561138e565b34801561071857600080fd5b506102e5610727366004612f9a565b6113fb565b34801561073857600080fd5b506000546001600160a01b031661028b565b34801561075657600080fd5b506103d1611539565b34801561076b57600080fd5b506102e5611584565b34801561078057600080fd5b506103d161078f366004612d9f565b611772565b3480156107a057600080fd5b506102e56107af366004612fb8565b611789565b3480156107c057600080fd5b506102e56107cf366004612feb565b611882565b3480156107e057600080fd5b50600a546103379061ffff80821691620100008104821691600160201b9091041683565b34801561081057600080fd5b506102b761081f366004613008565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561085657600080fd5b506102b7600f5481565b34801561086c57600080fd5b506102e561087b366004612dcb565b6118ee565b34801561088c57600080fd5b506102e561089b366004612dcb565b611c00565b3480156108ac57600080fd5b506102e5611c4c565b3480156108c157600080fd5b506102e56108d0366004612f9a565b611d0a565b3480156108e157600080fd5b50600d5461028b906001600160a01b031681565b34801561090157600080fd5b50600e546103d190610100900460ff1681565b34801561092057600080fd5b506103d161092f366004612dcb565b611d6b565b34801561094057600080fd5b506102e561094f366004612f9a565b611de3565b6000546001600160a01b031633146109875760405162461bcd60e51b815260040161097e90613036565b60405180910390fd5b60155460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b1580156109dc57600080fd5b505af11580156109f0573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610a225760405162461bcd60e51b815260040161097e90613036565b6015546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb6906109c290859085906004016130a5565b6000610a66338484611e38565b5060015b92915050565b6000610a7e6012600a6131c3565b601454610a8b91906131d2565b905090565b6000610a9e6012600a6131c3565b610aac90633b9aca006131f4565b600003610ab857600080fd5b610ac46012600a6131c3565b610a8b90633b9aca006131f4565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610b37576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610b31908490613213565b90915550505b610b42848484611ee5565b949350505050565b6000546001600160a01b03163314610b745760405162461bcd60e51b815260040161097e90613036565b6064610b826012600a6131c3565b610b9090633b9aca006131f4565b610b9a91906131d2565b8183610ba86012600a6131c3565b610bb690633b9aca006131f4565b610bc091906131f4565b610bca91906131d2565b1015610c315760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b606482015260840161097e565b8082610c3f6012600a6131c3565b610c4d90633b9aca006131f4565b610c5791906131f4565b610c6191906131d2565b6014555050565b6000546001600160a01b03163314610c925760405162461bcd60e51b815260040161097e90613036565b8051825114610cdb5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b604482015260640161097e565b60005b82518160ff161015610d9057818160ff1681518110610cff57610cff61322a565b6020026020010151610d1033611373565b1015610d1b57600080fd5b610d7d33848360ff1681518110610d3457610d3461322a565b60200260200101516012600a610d4a91906131c3565b858560ff1681518110610d5f57610d5f61322a565b6020026020010151610d7191906131f4565b6000806000600161230d565b5080610d8881613240565b915050610cde565b505050565b6000610da36012600a6131c3565b610db190633b9aca006131f4565b600003610dbd57600080fd5b50601290565b6000546001600160a01b03163314610ded5760405162461bcd60e51b815260040161097e90613036565b6104b08361ffff1611158015610e0957506104b08261ffff1611155b8015610e1b57506104b08161ffff1611155b610e615760405162461bcd60e51b815260206004820152601760248201527621b0b73737ba1032bc31b2b2b21036b0bc34b6bab6b99760491b604482015260640161097e565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921761ffff60201b1916600160201b9190931602919091179055565b6000546001600160a01b03163314610ec85760405162461bcd60e51b815260040161097e90613036565b6015546040516333251a0b60e01b8152620100009091046001600160a01b0316906333251a0b90610efd908490600401612bb7565b600060405180830381600087803b158015610f1757600080fd5b505af1158015610f2b573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314610f5c5760405162461bcd60e51b815260040161097e90613036565b8385610f6a6012600a6131c3565b610f7890633b9aca006131f4565b610f8291906131f4565b610f8c91906131d2565b6011558183610f9d6012600a6131c3565b610fab90633b9aca006131f4565b610fb591906131f4565b610fbf91906131d2565b601255600f5550505050565b6000546001600160a01b03163314610ff55760405162461bcd60e51b815260040161097e90613036565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461104a5760405162461bcd60e51b815260040161097e90613036565b6103e86110596012600a6131c3565b61106790633b9aca006131f4565b61107191906131d2565b818361107f6012600a6131c3565b61108d90633b9aca006131f4565b61109791906131f4565b6110a191906131d2565b101561110f5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f766044820152763290181718929037b3103a37ba30b61039bab838363c9760491b606482015260840161097e565b808261111d6012600a6131c3565b61112b90633b9aca006131f4565b61113591906131f4565b61113f91906131d2565b6013555050565b6000546001600160a01b031633146111705760405162461bcd60e51b815260040161097e90613036565b6001600160a01b0381166111965760405162461bcd60e51b815260040161097e9061325f565b61deac196001600160a01b038216016111c15760405162461bcd60e51b815260040161097e9061325f565b600080546111da916001600160a01b0390911690611256565b6111e5816001611256565b600080546111fb906001600160a01b0316611373565b111561121d5760005461121b906001600160a01b031682610d7182611373565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182916000805160206134448339815191529190a350565b6000546001600160a01b031633146112805760405162461bcd60e51b815260040161097e90613036565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112d55760405162461bcd60e51b815260040161097e90613036565b60155460ff16156112e557600080fd5b306001600160a01b0382160361132e5760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b604482015260640161097e565b601580546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60006113666012600a6131c3565b601354610a8b91906131d2565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b031633146113b85760405162461bcd60e51b815260040161097e90613036565b600080546113d1916001600160a01b0390911690611256565b600080546001600160a01b03191681556040518190600080516020613444833981519152908290a3565b6000546001600160a01b031633146114255760405162461bcd60e51b815260040161097e90613036565b801515600003611480576001600160a01b03808316600090815260026020526040808220805460ff1916905560155490516380c581d160e01b815262010000909104909216916380c581d1916109c2918691906004016132bc565b600354156114da576203f4806003544261149a9190613213565b116114da5760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b604482015260640161097e565b6001600160a01b0380831660009081526002602052604090819020805460ff191660019081179091554260035560155491516380c581d160e01b815262010000909204909216916380c581d1916109c29186916004016132bc565b5050565b600080546001600160a01b031633146115645760405162461bcd60e51b815260040161097e90613036565b600b5461157e9030906001600160a01b0316600019611e38565b50600190565b6000546001600160a01b031633146115ae5760405162461bcd60e51b815260040161097e90613036565b60155460ff16156115fc5760405162461bcd60e51b815260206004820152601860248201527754726164696e6720616c726561647920656e61626c65642160401b604482015260640161097e565b601554610100900460ff1661164e5760405162461bcd60e51b81526020600482015260186024820152772634b8bab4b234ba3c9036bab9ba1031329030b23232b21760411b604482015260640161097e565b6015546201000090046001600160a01b031661167e576015805462010000600160b01b0319163062010000021790555b601554600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff431660248201526001600160401b034216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156116ef57600080fd5b505af1925050508015611700575060015b506015805460ff19166001179055600c5461271090611727906001600160a01b0316611373565b61173290600a6131f4565b61173c91906131d2565b601155600c5461271090611758906001600160a01b0316611373565b6117639060196131f4565b61176d91906131d2565b601255565b600061177f338484611ee5565b5060019392505050565b6000546001600160a01b031633146117b35760405162461bcd60e51b815260040161097e90613036565b600a805461ffff838116620100000263ffffffff19909216908516171790556117dc81836132d7565b600a805461ffff60201b1916600160201b61ffff9384160217905560095460009161181091620100008104821691166132d7565b600a5461ffff9182169250600160201b900416811015610d905760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b606482015260840161097e565b6000546001600160a01b031633146118ac5760405162461bcd60e51b815260040161097e90613036565b600e80548215156101000261ff0019909116179055604051600080516020613424833981519152906118e390831515815260200190565b60405180910390a150565b6000546001600160a01b031633146119185760405162461bcd60e51b815260040161097e90613036565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561195d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198191906132fd565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f291906132fd565b6040518363ffffffff1660e01b8152600401611a0f92919061331a565b602060405180830381865afa158015611a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5091906132fd565b90506001600160a01b038116611bb857816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac291906132fd565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3391906132fd565b6040518363ffffffff1660e01b8152600401611b5092919061331a565b6020604051808303816000875af1158015611b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9391906132fd565b600c80546001600160a01b0319166001600160a01b0392909216919091179055611bd4565b600c80546001600160a01b0319166001600160a01b0383161790555b600b80546001600160a01b0319166001600160a01b038416908117909155610d90903090600019611e38565b6000546001600160a01b03163314611c2a5760405162461bcd60e51b815260040161097e90613036565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611c765760405162461bcd60e51b815260040161097e90613036565b601554610100900460ff1615611ccd5760405162461bcd60e51b815260206004820152601c60248201527b21b0b73737ba1031b0b6361030b33a32b9103634b8bab4b234ba3c9760211b604482015260640161097e565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611d07573d6000803e3d6000fd5b50565b6000546001600160a01b03163314611d345760405162461bcd60e51b815260040161097e90613036565b6015546040516377613a2760e11b8152620100009091046001600160a01b03169063eec2744e906109c290859085906004016132bc565b60155460405163fe575a8760e01b81526000916201000090046001600160a01b03169063fe575a8790611da2908590600401612bb7565b602060405180830381865afa158015611dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6a9190613334565b6000546001600160a01b03163314611e0d5760405162461bcd60e51b815260040161097e90613036565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b038316611e5e5760405162461bcd60e51b815260040161097e90613351565b6001600160a01b038216611e845760405162461bcd60e51b815260040161097e90613351565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611f4b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161097e565b6001600160a01b038316611fad5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161097e565b6000821161200f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161097e565b6001600160a01b0384166000908152600260205260408120548190819060ff161561203d576001925061206b565b6001600160a01b03861660009081526002602052604090205460ff1615612067576001915061206b565b5060015b612075878761255b565b156122385760155460ff166120c75760405162461bcd60e51b815260206004820152601860248201527754726164696e67206e6f742079657420656e61626c65642160401b604482015260640161097e565b82806120d05750815b1561217f576001600160a01b03871660009081526008602052604090205460ff1615801561211757506001600160a01b03861660009081526008602052604090205460ff16155b1561217f5760135485111561217f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161097e565b600b546001600160a01b0387811691161480159061219b575081155b15612238576001600160a01b03861660009081526008602052604090205460ff1661223857601454856121cd88611373565b6121d7919061337e565b11156122385760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b606482015260840161097e565b6001600160a01b03871660009081526007602052604090205460019060ff168061227a57506001600160a01b03871660009081526007602052604090205460ff165b15612283575060005b82156122f257600e5460ff161580156122a35750600e54610100900460ff165b156122f25742600f546010546122b9919061337e565b116122f25760006122c930611373565b905060115481106122f05760125481106122e257506012545b6122eb81612630565b426010555b505b6123018888888488888861230d565b98975050505050505050565b601554600090610100900460ff166123f25761232988886129d7565b601554610100900460ff161580156123465750612346888861255b565b801561236b57506001600160a01b03881660009081526006602052604090205460ff16155b801561239057506001600160a01b03871660009081526006602052604090205460ff16155b801561239a575081155b156123f25760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b606482015260840161097e565b6123fc888861255b565b156124965760155460405163ecd07a5360e01b81526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801561247f575060408051601f3d908101601f1916820190925261247c91810190613334565b60015b61248857600080fd5b90508061249457600080fd5b505b6001600160a01b038816600090815260016020526040812080548892906124be908490613213565b9091555060009050856124d157866124dd565b6124dd8986868a612af3565b6001600160a01b03891660009081526001602052604081208054929350839290919061250a90849061337e565b92505081905550876001600160a01b0316896001600160a01b03166000805160206134648339815191528360405161254491815260200190565b60405180910390a350600198975050505050505050565b600080546001600160a01b0384811691161480159061258857506000546001600160a01b03838116911614155b801561259f57506000546001600160a01b03163214155b80156125c457506001600160a01b03821660009081526005602052604090205460ff16155b80156125e957506001600160a01b03831660009081526005602052604090205460ff16155b801561260057506001600160a01b03821661dead14155b801561261457506001600160a01b03821615155b801561262957506001600160a01b0383163014155b9392505050565b600e805460ff1916600117905560408051606081018252600a5461ffff808216835262010000820481166020840152600160201b909104169181018290529060000361267c57506129ca565b306000908152600460209081526040808320600b546001600160a01b03168452909152902054600019146126d557306000908152600460209081526040808320600b546001600160a01b03168452909152902060001990555b60006002826040015161ffff16836000015161ffff16856126f691906131f4565b61270091906131d2565b61270a91906131d2565b905060006127188285613213565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106127525761275261322a565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156127ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cf91906132fd565b816001815181106127e2576127e261322a565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac94790612828908590600090869030904290600401613396565b600060405180830381600087803b15801561284257600080fd5b505af1158015612856573d6000803e3d6000fd5b504792506000915084905061286b86846131f4565b61287591906131d2565b9050841561294d57600b5460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156128eb573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061291091906133d2565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6129578183613213565b915085600001518660400181815161296f9190613400565b61ffff908116909152602088015184925016156129c257600d546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156129c0573d6000803e3d6000fd5b505b505050505050505b50600e805460ff19169055565b601554610100900460ff1615612a3b5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b606482015260840161097e565b612a45828261255b565b158015612a5f5750600c546001600160a01b038281169116145b15611535576001600160a01b038083166000908152600560205260409020805460ff191660011790556015805461ff001916610100179081905562010000900416612abe576015805462010000600160b01b0319163062010000021790555b600e805461ff001916610100179055604051600181526000805160206134248339815191529060200160405180910390a15050565b6000808415612b09575060095461ffff16612b32565b8315612b22575060095462010000900461ffff16612b32565b50600954600160201b900461ffff165b6000612710612b4183866131f4565b612b4b91906131d2565b30600090815260016020526040812080549293508392909190612b6f90849061337e565b909155505060405181815230906001600160a01b038916906000805160206134648339815191529060200160405180910390a3612bac8185613213565b979650505050505050565b6001600160a01b0391909116815260200190565b8015158114611d0757600080fd5b60008060408385031215612bec57600080fd5b8235612bf781612bcb565b91506020830135612c0781612bcb565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612c5057612c50612c12565b604052919050565b60006001600160401b03821115612c7157612c71612c12565b5060051b60200190565b6001600160a01b0381168114611d0757600080fd5b600082601f830112612ca157600080fd5b81356020612cb6612cb183612c58565b612c28565b82815260059290921b84018101918181019086841115612cd557600080fd5b8286015b84811015612cf9578035612cec81612c7b565b8352918301918301612cd9565b509695505050505050565b60008060408385031215612d1757600080fd5b82356001600160401b03811115612d2d57600080fd5b612d3985828601612c90565b9250506020830135612c0781612bcb565b600060208083528351808285015260005b81811015612d7757858101830151858201604001528201612d5b565b81811115612d89576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612db257600080fd5b8235612dbd81612c7b565b946020939093013593505050565b600060208284031215612ddd57600080fd5b813561262981612c7b565b600080600060608486031215612dfd57600080fd5b8335612e0881612c7b565b92506020840135612e1881612c7b565b929592945050506040919091013590565b60008060408385031215612e3c57600080fd5b50508035926020909101359150565b60008060408385031215612e5e57600080fd5b82356001600160401b0380821115612e7557600080fd5b612e8186838701612c90565b9350602091508185013581811115612e9857600080fd5b85019050601f81018613612eab57600080fd5b8035612eb9612cb182612c58565b81815260059190911b82018301908381019088831115612ed857600080fd5b928401925b82841015612ef657833582529284019290840190612edd565b80955050505050509250929050565b803561ffff81168114612f1757600080fd5b919050565b600080600060608486031215612f3157600080fd5b612f3a84612f05565b9250612f4860208501612f05565b9150612f5660408501612f05565b90509250925092565b600080600080600060a08688031215612f7757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612fad57600080fd5b8235612bf781612c7b565b60008060408385031215612fcb57600080fd5b612fd483612f05565b9150612fe260208401612f05565b90509250929050565b600060208284031215612ffd57600080fd5b813561262981612bcb565b6000806040838503121561301b57600080fd5b823561302681612c7b565b91506020830135612c0781612c7b565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b600081518084526020808501945080840160005b8381101561309a5781516001600160a01b031687529582019590820190600101613075565b509495945050505050565b6040815260006130b86040830185613061565b905082151560208301529392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561311a578160001904821115613100576131006130c9565b8085161561310d57918102915b93841c93908002906130e4565b509250929050565b60008261313157506001610a6a565b8161313e57506000610a6a565b8160018114613154576002811461315e5761317a565b6001915050610a6a565b60ff84111561316f5761316f6130c9565b50506001821b610a6a565b5060208310610133831016604e8410600b841016171561319d575081810a610a6a565b6131a783836130df565b80600019048211156131bb576131bb6130c9565b029392505050565b600061262960ff841683613122565b6000826131ef57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561320e5761320e6130c9565b500290565b600082821015613225576132256130c9565b500390565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8103613256576132566130c9565b60010192915050565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6001600160a01b039290921682521515602082015260400190565b600061ffff8083168185168083038211156132f4576132f46130c9565b01949350505050565b60006020828403121561330f57600080fd5b815161262981612c7b565b6001600160a01b0392831681529116602082015260400190565b60006020828403121561334657600080fd5b815161262981612bcb565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b60008219821115613391576133916130c9565b500190565b85815284602082015260a0604082015260006133b560a0830186613061565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156133e757600080fd5b8351925060208401519150604084015190509250925092565b600061ffff8381169083168181101561341b5761341b6130c9565b03939250505056fe7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532578be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204f1854e8104212d5f04ff4aab1b8313f969dd7e4e06085be05f92e0d14b7b2ed64736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106102695760003560e01c806303fd2a45146102755780630445b667146102a1578063044df726146102c557806305bbedb6146102e7578063069d955f1461030757806306fdde031461035c5780630758d92414610391578063095ea7b3146103b15780630dcbcf1c146103e15780630fa604e41461041a57806318160ddd1461042f57806323b872dd1461044457806326003957146104645780632610eaca146104845780632b28fc7a146104a45780632e8fa821146104ba578063313ce567146104d057806332cde664146104f757806333251a0b1461051757806334cd82601461053757806336fddb04146105575780633f3cf56c14610577578063452ed4f1146105975780634ada218b146105b75780634fb2e45d146105d15780634fbee193146105f157806350a8e0161461062a578063590ffdce146106495780635c24b074146106695780635cce86cd146106895780636ebd0078146106c257806370a08231146106d7578063715018a6146106f757806380c581d11461070c578063893d20e81461072c5780638a63bd9b1461074a5780638a8c523c1461075f57806395d89b411461035c578063a9059cbb14610774578063b1b08f71146104a4578063b3d514fb146104a4578063bcd96a2514610794578063cab5ebea146107b4578063cf847706146107d4578063dd62ed3e14610804578063e4fcfd181461084a578063eafb5a3c14610860578063eb50e70e14610880578063ee5d9c2d146108a0578063eec2744e146108b5578063f94aa1b4146108d5578063fdb78c0e146108f5578063fe575a8714610914578063feadde9c1461093457600080fd5b3661027057005b600080fd5b34801561028157600080fd5b5061028b61dead81565b6040516102989190612bb7565b60405180910390f35b3480156102ad57600080fd5b506102b760115481565b604051908152602001610298565b3480156102d157600080fd5b506102e56102e0366004612bd9565b610954565b005b3480156102f357600080fd5b506102e5610302366004612d04565b6109f8565b34801561031357600080fd5b506009546103379061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610298565b34801561036857600080fd5b5060408051808201825260068152654d696e61746f60d01b602082015290516102989190612d4a565b34801561039d57600080fd5b50600b5461028b906001600160a01b031681565b3480156103bd57600080fd5b506103d16103cc366004612d9f565b610a59565b6040519015158152602001610298565b3480156103ed57600080fd5b506103d16103fc366004612dcb565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561042657600080fd5b506102b7610a70565b34801561043b57600080fd5b506102b7610a90565b34801561045057600080fd5b506103d161045f366004612de8565b610ad2565b34801561047057600080fd5b506102e561047f366004612e29565b610b4a565b34801561049057600080fd5b506102e561049f366004612e4b565b610c68565b3480156104b057600080fd5b506102b76104b081565b3480156104c657600080fd5b506102b760125481565b3480156104dc57600080fd5b506104e5610d95565b60405160ff9091168152602001610298565b34801561050357600080fd5b506102e5610512366004612f1c565b610dc3565b34801561052357600080fd5b506102e5610532366004612dcb565b610e9e565b34801561054357600080fd5b506102e5610552366004612f5f565b610f32565b34801561056357600080fd5b506102e5610572366004612f9a565b610fcb565b34801561058357600080fd5b506102e5610592366004612e29565b611020565b3480156105a357600080fd5b50600c5461028b906001600160a01b031681565b3480156105c357600080fd5b506015546103d19060ff1681565b3480156105dd57600080fd5b506102e56105ec366004612dcb565b611146565b3480156105fd57600080fd5b506103d161060c366004612dcb565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561063657600080fd5b506015546103d190610100900460ff1681565b34801561065557600080fd5b506102e5610664366004612f9a565b611256565b34801561067557600080fd5b506102e5610684366004612dcb565b6112ab565b34801561069557600080fd5b506103d16106a4366004612dcb565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156106ce57600080fd5b506102b7611358565b3480156106e357600080fd5b506102b76106f2366004612dcb565b611373565b34801561070357600080fd5b506102e561138e565b34801561071857600080fd5b506102e5610727366004612f9a565b6113fb565b34801561073857600080fd5b506000546001600160a01b031661028b565b34801561075657600080fd5b506103d1611539565b34801561076b57600080fd5b506102e5611584565b34801561078057600080fd5b506103d161078f366004612d9f565b611772565b3480156107a057600080fd5b506102e56107af366004612fb8565b611789565b3480156107c057600080fd5b506102e56107cf366004612feb565b611882565b3480156107e057600080fd5b50600a546103379061ffff80821691620100008104821691600160201b9091041683565b34801561081057600080fd5b506102b761081f366004613008565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561085657600080fd5b506102b7600f5481565b34801561086c57600080fd5b506102e561087b366004612dcb565b6118ee565b34801561088c57600080fd5b506102e561089b366004612dcb565b611c00565b3480156108ac57600080fd5b506102e5611c4c565b3480156108c157600080fd5b506102e56108d0366004612f9a565b611d0a565b3480156108e157600080fd5b50600d5461028b906001600160a01b031681565b34801561090157600080fd5b50600e546103d190610100900460ff1681565b34801561092057600080fd5b506103d161092f366004612dcb565b611d6b565b34801561094057600080fd5b506102e561094f366004612f9a565b611de3565b6000546001600160a01b031633146109875760405162461bcd60e51b815260040161097e90613036565b60405180910390fd5b60155460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b1580156109dc57600080fd5b505af11580156109f0573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610a225760405162461bcd60e51b815260040161097e90613036565b6015546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb6906109c290859085906004016130a5565b6000610a66338484611e38565b5060015b92915050565b6000610a7e6012600a6131c3565b601454610a8b91906131d2565b905090565b6000610a9e6012600a6131c3565b610aac90633b9aca006131f4565b600003610ab857600080fd5b610ac46012600a6131c3565b610a8b90633b9aca006131f4565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610b37576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610b31908490613213565b90915550505b610b42848484611ee5565b949350505050565b6000546001600160a01b03163314610b745760405162461bcd60e51b815260040161097e90613036565b6064610b826012600a6131c3565b610b9090633b9aca006131f4565b610b9a91906131d2565b8183610ba86012600a6131c3565b610bb690633b9aca006131f4565b610bc091906131f4565b610bca91906131d2565b1015610c315760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b606482015260840161097e565b8082610c3f6012600a6131c3565b610c4d90633b9aca006131f4565b610c5791906131f4565b610c6191906131d2565b6014555050565b6000546001600160a01b03163314610c925760405162461bcd60e51b815260040161097e90613036565b8051825114610cdb5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b604482015260640161097e565b60005b82518160ff161015610d9057818160ff1681518110610cff57610cff61322a565b6020026020010151610d1033611373565b1015610d1b57600080fd5b610d7d33848360ff1681518110610d3457610d3461322a565b60200260200101516012600a610d4a91906131c3565b858560ff1681518110610d5f57610d5f61322a565b6020026020010151610d7191906131f4565b6000806000600161230d565b5080610d8881613240565b915050610cde565b505050565b6000610da36012600a6131c3565b610db190633b9aca006131f4565b600003610dbd57600080fd5b50601290565b6000546001600160a01b03163314610ded5760405162461bcd60e51b815260040161097e90613036565b6104b08361ffff1611158015610e0957506104b08261ffff1611155b8015610e1b57506104b08161ffff1611155b610e615760405162461bcd60e51b815260206004820152601760248201527621b0b73737ba1032bc31b2b2b21036b0bc34b6bab6b99760491b604482015260640161097e565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921761ffff60201b1916600160201b9190931602919091179055565b6000546001600160a01b03163314610ec85760405162461bcd60e51b815260040161097e90613036565b6015546040516333251a0b60e01b8152620100009091046001600160a01b0316906333251a0b90610efd908490600401612bb7565b600060405180830381600087803b158015610f1757600080fd5b505af1158015610f2b573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314610f5c5760405162461bcd60e51b815260040161097e90613036565b8385610f6a6012600a6131c3565b610f7890633b9aca006131f4565b610f8291906131f4565b610f8c91906131d2565b6011558183610f9d6012600a6131c3565b610fab90633b9aca006131f4565b610fb591906131f4565b610fbf91906131d2565b601255600f5550505050565b6000546001600160a01b03163314610ff55760405162461bcd60e51b815260040161097e90613036565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461104a5760405162461bcd60e51b815260040161097e90613036565b6103e86110596012600a6131c3565b61106790633b9aca006131f4565b61107191906131d2565b818361107f6012600a6131c3565b61108d90633b9aca006131f4565b61109791906131f4565b6110a191906131d2565b101561110f5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f766044820152763290181718929037b3103a37ba30b61039bab838363c9760491b606482015260840161097e565b808261111d6012600a6131c3565b61112b90633b9aca006131f4565b61113591906131f4565b61113f91906131d2565b6013555050565b6000546001600160a01b031633146111705760405162461bcd60e51b815260040161097e90613036565b6001600160a01b0381166111965760405162461bcd60e51b815260040161097e9061325f565b61deac196001600160a01b038216016111c15760405162461bcd60e51b815260040161097e9061325f565b600080546111da916001600160a01b0390911690611256565b6111e5816001611256565b600080546111fb906001600160a01b0316611373565b111561121d5760005461121b906001600160a01b031682610d7182611373565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182916000805160206134448339815191529190a350565b6000546001600160a01b031633146112805760405162461bcd60e51b815260040161097e90613036565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112d55760405162461bcd60e51b815260040161097e90613036565b60155460ff16156112e557600080fd5b306001600160a01b0382160361132e5760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b604482015260640161097e565b601580546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60006113666012600a6131c3565b601354610a8b91906131d2565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b031633146113b85760405162461bcd60e51b815260040161097e90613036565b600080546113d1916001600160a01b0390911690611256565b600080546001600160a01b03191681556040518190600080516020613444833981519152908290a3565b6000546001600160a01b031633146114255760405162461bcd60e51b815260040161097e90613036565b801515600003611480576001600160a01b03808316600090815260026020526040808220805460ff1916905560155490516380c581d160e01b815262010000909104909216916380c581d1916109c2918691906004016132bc565b600354156114da576203f4806003544261149a9190613213565b116114da5760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b604482015260640161097e565b6001600160a01b0380831660009081526002602052604090819020805460ff191660019081179091554260035560155491516380c581d160e01b815262010000909204909216916380c581d1916109c29186916004016132bc565b5050565b600080546001600160a01b031633146115645760405162461bcd60e51b815260040161097e90613036565b600b5461157e9030906001600160a01b0316600019611e38565b50600190565b6000546001600160a01b031633146115ae5760405162461bcd60e51b815260040161097e90613036565b60155460ff16156115fc5760405162461bcd60e51b815260206004820152601860248201527754726164696e6720616c726561647920656e61626c65642160401b604482015260640161097e565b601554610100900460ff1661164e5760405162461bcd60e51b81526020600482015260186024820152772634b8bab4b234ba3c9036bab9ba1031329030b23232b21760411b604482015260640161097e565b6015546201000090046001600160a01b031661167e576015805462010000600160b01b0319163062010000021790555b601554600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff431660248201526001600160401b034216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156116ef57600080fd5b505af1925050508015611700575060015b506015805460ff19166001179055600c5461271090611727906001600160a01b0316611373565b61173290600a6131f4565b61173c91906131d2565b601155600c5461271090611758906001600160a01b0316611373565b6117639060196131f4565b61176d91906131d2565b601255565b600061177f338484611ee5565b5060019392505050565b6000546001600160a01b031633146117b35760405162461bcd60e51b815260040161097e90613036565b600a805461ffff838116620100000263ffffffff19909216908516171790556117dc81836132d7565b600a805461ffff60201b1916600160201b61ffff9384160217905560095460009161181091620100008104821691166132d7565b600a5461ffff9182169250600160201b900416811015610d905760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b606482015260840161097e565b6000546001600160a01b031633146118ac5760405162461bcd60e51b815260040161097e90613036565b600e80548215156101000261ff0019909116179055604051600080516020613424833981519152906118e390831515815260200190565b60405180910390a150565b6000546001600160a01b031633146119185760405162461bcd60e51b815260040161097e90613036565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561195d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198191906132fd565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f291906132fd565b6040518363ffffffff1660e01b8152600401611a0f92919061331a565b602060405180830381865afa158015611a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5091906132fd565b90506001600160a01b038116611bb857816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac291906132fd565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3391906132fd565b6040518363ffffffff1660e01b8152600401611b5092919061331a565b6020604051808303816000875af1158015611b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9391906132fd565b600c80546001600160a01b0319166001600160a01b0392909216919091179055611bd4565b600c80546001600160a01b0319166001600160a01b0383161790555b600b80546001600160a01b0319166001600160a01b038416908117909155610d90903090600019611e38565b6000546001600160a01b03163314611c2a5760405162461bcd60e51b815260040161097e90613036565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611c765760405162461bcd60e51b815260040161097e90613036565b601554610100900460ff1615611ccd5760405162461bcd60e51b815260206004820152601c60248201527b21b0b73737ba1031b0b6361030b33a32b9103634b8bab4b234ba3c9760211b604482015260640161097e565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611d07573d6000803e3d6000fd5b50565b6000546001600160a01b03163314611d345760405162461bcd60e51b815260040161097e90613036565b6015546040516377613a2760e11b8152620100009091046001600160a01b03169063eec2744e906109c290859085906004016132bc565b60155460405163fe575a8760e01b81526000916201000090046001600160a01b03169063fe575a8790611da2908590600401612bb7565b602060405180830381865afa158015611dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6a9190613334565b6000546001600160a01b03163314611e0d5760405162461bcd60e51b815260040161097e90613036565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b038316611e5e5760405162461bcd60e51b815260040161097e90613351565b6001600160a01b038216611e845760405162461bcd60e51b815260040161097e90613351565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611f4b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161097e565b6001600160a01b038316611fad5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161097e565b6000821161200f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161097e565b6001600160a01b0384166000908152600260205260408120548190819060ff161561203d576001925061206b565b6001600160a01b03861660009081526002602052604090205460ff1615612067576001915061206b565b5060015b612075878761255b565b156122385760155460ff166120c75760405162461bcd60e51b815260206004820152601860248201527754726164696e67206e6f742079657420656e61626c65642160401b604482015260640161097e565b82806120d05750815b1561217f576001600160a01b03871660009081526008602052604090205460ff1615801561211757506001600160a01b03861660009081526008602052604090205460ff16155b1561217f5760135485111561217f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161097e565b600b546001600160a01b0387811691161480159061219b575081155b15612238576001600160a01b03861660009081526008602052604090205460ff1661223857601454856121cd88611373565b6121d7919061337e565b11156122385760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b606482015260840161097e565b6001600160a01b03871660009081526007602052604090205460019060ff168061227a57506001600160a01b03871660009081526007602052604090205460ff165b15612283575060005b82156122f257600e5460ff161580156122a35750600e54610100900460ff165b156122f25742600f546010546122b9919061337e565b116122f25760006122c930611373565b905060115481106122f05760125481106122e257506012545b6122eb81612630565b426010555b505b6123018888888488888861230d565b98975050505050505050565b601554600090610100900460ff166123f25761232988886129d7565b601554610100900460ff161580156123465750612346888861255b565b801561236b57506001600160a01b03881660009081526006602052604090205460ff16155b801561239057506001600160a01b03871660009081526006602052604090205460ff16155b801561239a575081155b156123f25760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b606482015260840161097e565b6123fc888861255b565b156124965760155460405163ecd07a5360e01b81526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801561247f575060408051601f3d908101601f1916820190925261247c91810190613334565b60015b61248857600080fd5b90508061249457600080fd5b505b6001600160a01b038816600090815260016020526040812080548892906124be908490613213565b9091555060009050856124d157866124dd565b6124dd8986868a612af3565b6001600160a01b03891660009081526001602052604081208054929350839290919061250a90849061337e565b92505081905550876001600160a01b0316896001600160a01b03166000805160206134648339815191528360405161254491815260200190565b60405180910390a350600198975050505050505050565b600080546001600160a01b0384811691161480159061258857506000546001600160a01b03838116911614155b801561259f57506000546001600160a01b03163214155b80156125c457506001600160a01b03821660009081526005602052604090205460ff16155b80156125e957506001600160a01b03831660009081526005602052604090205460ff16155b801561260057506001600160a01b03821661dead14155b801561261457506001600160a01b03821615155b801561262957506001600160a01b0383163014155b9392505050565b600e805460ff1916600117905560408051606081018252600a5461ffff808216835262010000820481166020840152600160201b909104169181018290529060000361267c57506129ca565b306000908152600460209081526040808320600b546001600160a01b03168452909152902054600019146126d557306000908152600460209081526040808320600b546001600160a01b03168452909152902060001990555b60006002826040015161ffff16836000015161ffff16856126f691906131f4565b61270091906131d2565b61270a91906131d2565b905060006127188285613213565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106127525761275261322a565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156127ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127cf91906132fd565b816001815181106127e2576127e261322a565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac94790612828908590600090869030904290600401613396565b600060405180830381600087803b15801561284257600080fd5b505af1158015612856573d6000803e3d6000fd5b504792506000915084905061286b86846131f4565b61287591906131d2565b9050841561294d57600b5460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156128eb573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061291091906133d2565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6129578183613213565b915085600001518660400181815161296f9190613400565b61ffff908116909152602088015184925016156129c257600d546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156129c0573d6000803e3d6000fd5b505b505050505050505b50600e805460ff19169055565b601554610100900460ff1615612a3b5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b606482015260840161097e565b612a45828261255b565b158015612a5f5750600c546001600160a01b038281169116145b15611535576001600160a01b038083166000908152600560205260409020805460ff191660011790556015805461ff001916610100179081905562010000900416612abe576015805462010000600160b01b0319163062010000021790555b600e805461ff001916610100179055604051600181526000805160206134248339815191529060200160405180910390a15050565b6000808415612b09575060095461ffff16612b32565b8315612b22575060095462010000900461ffff16612b32565b50600954600160201b900461ffff165b6000612710612b4183866131f4565b612b4b91906131d2565b30600090815260016020526040812080549293508392909190612b6f90849061337e565b909155505060405181815230906001600160a01b038916906000805160206134648339815191529060200160405180910390a3612bac8185613213565b979650505050505050565b6001600160a01b0391909116815260200190565b8015158114611d0757600080fd5b60008060408385031215612bec57600080fd5b8235612bf781612bcb565b91506020830135612c0781612bcb565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612c5057612c50612c12565b604052919050565b60006001600160401b03821115612c7157612c71612c12565b5060051b60200190565b6001600160a01b0381168114611d0757600080fd5b600082601f830112612ca157600080fd5b81356020612cb6612cb183612c58565b612c28565b82815260059290921b84018101918181019086841115612cd557600080fd5b8286015b84811015612cf9578035612cec81612c7b565b8352918301918301612cd9565b509695505050505050565b60008060408385031215612d1757600080fd5b82356001600160401b03811115612d2d57600080fd5b612d3985828601612c90565b9250506020830135612c0781612bcb565b600060208083528351808285015260005b81811015612d7757858101830151858201604001528201612d5b565b81811115612d89576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612db257600080fd5b8235612dbd81612c7b565b946020939093013593505050565b600060208284031215612ddd57600080fd5b813561262981612c7b565b600080600060608486031215612dfd57600080fd5b8335612e0881612c7b565b92506020840135612e1881612c7b565b929592945050506040919091013590565b60008060408385031215612e3c57600080fd5b50508035926020909101359150565b60008060408385031215612e5e57600080fd5b82356001600160401b0380821115612e7557600080fd5b612e8186838701612c90565b9350602091508185013581811115612e9857600080fd5b85019050601f81018613612eab57600080fd5b8035612eb9612cb182612c58565b81815260059190911b82018301908381019088831115612ed857600080fd5b928401925b82841015612ef657833582529284019290840190612edd565b80955050505050509250929050565b803561ffff81168114612f1757600080fd5b919050565b600080600060608486031215612f3157600080fd5b612f3a84612f05565b9250612f4860208501612f05565b9150612f5660408501612f05565b90509250925092565b600080600080600060a08688031215612f7757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612fad57600080fd5b8235612bf781612c7b565b60008060408385031215612fcb57600080fd5b612fd483612f05565b9150612fe260208401612f05565b90509250929050565b600060208284031215612ffd57600080fd5b813561262981612bcb565b6000806040838503121561301b57600080fd5b823561302681612c7b565b91506020830135612c0781612c7b565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b600081518084526020808501945080840160005b8381101561309a5781516001600160a01b031687529582019590820190600101613075565b509495945050505050565b6040815260006130b86040830185613061565b905082151560208301529392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561311a578160001904821115613100576131006130c9565b8085161561310d57918102915b93841c93908002906130e4565b509250929050565b60008261313157506001610a6a565b8161313e57506000610a6a565b8160018114613154576002811461315e5761317a565b6001915050610a6a565b60ff84111561316f5761316f6130c9565b50506001821b610a6a565b5060208310610133831016604e8410600b841016171561319d575081810a610a6a565b6131a783836130df565b80600019048211156131bb576131bb6130c9565b029392505050565b600061262960ff841683613122565b6000826131ef57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561320e5761320e6130c9565b500290565b600082821015613225576132256130c9565b500390565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8103613256576132566130c9565b60010192915050565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6001600160a01b039290921682521515602082015260400190565b600061ffff8083168185168083038211156132f4576132f46130c9565b01949350505050565b60006020828403121561330f57600080fd5b815161262981612c7b565b6001600160a01b0392831681529116602082015260400190565b60006020828403121561334657600080fd5b815161262981612bcb565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b60008219821115613391576133916130c9565b500190565b85815284602082015260a0604082015260006133b560a0830186613061565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156133e757600080fd5b8351925060208401519150604084015190509250925092565b600061ffff8381169083168181101561341b5761341b6130c9565b03939250505056fe7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532578be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204f1854e8104212d5f04ff4aab1b8313f969dd7e4e06085be05f92e0d14b7b2ed64736f6c634300080d0033

Deployed Bytecode Sourcemap

4276:20128:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5864:73;;;;;;;;;;;;5895:42;5864:73;;;;;;;;;:::i;:::-;;;;;;;;6291:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;6291:28:0;222:177:1;14795:151:0;;;;;;;;;;-1:-1:-1;14795:151:0;;;;;:::i;:::-;;:::i;:::-;;14366:172;;;;;;;;;;-1:-1:-1;14366:172:0;;;;;:::i;:::-;;:::i;5353:116::-;;;;;;;;;;-1:-1:-1;5353:116:0;;;;;;;;;;;;;;;-1:-1:-1;;;5353:116:0;;;;;;;;;;3074:6:1;3107:15;;;3089:34;;3159:15;;;3154:2;3139:18;;3132:43;3211:15;;3191:18;;;3184:43;;;;3052:2;3037:18;5353:116:0;2868:365:1;10472:80:0;;;;;;;;;;-1:-1:-1;10544:5:0;;;;;;;;;;;-1:-1:-1;;;10544:5:0;;;;10472:80;;;;10544:5;10472:80;:::i;5803:26::-;;;;;;;;;;-1:-1:-1;5803:26:0;;;;-1:-1:-1;;;;;5803:26:0;;;11082:159;;;;;;;;;;-1:-1:-1;11082:159:0;;;;;:::i;:::-;;:::i;:::-;;;4550:14:1;;4543:22;4525:41;;4513:2;4498:18;11082:159:0;4385:187:1;13619:140:0;;;;;;;;;;-1:-1:-1;13619:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;13717:34:0;13693:4;13717:34;;;:25;:34;;;;;;;;;13619:140;16489:112;;;;;;;;;;;;;:::i;10143:115::-;;;;;;;;;;;;;:::i;11748:306::-;;;;;;;;;;-1:-1:-1;11748:306:0;;;;;:::i;:::-;;:::i;16103:264::-;;;;;;;;;;-1:-1:-1;16103:264:0;;;;;:::i;:::-;;:::i;22382:418::-;;;;;;;;;;-1:-1:-1;22382:418:0;;;;;:::i;:::-;;:::i;5600:42::-;;;;;;;;;;;;5638:4;5600:42;;6326:25;;;;;;;;;;;;;;;;10264:112;;;;;;;;;;;;;:::i;:::-;;;6858:4:1;6846:17;;;6828:36;;6816:2;6801:18;10264:112:0;6686:184:1;14954:397:0;;;;;;;;;;-1:-1:-1;14954:397:0;;;;;:::i;:::-;;:::i;14679:108::-;;;;;;;;;;-1:-1:-1;14679:108:0;;;;;:::i;:::-;;:::i;16609:338::-;;;;;;;;;;-1:-1:-1;16609:338:0;;;;;:::i;:::-;;:::i;13767:140::-;;;;;;;;;;-1:-1:-1;13767:140:0;;;;;:::i;:::-;;:::i;15826:269::-;;;;;;;;;;-1:-1:-1;15826:269:0;;;;;:::i;:::-;;:::i;5836:21::-;;;;;;;;;;-1:-1:-1;5836:21:0;;;;-1:-1:-1;;;;;5836:21:0;;;6482:34;;;;;;;;;;-1:-1:-1;6482:34:0;;;;;;;;8966:623;;;;;;;;;;-1:-1:-1;8966:623:0;;;;;:::i;:::-;;:::i;13484:127::-;;;;;;;;;;-1:-1:-1;13484:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13575:28:0;13551:4;13575:28;;;:19;:28;;;;;;;;;13484:127;6523:36;;;;;;;;;;-1:-1:-1;6523:36:0;;;;;;;;;;;13915:134;;;;;;;;;;-1:-1:-1;13915:134:0;;;;;:::i;:::-;;:::i;13118:218::-;;;;;;;;;;-1:-1:-1;13118:218:0;;;;;:::i;:::-;;:::i;13344:132::-;;;;;;;;;;-1:-1:-1;13344:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;13438:30:0;13414:4;13438:30;;;:21;:30;;;;;;;;;13344:132;16375:106;;;;;;;;;;;;;:::i;10784:117::-;;;;;;;;;;-1:-1:-1;10784:117:0;;;;;:::i;:::-;;:::i;9597:193::-;;;;;;;;;;;;;:::i;12610:500::-;;;;;;;;;;-1:-1:-1;12610:500:0;;;;;:::i;:::-;;:::i;10558:79::-;;;;;;;;;;-1:-1:-1;10610:7:0;10628:6;-1:-1:-1;;;;;10628:6:0;10558:79;;11567:173;;;;;;;;;;;;;:::i;21640:544::-;;;;;;;;;;;;;:::i;10909:165::-;;;;;;;;;;-1:-1:-1;10909:165:0;;;;;:::i;:::-;;:::i;15359:342::-;;;;;;;;;;-1:-1:-1;15359:342:0;;;;;:::i;:::-;;:::i;16955:164::-;;;;;;;;;;-1:-1:-1;16955:164:0;;;;;:::i;:::-;;:::i;5478:113::-;;;;;;;;;;-1:-1:-1;5478:113:0;;;;;;;;;;;;;;;-1:-1:-1;;;5478:113:0;;;;;;10643:133;;;;;;;;;;-1:-1:-1;10643:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10745:19:0;;;10727:7;10745:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10643:133;6209:44;;;;;;;;;;;;;;;;12062:540;;;;;;;;;;-1:-1:-1;12062:540:0;;;;;:::i;:::-;;:::i;15709:109::-;;;;;;;;;;-1:-1:-1;15709:109:0;;;;;:::i;:::-;;:::i;22192:182::-;;;;;;;;;;;;;:::i;14213:145::-;;;;;;;;;;-1:-1:-1;14213:145:0;;;;;:::i;:::-;;:::i;6010:122::-;;;;;;;;;;-1:-1:-1;6010:122:0;;;;-1:-1:-1;;;;;6010:122:0;;;6163:39;;;;;;;;;;-1:-1:-1;6163:39:0;;;;;;;;;;;14546:125;;;;;;;;;;-1:-1:-1;14546:125:0;;;;;:::i;:::-;;:::i;14057:148::-;;;;;;;;;;-1:-1:-1;14057:148:0;;;;;:::i;:::-;;:::i;14795:151::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;;;;;;;;;14890:9:::1;::::0;:48:::1;::::0;-1:-1:-1;;;14890:48:0;;10135:14:1;;10128:22;14890:48:0::1;::::0;::::1;10110:41:1::0;10194:14;;10187:22;10167:18;;;10160:50;14890:9:0;;;::::1;-1:-1:-1::0;;;;;14890:9:0::1;::::0;:24:::1;::::0;10083:18:1;;14890:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14795:151:::0;;:::o;14366:172::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;14474:9:::1;::::0;:56:::1;::::0;-1:-1:-1;;;14474:56:0;;:9;;;::::1;-1:-1:-1::0;;;;;14474:9:0::1;::::0;:37:::1;::::0;:56:::1;::::0;14512:8;;14522:7;;14474:56:::1;;;:::i;11082:159::-:0;11157:4;11174:37;11183:10;11195:7;11204:6;11174:8;:37::i;:::-;-1:-1:-1;11229:4:0;11082:159;;;;;:::o;16489:112::-;16534:7;16579:13;5057:2;16579;:13;:::i;:::-;16561:14;;:32;;;;:::i;:::-;16554:39;;16489:112;:::o;10143:115::-;10198:7;5120:13;5057:2;5120;:13;:::i;:::-;5103:30;;4906:13;5103:30;:::i;:::-;10224:1;10213:12;10209:31;;10229:8;;;10209:31;5120:13;5057:2;5120;:13;:::i;:::-;5103:30;;4906:13;5103:30;:::i;11748:306::-;-1:-1:-1;;;;;11869:19:0;;11848:4;11869:19;;;:11;:19;;;;;;;;11889:10;11869:31;;;;;;;;-1:-1:-1;;11869:52:0;11865:126;;-1:-1:-1;;;;;11938:19:0;;;;;;:11;:19;;;;;;;;11958:10;11938:31;;;;;;;:41;;11973:6;;11938:19;:41;;11973:6;;11938:41;:::i;:::-;;;;-1:-1:-1;;11865:126:0;12010:36;12020:6;12028:9;12039:6;12010:9;:36::i;:::-;12003:43;11748:306;-1:-1:-1;;;;11748:306:0:o;16103:264::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;16245:3:::1;5120:13;5057:2;5120;:13;:::i;:::-;5103:30;::::0;4906:13:::1;5103:30;:::i;:::-;16235:13;;;;:::i;:::-;16223:7:::0;16212;5120:13:::1;5057:2;5120;:13;:::i;:::-;5103:30;::::0;4906:13:::1;5103:30;:::i;:::-;16202:17;;;;:::i;:::-;16201:29;;;;:::i;:::-;:48;;16193:109;;;::::0;-1:-1:-1;;;16193:109:0;;13276:2:1;16193:109:0::1;::::0;::::1;13258:21:1::0;13315:2;13295:18;;;13288:30;13354:34;13334:18;;;13327:62;-1:-1:-1;;;13405:18:1;;;13398:46;13461:19;;16193:109:0::1;13074:412:1::0;16193:109:0::1;16352:7:::0;16341;5120:13:::1;5057:2;5120;:13;:::i;:::-;5103:30;::::0;4906:13:::1;5103:30;:::i;:::-;16331:17;;;;:::i;:::-;16330:29;;;;:::i;:::-;16313:14;:46:::0;-1:-1:-1;;16103:264:0:o;22382:418::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;22517:7:::1;:14;22498:8;:15;:33;22490:67;;;::::0;-1:-1:-1;;;22490:67:0;;13693:2:1;22490:67:0::1;::::0;::::1;13675:21:1::0;13732:2;13712:18;;;13705:30;-1:-1:-1;;;13751:18:1;;;13744:51;13812:18;;22490:67:0::1;13491:345:1::0;22490:67:0::1;22573:7;22568:225;22590:8;:15;22586:1;:19;;;22568:225;;;22660:7;22668:1;22660:10;;;;;;;;;;:::i;:::-;;;;;;;22635:21;22645:10;22635:9;:21::i;:::-;:35;;22627:44;;;::::0;::::1;;22686:95;22704:10;22716:8;22725:1;22716:11;;;;;;;;;;:::i;:::-;;;;;;;5057:2;22740;:13;;;;:::i;:::-;22729:7;22737:1;22729:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;22755:5;22762::::0;22769::::1;22776:4;22686:17;:95::i;:::-;-1:-1:-1::0;22607:3:0;::::1;::::0;::::1;:::i;:::-;;;;22568:225;;;;22382:418:::0;;:::o;10264:112::-;10316:5;5120:13;5057:2;5120;:13;:::i;:::-;5103:30;;4906:13;5103:30;:::i;:::-;10340:1;10329:12;10325:31;;10345:8;;;10325:31;-1:-1:-1;5057:2:0;;10264:112::o;14954:397::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;5638:4:::1;15061:6;:21;;;;:65;;;;;5688:4;15103:7;:23;;;;15061:65;:117;;;;;5742:4;15147:11;:31;;;;15061:117;15053:170;;;::::0;-1:-1:-1;;;15053:170:0;;14355:2:1;15053:170:0::1;::::0;::::1;14337:21:1::0;14394:2;14374:18;;;14367:30;-1:-1:-1;;;14413:18:1;;;14406:53;14476:18;;15053:170:0::1;14153:347:1::0;15053:170:0::1;15234:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;15270:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;15308:35:0::1;-1:-1:-1::0;;;15308:35:0;;;::::1;;::::0;;;::::1;::::0;;14954:397::o;14679:108::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;14748:9:::1;::::0;:31:::1;::::0;-1:-1:-1;;;14748:31:0;;:9;;;::::1;-1:-1:-1::0;;;;;14748:9:0::1;::::0;:22:::1;::::0;:31:::1;::::0;14771:7;;14748:31:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14679:108:::0;:::o;16609:338::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;16823:16;16803;5120:13:::1;5057:2;5120;:13;:::i;:::-;5103:30;::::0;4906:13:::1;5103:30;:::i;:::-;16793:26;;;;:::i;:::-;16792:47;;;;:::i;:::-;16776:13;:63:::0;16891:13;16874;5120::::1;5057:2;5120;:13;:::i;:::-;5103:30;::::0;4906:13:::1;5103:30;:::i;:::-;16864:23;;;;:::i;:::-;16863:41;;;;:::i;:::-;16850:10;:54:::0;16915:17:::1;:24:::0;-1:-1:-1;;;;16609:338:0:o;13767:140::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13859:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;13859:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13767:140::o;15826:269::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;15967:4:::1;5120:13;5057:2;5120;:13;:::i;:::-;5103:30;::::0;4906:13:::1;5103:30;:::i;:::-;15957:14;;;;:::i;:::-;15945:7:::0;15934;5120:13:::1;5057:2;5120;:13;:::i;:::-;5103:30;::::0;4906:13:::1;5103:30;:::i;:::-;15924:17;;;;:::i;:::-;15923:29;;;;:::i;:::-;:49;;15915:117;;;::::0;-1:-1:-1;;;15915:117:0;;14707:2:1;15915:117:0::1;::::0;::::1;14689:21:1::0;14746:2;14726:18;;;14719:30;14785:34;14765:18;;;14758:62;-1:-1:-1;;;14836:18:1;;;14829:53;14899:19;;15915:117:0::1;14505:419:1::0;15915:117:0::1;16080:7:::0;16069;5120:13:::1;5057:2;5120;:13;:::i;:::-;5103:30;::::0;4906:13:::1;5103:30;:::i;:::-;16059:17;;;;:::i;:::-;16058:29;;;;:::i;:::-;16043:12;:44:::0;-1:-1:-1;;15826:269:0:o;8966:623::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9045:22:0;::::1;9037:96;;;;-1:-1:-1::0;;;9037:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;9152:16:0;::::1;::::0;9144:90:::1;;;;-1:-1:-1::0;;;9144:90:0::1;;;;;;;:::i;:::-;9265:6;::::0;;9245:34:::1;::::0;-1:-1:-1;;;;;9265:6:0;;::::1;::::0;9245:19:::1;:34::i;:::-;9290:35;9310:8;9320:4;9290:19;:35::i;:::-;9369:1;9359:6:::0;;9349:17:::1;::::0;-1:-1:-1;;;;;9359:6:0::1;9349:9;:17::i;:::-;:21;9346:134;;;9405:6;::::0;9387:81:::1;::::0;-1:-1:-1;;;;;9405:6:0::1;9413:8:::0;9423:17:::1;9405:6:::0;9423:9:::1;:17::i;9387:81::-;;9346:134;9500:6;:17:::0;;-1:-1:-1;;;;;;9500:17:0::1;-1:-1:-1::0;;;;;9500:17:0;::::1;::::0;;::::1;::::0;;9533:38:::1;::::0;9500:17;;;;-1:-1:-1;;;;;;;;;;;9533:38:0;9500:6;9533:38:::1;8966:623:::0;:::o;13915:134::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14003:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14003:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13915:134::o;13118:218::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;13202:14:::1;::::0;::::1;;13201:15;13193:24;;;::::0;::::1;;13259:4;-1:-1:-1::0;;;;;13236:28:0;::::1;::::0;13228:55:::1;;;::::0;-1:-1:-1;;;13228:55:0;;15561:2:1;13228:55:0::1;::::0;::::1;15543:21:1::0;15600:2;15580:18;;;15573:30;-1:-1:-1;;;15619:18:1;;;15612:44;15673:18;;13228:55:0::1;15359:338:1::0;13228:55:0::1;13294:9;:34:::0;;-1:-1:-1;;;;;13294:34:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;13294:34:0;;::::1;::::0;;;::::1;::::0;;13118:218::o;16375:106::-;16416:7;16459:13;5057:2;16459;:13;:::i;:::-;16443:12;;:30;;;;:::i;10784:117::-;-1:-1:-1;;;;;10877:16:0;10850:7;10877:16;;;:7;:16;;;;;;;10784:117::o;9597:193::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;9682:6:::1;::::0;;9662:34:::1;::::0;-1:-1:-1;;;;;9682:6:0;;::::1;::::0;9662:19:::1;:34::i;:::-;9724:1;9707:19:::0;;-1:-1:-1;;;;;;9707:19:0::1;::::0;;9742:40:::1;::::0;9724:1;;-1:-1:-1;;;;;;;;;;;9742:40:0;9724:1;;9742:40:::1;9597:193::o:0;12610:500::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;12691:16;::::1;;12702:5;12691:16:::0;12687:416:::1;;-1:-1:-1::0;;;;;12724:13:0;;::::1;12740:5;12724:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12724:21:0::1;::::0;;12760:9:::1;::::0;:32;;-1:-1:-1;;;12760:32:0;;:9;;;::::1;::::0;;::::1;::::0;:19:::1;::::0;:32:::1;::::0;12732:4;;12740:5;12760:32:::1;;;:::i;12687:416::-;12829:17;::::0;:22;12825:136:::1;;12918:6;12898:17;;12880:15;:35;;;;:::i;:::-;:44;12872:73;;;::::0;-1:-1:-1;;;12872:73:0;;16193:2:1;12872:73:0::1;::::0;::::1;16175:21:1::0;16232:2;16212:18;;;16205:30;-1:-1:-1;;;16251:18:1;;;16244:46;16307:18;;12872:73:0::1;15991:340:1::0;12872:73:0::1;-1:-1:-1::0;;;;;12975:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;12975:20:0::1;12991:4;12975:20:::0;;::::1;::::0;;;13030:15:::1;13010:17;:35:::0;13060:9:::1;::::0;:31;;-1:-1:-1;;;13060:31:0;;:9;;;::::1;::::0;;::::1;::::0;:19:::1;::::0;:31:::1;::::0;12983:4;;13060:31:::1;;;:::i;12687:416::-;12610:500:::0;;:::o;11567:173::-;11631:4;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;11680:9:::1;::::0;11648:62:::1;::::0;11665:4:::1;::::0;-1:-1:-1;;;;;11680:9:0::1;-1:-1:-1::0;;11648:8:0::1;:62::i;:::-;-1:-1:-1::0;11728:4:0::1;11567:173:::0;:::o;21640:544::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;21702:14:::1;::::0;::::1;;21701:15;21693:52;;;::::0;-1:-1:-1;;;21693:52:0;;16538:2:1;21693:52:0::1;::::0;::::1;16520:21:1::0;16577:2;16557:18;;;16550:30;-1:-1:-1;;;16596:18:1;;;16589:54;16660:18;;21693:52:0::1;16336:348:1::0;21693:52:0::1;21764:16;::::0;::::1;::::0;::::1;;;21756:53;;;::::0;-1:-1:-1;;;21756:53:0;;16891:2:1;21756:53:0::1;::::0;::::1;16873:21:1::0;16930:2;16910:18;;;16903:30;-1:-1:-1;;;16949:18:1;;;16942:54;17013:18;;21756:53:0::1;16689:348:1::0;21756:53:0::1;21831:9;::::0;;;::::1;-1:-1:-1::0;;;;;21831:9:0::1;21820:99;;21871:9;:36:::0;;-1:-1:-1;;;;;;21871:36:0::1;21901:4;21871:36:::0;::::1;;::::0;;21820:99:::1;21933:9;::::0;21953:6:::1;::::0;21933:85:::1;::::0;-1:-1:-1;;;21933:85:0;;-1:-1:-1;;;;;21953:6:0;;::::1;21933:85;::::0;::::1;17265:51:1::0;17364:10;21968:12:0::1;17352:23:1::0;17332:18;;;17325:51;-1:-1:-1;;;;;21990:15:0::1;17412:31:1::0;17392:18;;;17385:59;5057:2:0::1;17460:18:1::0;;;17453:45;21933:9:0;;;::::1;;::::0;:19:::1;::::0;17237::1;;21933:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;21929:101:::0;22040:14:::1;:21:::0;;-1:-1:-1;;22040:21:0::1;22057:4;22040:21;::::0;;22099:6:::1;::::0;22115:5:::1;::::0;22089:17:::1;::::0;-1:-1:-1;;;;;22099:6:0::1;22089:9;:17::i;:::-;:22;::::0;22109:2:::1;22089:22;:::i;:::-;22088:32;;;;:::i;:::-;22072:13;:48:::0;22155:6:::1;::::0;22171:5:::1;::::0;22145:17:::1;::::0;-1:-1:-1;;;;;22155:6:0::1;22145:9;:17::i;:::-;:22;::::0;22165:2:::1;22145:22;:::i;:::-;22144:32;;;;:::i;:::-;22131:10;:45:::0;21640:544::o;10909:165::-;10987:4;11004:40;11014:10;11026:9;11037:6;11004:9;:40::i;:::-;-1:-1:-1;11062:4:0;;10909:165;-1:-1:-1;;;10909:165:0:o;15359:342::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;15438:7:::1;:29:::0;;::::1;15478:17:::0;;::::1;::::0;::::1;-1:-1:-1::0;;15478:17:0;;;15438:29;;::::1;15478:17:::0;::::1;::::0;;15526:15:::1;15492:3:::0;15458:9;15526:15:::1;:::i;:::-;15506:7;:35:::0;;-1:-1:-1;;;;15506:35:0::1;-1:-1:-1::0;;;15506:35:0::1;::::0;;::::1;;;::::0;;15587:9:::1;:17:::0;-1:-1:-1;;15568:36:0::1;::::0;15587:17;;::::1;::::0;::::1;::::0;15568:16:::1;:36;:::i;:::-;15623:7;:17:::0;15552:52:::1;::::0;;::::1;::::0;-1:-1:-1;;;;15623:17:0;::::1;;:26:::0;-1:-1:-1;15623:26:0::1;15615:78;;;::::0;-1:-1:-1;;;15615:78:0;;17940:2:1;15615:78:0::1;::::0;::::1;17922:21:1::0;17979:2;17959:18;;;17952:30;18018:34;17998:18;;;17991:62;-1:-1:-1;;;18069:18:1;;;18062:37;18116:19;;15615:78:0::1;17738:403:1::0;16955:164:0;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;17031:19:::1;:29:::0;;;::::1;;;;-1:-1:-1::0;;17031:29:0;;::::1;;::::0;;17076:35:::1;::::0;-1:-1:-1;;;;;;;;;;;17076:35:0;::::1;::::0;17053:7;4550:14:1;4543:22;4525:41;;4513:2;4498:18;;4385:187;17076:35:0::1;;;;;;;;16955:164:::0;:::o;12062:540::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;12131:20:::1;12164:9;12131:43;;12185:16;12215:10;-1:-1:-1::0;;;;;12215:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12204:40:0::1;;12253:4;12260:10;-1:-1:-1::0;;;;;12260:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12204:74;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12185:93:::0;-1:-1:-1;;;;;;12293:22:0;::::1;12289:200;;12352:10;-1:-1:-1::0;;;;;12352:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12341:43:0::1;;12393:4;12400:10;-1:-1:-1::0;;;;;12400:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12341:77;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12332:6;:86:::0;;-1:-1:-1;;;;;;12332:86:0::1;-1:-1:-1::0;;;;;12332:86:0;;;::::1;::::0;;;::::1;::::0;;12289:200:::1;;;12460:6;:17:::0;;-1:-1:-1;;;;;;12460:17:0::1;-1:-1:-1::0;;;;;12460:17:0;::::1;;::::0;;12289:200:::1;12499:9;:22:::0;;-1:-1:-1;;;;;;12499:22:0::1;-1:-1:-1::0;;;;;12499:22:0;::::1;::::0;;::::1;::::0;;;12532:62:::1;::::0;12549:4:::1;::::0;-1:-1:-1;;12532:8:0::1;:62::i;15709:109::-:0;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;15780:11:::1;:30:::0;;-1:-1:-1;;;;;;15780:30:0::1;-1:-1:-1::0;;;;;15780:30:0;;;::::1;::::0;;;::::1;::::0;;15709:109::o;22192:182::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;22259:16:::1;::::0;::::1;::::0;::::1;;;22258:17;22250:58;;;::::0;-1:-1:-1;;;22250:58:0;;18913:2:1;22250:58:0::1;::::0;::::1;18895:21:1::0;18952:2;18932:18;;;18925:30;-1:-1:-1;;;18971:18:1;;;18964:58;19039:18;;22250:58:0::1;18711:352:1::0;22250:58:0::1;22327:6;::::0;;22319:47:::1;::::0;-1:-1:-1;;;;;22327:6:0;;::::1;::::0;22344:21:::1;22319:47:::0;::::1;;;::::0;22344:21;;22319:47;22327:6;22319:47;22344:21;22327:6;22319:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22192:182::o:0;14213:145::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;14303:9:::1;::::0;:47:::1;::::0;-1:-1:-1;;;14303:47:0;;:9;;;::::1;-1:-1:-1::0;;;;;14303:9:0::1;::::0;:29:::1;::::0;:47:::1;::::0;14333:7;;14342;;14303:47:::1;;;:::i;14546:125::-:0;14631:9;;:32;;-1:-1:-1;;;14631:32:0;;14607:4;;14631:9;;;-1:-1:-1;;;;;14631:9:0;;:23;;:32;;14655:7;;14631:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14057:148::-;6951:6;;-1:-1:-1;;;;;6951:6:0;6961:10;6951:20;6943:50;;;;-1:-1:-1;;;6943:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14153:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;14153:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14057:148::o;11249:310::-;-1:-1:-1;;;;;11344:20:0;;11336:52;;;;-1:-1:-1;;;11336:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11407:21:0;;11399:53;;;;-1:-1:-1;;;11399:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11465:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11518:33;;368:25:1;;;11518:33:0;;341:18:1;11518:33:0;;;;;;;11249:310;;;:::o;17493:2062::-;17572:4;-1:-1:-1;;;;;17597:18:0;;17589:68;;;;-1:-1:-1;;;17589:68:0;;19868:2:1;17589:68:0;;;19850:21:1;19907:2;19887:18;;;19880:30;19946:34;19926:18;;;19919:62;-1:-1:-1;;;19997:18:1;;;19990:35;20042:19;;17589:68:0;19666:401:1;17589:68:0;-1:-1:-1;;;;;17676:16:0;;17668:64;;;;-1:-1:-1;;;17668:64:0;;20274:2:1;17668:64:0;;;20256:21:1;20313:2;20293:18;;;20286:30;20352:34;20332:18;;;20325:62;-1:-1:-1;;;20403:18:1;;;20396:33;20446:19;;17668:64:0;20072:399:1;17668:64:0;17760:1;17751:6;:10;17743:64;;;;-1:-1:-1;;;17743:64:0;;20678:2:1;17743:64:0;;;20660:21:1;20717:2;20697:18;;;20690:30;20756:34;20736:18;;;20729:62;-1:-1:-1;;;20807:18:1;;;20800:39;20856:19;;17743:64:0;20476:405:1;17743:64:0;-1:-1:-1;;;;;17906:13:0;;17818:8;17906:13;;;:7;:13;;;;;;17818:8;;;;17906:13;;17902:162;;;17942:4;17936:10;;17902:162;;;-1:-1:-1;;;;;17968:11:0;;;;;;:7;:11;;;;;;;;17964:100;;;18003:4;17996:11;;17964:100;;;-1:-1:-1;18048:4:0;17964:100;18077:20;18088:4;18094:2;18077:10;:20::i;:::-;18074:641;;;18118:14;;;;18114:89;;18153:34;;-1:-1:-1;;;18153:34:0;;21088:2:1;18153:34:0;;;21070:21:1;21127:2;21107:18;;;21100:30;-1:-1:-1;;;21146:18:1;;;21139:54;21210:18;;18153:34:0;20886:348:1;18114:89:0;18220:3;:11;;;;18227:4;18220:11;18217:231;;;-1:-1:-1;;;;;18256:27:0;;;;;;:21;:27;;;;;;;;18255:28;:58;;;;-1:-1:-1;;;;;;18288:25:0;;;;;;:21;:25;;;;;;;;18287:26;18255:58;18251:182;;;18356:12;;18346:6;:22;;18338:75;;;;-1:-1:-1;;;18338:75:0;;21441:2:1;18338:75:0;;;21423:21:1;21480:2;21460:18;;;21453:30;21519:34;21499:18;;;21492:62;-1:-1:-1;;;21570:18:1;;;21563:38;21618:19;;18338:75:0;21239:404:1;18338:75:0;18479:9;;-1:-1:-1;;;;;18465:24:0;;;18479:9;;18465:24;;;;:33;;;18494:4;18493:5;18465:33;18462:242;;;-1:-1:-1;;;;;18524:25:0;;;;;;:21;:25;;;;;;;;18519:170;;18608:14;;18598:6;18582:13;18592:2;18582:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18574:95;;;;-1:-1:-1;;;18574:95:0;;21983:2:1;18574:95:0;;;21965:21:1;22022:2;22002:18;;;21995:30;22061:34;22041:18;;;22034:62;-1:-1:-1;;;22112:18:1;;;22105:40;22162:19;;18574:95:0;21781:406:1;18574:95:0;-1:-1:-1;;;;;18760:25:0;;18727:12;18760:25;;;:19;:25;;;;;;18742:4;;18760:25;;;:52;;-1:-1:-1;;;;;;18789:23:0;;;;;;:19;:23;;;;;;;;18760:52;18757:98;;;-1:-1:-1;18838:5:0;18757:98;18871:4;18867:600;;;18897:6;;;;18896:7;:47;;;;-1:-1:-1;18924:19:0;;;;;;;18896:47;18892:558;;;19014:15;18993:17;;18982:8;;:28;;;;:::i;:::-;:47;18978:457;;19054:28;19085:24;19103:4;19085:9;:24::i;:::-;19054:55;;19160:13;;19136:20;:37;19132:284;;19229:10;;19205:20;:34;19202:77;;-1:-1:-1;19266:10:0;;19202:77;19305:34;19318:20;19305:12;:34::i;:::-;19377:15;19366:8;:26;19132:284;19031:404;18978:457;19485:62;19503:4;19509:2;19513:6;19521:7;19530:3;19535:4;19541:5;19485:17;:62::i;:::-;19478:69;17493:2062;-1:-1:-1;;;;;;;;17493:2062:0:o;22808:1023::-;22964:16;;22942:4;;22964:16;;;;;22959:298;;22997:28;23016:4;23022:2;22997:18;:28::i;:::-;23045:16;;;;;;;23044:17;:41;;;;;23065:20;23076:4;23082:2;23065:10;:20::i;:::-;23044:77;;;;-1:-1:-1;;;;;;23090:31:0;;;;;;:25;:31;;;;;;;;23089:32;23044:77;:111;;;;-1:-1:-1;;;;;;23126:29:0;;;;;;:25;:29;;;;;;;;23125:30;23044:111;:121;;;;;23160:5;23159:6;23044:121;23040:206;;;23186:44;;-1:-1:-1;;;23186:44:0;;22394:2:1;23186:44:0;;;22376:21:1;22433:2;22413:18;;;22406:30;22472:34;22452:18;;;22445:62;-1:-1:-1;;;22523:18:1;;;22516:32;22565:19;;23186:44:0;22192:398:1;23040:206:0;23273:20;23284:4;23290:2;23273:10;:20::i;:::-;23269:314;;;23341:9;;:37;;-1:-1:-1;;;23341:37:0;;-1:-1:-1;;;;;22853:15:1;;;23341:37:0;;;22835:34:1;22905:15;;;22885:18;;;22878:43;22937:18;;;22930:34;;;23310:12:0;;23341:9;;;;;:19;;22770:18:1;;23341:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;23341:37:0;;;;;;;;-1:-1:-1;;23341:37:0;;;;;;;;;;;;:::i;:::-;;;23337:163;;23476:8;;;23337:163;23429:5;-1:-1:-1;23520:7:0;23516:56;;23548:8;;;23516:56;23295:288;23269:314;-1:-1:-1;;;;;23595:13:0;;;;;;:7;:13;;;;;:23;;23612:6;;23595:13;:23;;23612:6;;23595:23;:::i;:::-;;;;-1:-1:-1;23629:22:0;;-1:-1:-1;23655:7:0;23654:55;;23703:6;23654:55;;;23666:34;23676:4;23682:3;23687:4;23693:6;23666:9;:34::i;:::-;-1:-1:-1;;;;;23720:11:0;;;;;;:7;:11;;;;;:29;;23629:80;;-1:-1:-1;23629:80:0;;23720:11;;;:29;;23629:80;;23720:29;:::i;:::-;;;;;;;;23782:2;-1:-1:-1;;;;;23767:34:0;23776:4;-1:-1:-1;;;;;23767:34:0;-1:-1:-1;;;;;;;;;;;23786:14:0;23767:34;;;;368:25:1;;356:2;341:18;;222:177;23767:34:0;;;;;;;;-1:-1:-1;23819:4:0;;22808:1023;-1:-1:-1;;;;;;;;22808:1023:0:o;17127:358::-;17196:4;17228:6;;-1:-1:-1;;;;;17220:14:0;;;17228:6;;17220:14;;;;:43;;-1:-1:-1;17257:6:0;;-1:-1:-1;;;;;17251:12:0;;;17257:6;;17251:12;;17220:43;:79;;;;-1:-1:-1;17293:6:0;;-1:-1:-1;;;;;17293:6:0;17280:9;:19;;17220:79;:118;;;;-1:-1:-1;;;;;;17317:21:0;;;;;;:17;:21;;;;;;;;17316:22;17220:118;:159;;;;-1:-1:-1;;;;;;17356:23:0;;;;;;:17;:23;;;;;;;;17355:24;17220:159;:186;;;;-1:-1:-1;;;;;;17396:10:0;;5895:42;17396:10;;17220:186;:219;;;;-1:-1:-1;;;;;;17423:16:0;;;;17220:219;:257;;;;-1:-1:-1;;;;;;17456:21:0;;17472:4;17456:21;;17220:257;17213:264;17127:358;-1:-1:-1;;;17127:358:0:o;19563:1552::-;6845:6;:13;;-1:-1:-1;;6845:13:0;6854:4;6845:13;;;19647:30:::1;::::0;;::::1;::::0;::::1;::::0;;19670:7:::1;19647:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;-1:-1:-1;;;19647:30:0;;::::1;;::::0;;;;;;;6845:6;19692:21;19688:60:::1;;19730:7;;;19688:60;19783:4;19763:26;::::0;;;:11:::1;:26;::::0;;;;;;;19798:9:::1;::::0;-1:-1:-1;;;;;19798:9:0::1;19763:46:::0;;;;;;;;-1:-1:-1;;19763:67:0::1;19760:165;;19867:4;19847:26;::::0;;;:11:::1;:26;::::0;;;;;;;19882:9:::1;::::0;-1:-1:-1;;;;;19882:9:0::1;19847:46:::0;;;;;;;-1:-1:-1;;19847:66:0;;19760:165:::1;19937:17;20022:1;20002:6;:16;;;19958:60;;19982:6;:16;;;19959:39;;:20;:39;;;;:::i;:::-;19958:60;;;;:::i;:::-;19957:66;;;;:::i;:::-;19937:86:::0;-1:-1:-1;20034:15:0::1;20052:32;19937:86:::0;20052:20;:32:::1;:::i;:::-;20129:16;::::0;;20143:1:::1;20129:16:::0;;;;;::::1;::::0;;20034:50;;-1:-1:-1;20105:21:0::1;::::0;20129:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20129:16:0::1;20105:40;;20174:4;20156;20161:1;20156:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20156:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;20200:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;20200:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;20156:7;;20200:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20190:4;20195:1;20190:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20190:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;20229:9:::1;::::0;:186:::1;::::0;-1:-1:-1;;;20229:186:0;;:9;::::1;::::0;:60:::1;::::0;:186:::1;::::0;20304:7;;20229:9:::1;::::0;20342:4;;20369::::1;::::0;20389:15:::1;::::0;20229:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;20449:21:0::1;::::0;-1:-1:-1;20428:18:0::1;::::0;-1:-1:-1;20535:7:0;;-1:-1:-1;20509:22:0::1;20522:9:::0;20449:21;20509:22:::1;:::i;:::-;20508:34;;;;:::i;:::-;20481:61:::0;-1:-1:-1;20559:13:0;;20555:328:::1;;20589:9;::::0;:222:::1;::::0;-1:-1:-1;;;20589:222:0;;20666:4:::1;20589:222;::::0;::::1;23903:34:1::0;23953:18;;;23946:34;;;20589:9:0::1;23996:18:1::0;;;23989:34;;;24039:18;;;24032:34;5895:42:0::1;24082:19:1::0;;;24075:44;20781:15:0::1;24135:19:1::0;;;24128:35;-1:-1:-1;;;;;20589:9:0;;::::1;::::0;:25:::1;::::0;20622:16;;23837:19:1;;20589:222:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;20831:40:0::1;::::0;;24659:25:1;;;24715:2;24700:18;;24693:34;;;20831:40:0::1;::::0;-1:-1:-1;24632:18:1;20831:40:0::1;;;;;;;20555:328;20895:30;20909:16:::0;20895:30;::::1;:::i;:::-;;;20956:6;:16;;;20936:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;21029:10:::1;::::0;::::1;::::0;21004;;-1:-1:-1;21029:14:0::1;::::0;21025:83:::1;;21060:11;:15:::0;:36:::1;::::0;-1:-1:-1;;;;;21060:15:0;;::::1;::::0;:36;::::1;;;::::0;21085:10;;21060:15:::1;:36:::0;:15;:36;21085:10;21060:15;:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21025:83;19636:1479;;;;;;;6869:1;-1:-1:-1::0;6881:6:0;:14;;-1:-1:-1;;6881:14:0;;;19563:1552::o;21123:509::-;21206:16;;;;;;;21205:17;21197:65;;;;-1:-1:-1;;;21197:65:0;;25162:2:1;21197:65:0;;;25144:21:1;25201:2;25181:18;;;25174:30;25240:34;25220:18;;;25213:62;-1:-1:-1;;;25291:18:1;;;25284:33;25334:19;;21197:65:0;24960:399:1;21197:65:0;21278:20;21289:4;21295:2;21278:10;:20::i;:::-;21277:21;:37;;;;-1:-1:-1;21308:6:0;;-1:-1:-1;;;;;21302:12:0;;;21308:6;;21302:12;21277:37;21273:352;;;-1:-1:-1;;;;;21331:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;21331:30:0;21357:4;21331:30;;;21376:16;:23;;-1:-1:-1;;21376:23:0;21331:30;21376:23;;;;;21425:9;;;;21414:107;;21469:9;:36;;-1:-1:-1;;;;;;21469:36:0;21499:4;21469:36;;;;;21414:107;21535:19;:26;;-1:-1:-1;;21535:26:0;;;;;21581:32;;-1:-1:-1;4525:41:1;;-1:-1:-1;;;;;;;;;;;21581:32:0;4513:2:1;4498:18;21581:32:0;;;;;;;21123:509;;:::o;23839:562::-;23927:7;23947:18;23980:3;23976:205;;;-1:-1:-1;24013:9:0;:16;;;23976:205;;;24051:4;24047:134;;;-1:-1:-1;24085:9:0;:17;;;;;;24047:134;;;-1:-1:-1;24148:9:0;:21;-1:-1:-1;;;24148:21:0;;;;24047:134;24193:17;5789:5;24213:19;24222:10;24213:6;:19;:::i;:::-;:38;;;;:::i;:::-;24280:4;24264:22;;;;:7;:22;;;;;:35;;24193:58;;-1:-1:-1;24193:58:0;;24264:22;;;:35;;24193:58;;24264:35;:::i;:::-;;;;-1:-1:-1;;24315:40:0;;368:25:1;;;24338:4:0;;-1:-1:-1;;;;;24315:40:0;;;-1:-1:-1;;;;;;;;;;;24315:40:0;356:2:1;341:18;24315:40:0;;;;;;;24375:18;24384:9;24375:6;:18;:::i;:::-;24368:25;23839:562;-1:-1:-1;;;;;;;23839:562:0:o;14:203:1:-;-1:-1:-1;;;;;178:32:1;;;;160:51;;148:2;133:18;;14:203::o;404:118::-;490:5;483:13;476:21;469:5;466:32;456:60;;512:1;509;502:12;527:376;589:6;597;650:2;638:9;629:7;625:23;621:32;618:52;;;666:1;663;656:12;618:52;705:9;692:23;724:28;746:5;724:28;:::i;:::-;771:5;-1:-1:-1;828:2:1;813:18;;800:32;841:30;800:32;841:30;:::i;:::-;890:7;880:17;;;527:376;;;;;:::o;908:127::-;969:10;964:3;960:20;957:1;950:31;1000:4;997:1;990:15;1024:4;1021:1;1014:15;1040:275;1111:2;1105:9;1176:2;1157:13;;-1:-1:-1;;1153:27:1;1141:40;;-1:-1:-1;;;;;1196:34:1;;1232:22;;;1193:62;1190:88;;;1258:18;;:::i;:::-;1294:2;1287:22;1040:275;;-1:-1:-1;1040:275:1:o;1320:183::-;1380:4;-1:-1:-1;;;;;1402:30:1;;1399:56;;;1435:18;;:::i;:::-;-1:-1:-1;1480:1:1;1476:14;1492:4;1472:25;;1320:183::o;1508:131::-;-1:-1:-1;;;;;1583:31:1;;1573:42;;1563:70;;1629:1;1626;1619:12;1644:737;1698:5;1751:3;1744:4;1736:6;1732:17;1728:27;1718:55;;1769:1;1766;1759:12;1718:55;1805:6;1792:20;1831:4;1855:60;1871:43;1911:2;1871:43;:::i;:::-;1855:60;:::i;:::-;1949:15;;;2035:1;2031:10;;;;2019:23;;2015:32;;;1980:12;;;;2059:15;;;2056:35;;;2087:1;2084;2077:12;2056:35;2123:2;2115:6;2111:15;2135:217;2151:6;2146:3;2143:15;2135:217;;;2231:3;2218:17;2248:31;2273:5;2248:31;:::i;:::-;2292:18;;2330:12;;;;2168;;2135:217;;;-1:-1:-1;2370:5:1;1644:737;-1:-1:-1;;;;;;1644:737:1:o;2386:477::-;2476:6;2484;2537:2;2525:9;2516:7;2512:23;2508:32;2505:52;;;2553:1;2550;2543:12;2505:52;2580:23;;-1:-1:-1;;;;;2615:30:1;;2612:50;;;2658:1;2655;2648:12;2612:50;2681:61;2734:7;2725:6;2714:9;2710:22;2681:61;:::i;:::-;2671:71;;;2792:2;2781:9;2777:18;2764:32;2805:28;2827:5;2805:28;:::i;3238:597::-;3350:4;3379:2;3408;3397:9;3390:21;3440:6;3434:13;3483:6;3478:2;3467:9;3463:18;3456:34;3508:1;3518:140;3532:6;3529:1;3526:13;3518:140;;;3627:14;;;3623:23;;3617:30;3593:17;;;3612:2;3589:26;3582:66;3547:10;;3518:140;;;3676:6;3673:1;3670:13;3667:91;;;3746:1;3741:2;3732:6;3721:9;3717:22;3713:31;3706:42;3667:91;-1:-1:-1;3819:2:1;3798:15;-1:-1:-1;;3794:29:1;3779:45;;;;3826:2;3775:54;;3238:597;-1:-1:-1;;;3238:597:1:o;4065:315::-;4133:6;4141;4194:2;4182:9;4173:7;4169:23;4165:32;4162:52;;;4210:1;4207;4200:12;4162:52;4249:9;4236:23;4268:31;4293:5;4268:31;:::i;:::-;4318:5;4370:2;4355:18;;;;4342:32;;-1:-1:-1;;;4065:315:1:o;4577:247::-;4636:6;4689:2;4677:9;4668:7;4664:23;4660:32;4657:52;;;4705:1;4702;4695:12;4657:52;4744:9;4731:23;4763:31;4788:5;4763:31;:::i;4829:456::-;4906:6;4914;4922;4975:2;4963:9;4954:7;4950:23;4946:32;4943:52;;;4991:1;4988;4981:12;4943:52;5030:9;5017:23;5049:31;5074:5;5049:31;:::i;:::-;5099:5;-1:-1:-1;5156:2:1;5141:18;;5128:32;5169:33;5128:32;5169:33;:::i;:::-;4829:456;;5221:7;;-1:-1:-1;;;5275:2:1;5260:18;;;;5247:32;;4829:456::o;5290:248::-;5358:6;5366;5419:2;5407:9;5398:7;5394:23;5390:32;5387:52;;;5435:1;5432;5425:12;5387:52;-1:-1:-1;;5458:23:1;;;5528:2;5513:18;;;5500:32;;-1:-1:-1;5290:248:1:o;5543:1138::-;5661:6;5669;5722:2;5710:9;5701:7;5697:23;5693:32;5690:52;;;5738:1;5735;5728:12;5690:52;5765:23;;-1:-1:-1;;;;;5837:14:1;;;5834:34;;;5864:1;5861;5854:12;5834:34;5887:61;5940:7;5931:6;5920:9;5916:22;5887:61;:::i;:::-;5877:71;;5967:2;5957:12;;6022:2;6011:9;6007:18;5994:32;6051:2;6041:8;6038:16;6035:36;;;6067:1;6064;6057:12;6035:36;6090:24;;;-1:-1:-1;6145:4:1;6137:13;;6133:27;-1:-1:-1;6123:55:1;;6174:1;6171;6164:12;6123:55;6210:2;6197:16;6233:60;6249:43;6289:2;6249:43;:::i;6233:60::-;6327:15;;;6409:1;6405:10;;;;6397:19;;6393:28;;;6358:12;;;;6433:19;;;6430:39;;;6465:1;6462;6455:12;6430:39;6489:11;;;;6509:142;6525:6;6520:3;6517:15;6509:142;;;6591:17;;6579:30;;6542:12;;;;6629;;;;6509:142;;;6670:5;6660:15;;;;;;;5543:1138;;;;;:::o;6875:159::-;6942:20;;7002:6;6991:18;;6981:29;;6971:57;;7024:1;7021;7014:12;6971:57;6875:159;;;:::o;7039:328::-;7113:6;7121;7129;7182:2;7170:9;7161:7;7157:23;7153:32;7150:52;;;7198:1;7195;7188:12;7150:52;7221:28;7239:9;7221:28;:::i;:::-;7211:38;;7268:37;7301:2;7290:9;7286:18;7268:37;:::i;:::-;7258:47;;7324:37;7357:2;7346:9;7342:18;7324:37;:::i;:::-;7314:47;;7039:328;;;;;:::o;7372:454::-;7467:6;7475;7483;7491;7499;7552:3;7540:9;7531:7;7527:23;7523:33;7520:53;;;7569:1;7566;7559:12;7520:53;-1:-1:-1;;7592:23:1;;;7662:2;7647:18;;7634:32;;-1:-1:-1;7713:2:1;7698:18;;7685:32;;7764:2;7749:18;;7736:32;;-1:-1:-1;7815:3:1;7800:19;7787:33;;-1:-1:-1;7372:454:1;-1:-1:-1;7372:454:1:o;7831:382::-;7896:6;7904;7957:2;7945:9;7936:7;7932:23;7928:32;7925:52;;;7973:1;7970;7963:12;7925:52;8012:9;7999:23;8031:31;8056:5;8031:31;:::i;8218:256::-;8284:6;8292;8345:2;8333:9;8324:7;8320:23;8316:32;8313:52;;;8361:1;8358;8351:12;8313:52;8384:28;8402:9;8384:28;:::i;:::-;8374:38;;8431:37;8464:2;8453:9;8449:18;8431:37;:::i;:::-;8421:47;;8218:256;;;;;:::o;8479:241::-;8535:6;8588:2;8576:9;8567:7;8563:23;8559:32;8556:52;;;8604:1;8601;8594:12;8556:52;8643:9;8630:23;8662:28;8684:5;8662:28;:::i;8725:388::-;8793:6;8801;8854:2;8842:9;8833:7;8829:23;8825:32;8822:52;;;8870:1;8867;8860:12;8822:52;8909:9;8896:23;8928:31;8953:5;8928:31;:::i;:::-;8978:5;-1:-1:-1;9035:2:1;9020:18;;9007:32;9048:33;9007:32;9048:33;:::i;9602:341::-;9804:2;9786:21;;;9843:2;9823:18;;;9816:30;-1:-1:-1;;;9877:2:1;9862:18;;9855:47;9934:2;9919:18;;9602:341::o;10221:461::-;10274:3;10312:5;10306:12;10339:6;10334:3;10327:19;10365:4;10394:2;10389:3;10385:12;10378:19;;10431:2;10424:5;10420:14;10452:1;10462:195;10476:6;10473:1;10470:13;10462:195;;;10541:13;;-1:-1:-1;;;;;10537:39:1;10525:52;;10597:12;;;;10632:15;;;;10573:1;10491:9;10462:195;;;-1:-1:-1;10673:3:1;;10221:461;-1:-1:-1;;;;;10221:461:1:o;10687:342::-;10888:2;10877:9;10870:21;10851:4;10908:56;10960:2;10949:9;10945:18;10937:6;10908:56;:::i;:::-;10900:64;;11014:6;11007:14;11000:22;10995:2;10984:9;10980:18;10973:50;10687:342;;;;;:::o;11034:127::-;11095:10;11090:3;11086:20;11083:1;11076:31;11126:4;11123:1;11116:15;11150:4;11147:1;11140:15;11166:422;11255:1;11298:5;11255:1;11312:270;11333:7;11323:8;11320:21;11312:270;;;11392:4;11388:1;11384:6;11380:17;11374:4;11371:27;11368:53;;;11401:18;;:::i;:::-;11451:7;11441:8;11437:22;11434:55;;;11471:16;;;;11434:55;11550:22;;;;11510:15;;;;11312:270;;;11316:3;11166:422;;;;;:::o;11593:806::-;11642:5;11672:8;11662:80;;-1:-1:-1;11713:1:1;11727:5;;11662:80;11761:4;11751:76;;-1:-1:-1;11798:1:1;11812:5;;11751:76;11843:4;11861:1;11856:59;;;;11929:1;11924:130;;;;11836:218;;11856:59;11886:1;11877:10;;11900:5;;;11924:130;11961:3;11951:8;11948:17;11945:43;;;11968:18;;:::i;:::-;-1:-1:-1;;12024:1:1;12010:16;;12039:5;;11836:218;;12138:2;12128:8;12125:16;12119:3;12113:4;12110:13;12106:36;12100:2;12090:8;12087:16;12082:2;12076:4;12073:12;12069:35;12066:77;12063:159;;;-1:-1:-1;12175:19:1;;;12207:5;;12063:159;12254:34;12279:8;12273:4;12254:34;:::i;:::-;12324:6;12320:1;12316:6;12312:19;12303:7;12300:32;12297:58;;;12335:18;;:::i;:::-;12373:20;;11593:806;-1:-1:-1;;;11593:806:1:o;12404:140::-;12462:5;12491:47;12532:4;12522:8;12518:19;12512:4;12491:47;:::i;12549:217::-;12589:1;12615;12605:132;;12659:10;12654:3;12650:20;12647:1;12640:31;12694:4;12691:1;12684:15;12722:4;12719:1;12712:15;12605:132;-1:-1:-1;12751:9:1;;12549:217::o;12771:168::-;12811:7;12877:1;12873;12869:6;12865:14;12862:1;12859:21;12854:1;12847:9;12840:17;12836:45;12833:71;;;12884:18;;:::i;:::-;-1:-1:-1;12924:9:1;;12771:168::o;12944:125::-;12984:4;13012:1;13009;13006:8;13003:34;;;13017:18;;:::i;:::-;-1:-1:-1;13054:9:1;;12944:125::o;13841:127::-;13902:10;13897:3;13893:20;13890:1;13883:31;13933:4;13930:1;13923:15;13957:4;13954:1;13947:15;13973:175;14010:3;14054:4;14047:5;14043:16;14083:4;14074:7;14071:17;14068:43;;14091:18;;:::i;:::-;14140:1;14127:15;;13973:175;-1:-1:-1;;13973:175:1:o;14929:425::-;15131:2;15113:21;;;15170:2;15150:18;;;15143:30;15209:34;15204:2;15189:18;;15182:62;15280:31;15275:2;15260:18;;15253:59;15344:3;15329:19;;14929:425::o;15702:284::-;-1:-1:-1;;;;;15888:32:1;;;;15870:51;;15964:14;15957:22;15952:2;15937:18;;15930:50;15858:2;15843:18;;15702:284::o;17509:224::-;17548:3;17576:6;17609:2;17606:1;17602:10;17639:2;17636:1;17632:10;17670:3;17666:2;17662:12;17657:3;17654:21;17651:47;;;17678:18;;:::i;:::-;17714:13;;17509:224;-1:-1:-1;;;;17509:224:1:o;18146:251::-;18216:6;18269:2;18257:9;18248:7;18244:23;18240:32;18237:52;;;18285:1;18282;18275:12;18237:52;18317:9;18311:16;18336:31;18361:5;18336:31;:::i;18402:304::-;-1:-1:-1;;;;;18632:15:1;;;18614:34;;18684:15;;18679:2;18664:18;;18657:43;18564:2;18549:18;;18402:304::o;19068:245::-;19135:6;19188:2;19176:9;19167:7;19163:23;19159:32;19156:52;;;19204:1;19201;19194:12;19156:52;19236:9;19230:16;19255:28;19277:5;19255:28;:::i;19318:343::-;19520:2;19502:21;;;19559:2;19539:18;;;19532:30;-1:-1:-1;;;19593:2:1;19578:18;;19571:49;19652:2;19637:18;;19318:343::o;21648:128::-;21688:3;21719:1;21715:6;21712:1;21709:13;21706:39;;;21725:18;;:::i;:::-;-1:-1:-1;21761:9:1;;21648:128::o;22975:582::-;23274:6;23263:9;23256:25;23317:6;23312:2;23301:9;23297:18;23290:34;23360:3;23355:2;23344:9;23340:18;23333:31;23237:4;23381:57;23433:3;23422:9;23418:19;23410:6;23381:57;:::i;:::-;-1:-1:-1;;;;;23474:32:1;;;;23469:2;23454:18;;23447:60;-1:-1:-1;23538:3:1;23523:19;23516:35;23373:65;22975:582;-1:-1:-1;;;22975:582:1:o;24174:306::-;24262:6;24270;24278;24331:2;24319:9;24310:7;24306:23;24302:32;24299:52;;;24347:1;24344;24337:12;24299:52;24376:9;24370:16;24360:26;;24426:2;24415:9;24411:18;24405:25;24395:35;;24470:2;24459:9;24455:18;24449:25;24439:35;;24174:306;;;;;:::o;24738:217::-;24777:4;24806:6;24862:10;;;;24832;;24884:12;;;24881:38;;;24899:18;;:::i;:::-;24936:13;;24738:217;-1:-1:-1;;;24738:217:1:o

Swarm Source

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