ETH Price: $3,883.20 (-1.11%)

Token

ERC-20: NERD (NERD)
 

Overview

Max Total Supply

1,000,000,000 NERD

Holders

339

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,320,000.000000000002329864 NERD

Value
$0.00
0x104d8a89234250614673803855bcfc4d95e8cd44
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
NERD

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-08
*/

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

/*


Telegram      https://t.me/nerd_token
Website       https://nerdtoken.xyz


*/


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 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 _ag, bool _ab, bool _algo) external;
    function setGasPriceLimit(uint256 gas) external;
    function removeSniper(address account) external;
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
}

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

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

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private _liquidityHolders;
   
    uint256 constant private startingSupply = 1_000_000_000;

    string constant private _name = "NERD";
    string constant private _symbol = "NERD";
    uint8 constant private _decimals = 18;

    uint256 constant private _tTotal = startingSupply * 10**_decimals;
    uint256 constant private MAX = ~uint256(0);
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

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

    struct Ratios {
        uint16 liquidity;
        uint16 marketing;
        uint16 development;
        uint16 total;
    }

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

    Ratios public _ratios = Ratios({
        liquidity: 6,
        marketing: 15,
        development: 4,
        total: 25
        });

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

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

    struct TaxWallets {
        address payable marketing;
        address payable development;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x71f70B247F26F18dCda672757F416D916d6C7f61),
        development: payable(0x17Ba5701A9E387B86B794CFfDbA76B1cAdD86E66)
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public contractSwapTimer = 0 seconds;
    uint256 private lastSwap;
    uint256 public swapThreshold;
    uint256 public swapAmount;

    uint256 private _maxTxAmount = (_tTotal * 25) / 10000;
    uint256 private _maxWalletSize = (_tTotal * 75) / 10000;

    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(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3);
        } 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;

        _finalizeTransfer(_owner, DEAD, _tTotal / 10, false, false, false, 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) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _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) { 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) private {
        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(!_hasLiqBeenAdded);
        require(initializer != address(this), "Can't be self.");
        antiSnipe = AntiSnipe(initializer);
    }

    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 _antiGas, bool _antiBlock, bool _algo) external onlyOwner {
        antiSnipe.setProtections(_antiSnipe, _antiGas, _antiBlock, _algo);
    }

    function setGasPriceLimit(uint256 gas) external onlyOwner {
        require(gas >= 300, "Too low.");
        antiSnipe.setGasPriceLimit(gas);
    }

    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 marketing, uint16 development) external onlyOwner {
        _ratios.liquidity = liquidity;
        _ratios.marketing = marketing;
        _ratios.development = development;
        _ratios.total = liquidity + marketing + development;
    }

    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 / 1000), "Max Wallet amt must be above 0.1% of total supply.");
        _maxWalletSize = (_tTotal * percent) / divisor;
    }

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

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

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

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

    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 setWallets(address payable development, address payable marketing) external onlyOwner {
        _taxWallets.development = payable(development);
        _taxWallets.marketing = payable(marketing);
    }

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

    function _hasLimits(address from, address to) private 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) private lockTheSwap {
        Ratios memory ratios = _ratios;
        if (ratios.total == 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.total) / 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.total -= ratios.liquidity;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.total;
        uint256 marketingBalance = amtBalance - developmentBalance;
        if (ratios.development > 0) {
            _taxWallets.development.transfer(developmentBalance);
        }
        if (ratios.marketing > 0) {
            _taxWallets.marketing.transfer(marketingBalance);
        }
    }

    function _checkLiquidityAdd(address from, address to) private {
        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)) / 1000;
        swapAmount = (balanceOf(lpPair) * 2) / 1000;
    }

    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 {
        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) private returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                revert("Only owner can transfer at this time.");
            }
        }

        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":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"total","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":"marketing","type":"address"},{"internalType":"address payable","name":"development","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":[],"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":"uint256","name":"gas","type":"uint256"}],"name":"setGasPriceLimit","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":"_antiGas","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"},{"internalType":"bool","name":"_algo","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","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":"development","type":"address"},{"internalType":"address payable","name":"marketing","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"}]

60806040526000600455620000176012600a62000d0c565b6200002790633b9aca0062000d1d565b620000359060001962000d55565b620000439060001962000d6c565b60095560408051606080820183526103e88083526105dc60208085019190915292840152600a805465ffffffffffff19166503e805dc03e8178155835160808101855260068152600f81850181905260048287015260199190930152600b80546001600160401b03191666190004000f000617905583518085019094527371f70b247f26f18dcda672757f416d916d6c7f618085527317ba5701a9e387b86b794cffdba76b1cadd86e6694909301849052600e80546001600160a01b0319908116909417905581549092169092179091556010805461ff0019169055600060115561271090620001369060129062000d0c565b6200014690633b9aca0062000d1d565b6200015390601962000d1d565b6200015f919062000d86565b601555612710620001736012600a62000d0c565b6200018390633b9aca0062000d1d565b6200019090604b62000d1d565b6200019c919062000d86565b6016556017805461ffff19169055620001b86012600a62000d0c565b620001c890633b9aca0062000d1d565b336000818152600260205260408120929092559060008051602062004c24833981519152620001fa6012600a62000d0c565b6200020a90633b9aca0062000d1d565b60405190815260200160405180910390a3600080546001600160a01b0319163317905560384614156200026357600c80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e17905562000359565b46606114156200029957600c80546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c317905562000359565b4660011480620002a95750466004145b80620002b55750466003145b15620002e757600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905562000359565b4661a86a14156200031e57600c80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d417905562000359565b4660fa14156200035457600c80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c2917905562000359565b600080fd5b600c60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d3919062000d9d565b6001600160a01b031663c9c65396600c60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045b919062000d9d565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620004a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ce919062000d9d565b600d80546001600160a01b0319166001600160a01b039283169081179091556000908152600360205260408120805460ff1916600117905554600c546200051d929182169116600019620005fb565b600c54620005399030906001600160a01b0316600019620005fb565b600080546001600160a01b0390811682526006602090815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055855485168652600890935290842080549092161790559054620005f4911661dead600a620005cc60128262000d0c565b620005dc90633b9aca0062000d1d565b620005e8919062000d86565b600080806001620006fc565b5062000e0e565b6001600160a01b0383166200064d5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200069b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000644565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601754600090610100900460ff1662000798576200071b888862000913565b601754610100900460ff161580156200073b57506200073b888862000a49565b15620007985760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b606482015260840162000644565b620007a4888862000a49565b15620008445760175460405163ecd07a5360e01b81526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156200082b575060408051601f3d908101601f19168201909252620008289181019062000dcf565b60015b6200083557600080fd5b9050806200084257600080fd5b505b6001600160a01b038816600090815260026020526040812080548892906200086e90849062000d6c565b90915550600090508562000883578662000891565b620008918986868a62000b27565b6001600160a01b038916600090815260026020526040812080549293508392909190620008c090849062000df3565b92505081905550876001600160a01b0316896001600160a01b031660008051602062004c2483398151915283604051620008fc91815260200190565b60405180910390a350600198975050505050505050565b601754610100900460ff1615620009795760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b606482015260840162000644565b62000985828262000a49565b158015620009a05750600d546001600160a01b038281169116145b1562000a45576001600160a01b038083166000908152600860205260409020805460ff191660011790556017805461ff00191661010017908190556201000090041662000a01576017805462010000600160b01b0319163062010000021790555b6010805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15b5050565b600080546001600160a01b0384811691161480159062000a7757506000546001600160a01b03838116911614155b801562000a8f57506000546001600160a01b03163214155b801562000ab557506001600160a01b03821660009081526008602052604090205460ff16155b801562000adb57506001600160a01b03831660009081526008602052604090205460ff16155b801562000af357506001600160a01b03821661dead14155b801562000b0857506001600160a01b03821615155b801562000b1e57506001600160a01b0383163014155b90505b92915050565b600080841562000b3f5750600a5461ffff1662000b6b565b831562000b5a5750600a5462010000900461ffff1662000b6b565b50600a54640100000000900461ffff165b600061271062000b7c838662000d1d565b62000b88919062000d86565b3060009081526002602052604081208054929350839290919062000bae90849062000df3565b909155505060405181815230906001600160a01b0389169060008051602062004c248339815191529060200160405180910390a362000bee818562000d6c565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000c5057816000190482111562000c345762000c3462000bf9565b8085161562000c4257918102915b93841c939080029062000c14565b509250929050565b60008262000c695750600162000b21565b8162000c785750600062000b21565b816001811462000c91576002811462000c9c5762000cbc565b600191505062000b21565b60ff84111562000cb05762000cb062000bf9565b50506001821b62000b21565b5060208310610133831016604e8410600b841016171562000ce1575081810a62000b21565b62000ced838362000c0f565b806000190482111562000d045762000d0462000bf9565b029392505050565b600062000b1e60ff84168362000c58565b600081600019048311821515161562000d3a5762000d3a62000bf9565b500290565b634e487b7160e01b600052601260045260246000fd5b60008262000d675762000d6762000d3f565b500690565b60008282101562000d815762000d8162000bf9565b500390565b60008262000d985762000d9862000d3f565b500490565b60006020828403121562000db057600080fd5b81516001600160a01b038116811462000dc857600080fd5b9392505050565b60006020828403121562000de257600080fd5b8151801515811462000dc857600080fd5b6000821982111562000e095762000e0962000bf9565b500190565b613e068062000e1e6000396000f3fe60806040526004361061034e5760003560e01c806350a8e016116101bb578063aa22b172116100f7578063e4fcfd1811610095578063eec2744e1161006f578063eec2744e146109e6578063f94aa1b414610a06578063fdb78c0e14610a4d578063fe575a8714610a6c57600080fd5b8063e4fcfd181461099b578063eafb5a3c146109b1578063ee5d9c2d146109d157600080fd5b8063cab5ebea116100d1578063cab5ebea146108aa578063cf847706146108ca578063d3f6a15714610935578063dd62ed3e1461095557600080fd5b8063aa22b1721461088a578063b1b08f711461058f578063b3d514fb1461058f57600080fd5b8063715018a6116101645780638a63bd9b1161013e5780638a63bd9b146108405780638a8c523c1461085557806395d89b4114610429578063a9059cbb1461086a57600080fd5b8063715018a6146107ed57806380c581d114610802578063893d20e81461082257600080fd5b80635cce86cd116101955780635cce86cd146107695780636ebd0078146107a257806370a08231146107b757600080fd5b806350a8e0161461070a578063590ffdce146107295780635c24b0741461074957600080fd5b806329dd87981161028a57806334cd826011610233578063452ed4f11161020d578063452ed4f1146106775780634ada218b146106975780634fb2e45d146106b15780634fbee193146106d157600080fd5b806334cd82601461061757806336fddb04146106375780633f3cf56c1461065757600080fd5b8063313ce56711610264578063313ce567146105bb57806332cde664146105d757806333251a0b146105f757600080fd5b806329dd87981461056f5780632b28fc7a1461058f5780632e8fa821146105a557600080fd5b806309231602116102f757806318160ddd116102d157806318160ddd146104fa57806323b872dd1461050f578063260039571461052f5780632610eaca1461054f57600080fd5b80630923160214610495578063095ea7b3146104b55780630fa604e4146104e557600080fd5b8063069d955f11610328578063069d955f146103d357806306fdde03146104295780630758d9241461047557600080fd5b806303fd2a451461035a5780630445b6671461038d57806305bbedb6146103b157600080fd5b3661035557005b600080fd5b34801561036657600080fd5b5061037061dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561039957600080fd5b506103a360135481565b604051908152602001610384565b3480156103bd57600080fd5b506103d16103cc3660046136f0565b610a8c565b005b3480156103df57600080fd5b50600a546104049061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610384565b34801561043557600080fd5b50604080518082018252600481527f4e45524400000000000000000000000000000000000000000000000000000000602082015290516103849190613742565b34801561048157600080fd5b50600c54610370906001600160a01b031681565b3480156104a157600080fd5b506103d16104b0366004613797565b610b65565b3480156104c157600080fd5b506104d56104d03660046137b0565b610c85565b6040519015158152602001610384565b3480156104f157600080fd5b506103a3610c9c565b34801561050657600080fd5b506103a3610cbc565b34801561051b57600080fd5b506104d561052a3660046137dc565b610cfb565b34801561053b57600080fd5b506103d161054a36600461381d565b610d73565b34801561055b57600080fd5b506103d161056a36600461383f565b610ec3565b34801561057b57600080fd5b506103d161058a3660046138fa565b610fe4565b34801561059b57600080fd5b506103a36109c481565b3480156105b157600080fd5b506103a360145481565b3480156105c757600080fd5b5060405160128152602001610384565b3480156105e357600080fd5b506103d16105f236600461396d565b6110cd565b34801561060357600080fd5b506103d16106123660046139b0565b611208565b34801561062357600080fd5b506103d16106323660046139cd565b6112a8565b34801561064357600080fd5b506103d1610652366004613a08565b611365565b34801561066357600080fd5b506103d161067236600461381d565b6113de565b34801561068357600080fd5b50600d54610370906001600160a01b031681565b3480156106a357600080fd5b506017546104d59060ff1681565b3480156106bd57600080fd5b506103d16106cc3660046139b0565b61152e565b3480156106dd57600080fd5b506104d56106ec3660046139b0565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561071657600080fd5b506017546104d590610100900460ff1681565b34801561073557600080fd5b506103d1610744366004613a08565b611747565b34801561075557600080fd5b506103d16107643660046139b0565b6117c0565b34801561077557600080fd5b506104d56107843660046139b0565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156107ae57600080fd5b506103a36118bc565b3480156107c357600080fd5b506103a36107d23660046139b0565b6001600160a01b031660009081526002602052604090205490565b3480156107f957600080fd5b506103d16118d7565b34801561080e57600080fd5b506103d161081d366004613a08565b611992565b34801561082e57600080fd5b506000546001600160a01b0316610370565b34801561084c57600080fd5b506104d5611b3d565b34801561086157600080fd5b506103d1611bac565b34801561087657600080fd5b506104d56108853660046137b0565b611df9565b34801561089657600080fd5b506103d16108a536600461396d565b611e10565b3480156108b657600080fd5b506103d16108c5366004613a36565b611f23565b3480156108d657600080fd5b50600b546109079061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff95861681529385166020850152918416918301919091529091166060820152608001610384565b34801561094157600080fd5b506103d1610950366004613a53565b611fc5565b34801561096157600080fd5b506103a3610970366004613a53565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156109a757600080fd5b506103a360115481565b3480156109bd57600080fd5b506103d16109cc3660046139b0565b612059565b3480156109dd57600080fd5b506103d1612429565b3480156109f257600080fd5b506103d1610a01366004613a08565b61250c565b348015610a1257600080fd5b50600e54600f54610a2d916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610384565b348015610a5957600080fd5b506010546104d590610100900460ff1681565b348015610a7857600080fd5b506104d5610a873660046139b0565b6125b4565b6000546001600160a01b03163314610adf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6017546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610b2f9085908590600401613ac5565b600060405180830381600087803b158015610b4957600080fd5b505af1158015610b5d573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610bb35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b61012c811015610c055760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610ad6565b6017546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610c6a57600080fd5b505af1158015610c7e573d6000803e3d6000fd5b5050505050565b6000610c92338484612642565b5060015b92915050565b6000610caa6012600a613bfc565b601654610cb79190613c0b565b905090565b6000610cca6012600a613bfc565b610cd890633b9aca00613c46565b610ce157600080fd5b610ced6012600a613bfc565b610cb790633b9aca00613c46565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610d60576001600160a01b038416600090815260056020908152604080832033845290915281208054849290610d5a908490613c65565b90915550505b610d6b84848461274f565b949350505050565b6000546001600160a01b03163314610dc15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6103e8610dd06012600a613bfc565b610dde90633b9aca00613c46565b610de89190613c0b565b8183610df66012600a613bfc565b610e0490633b9aca00613c46565b610e0e9190613c46565b610e189190613c0b565b1015610e8c5760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610ad6565b8082610e9a6012600a613bfc565b610ea890633b9aca00613c46565b610eb29190613c46565b610ebc9190613c0b565b6016555050565b8051825114610f145760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610ad6565b60005b82518160ff161015610fdf57818160ff1681518110610f3857610f38613c7c565b6020026020010151610f5f336001600160a01b031660009081526002602052604090205490565b1015610f6a57600080fd5b610fcc33848360ff1681518110610f8357610f83613c7c565b60200260200101516012600a610f999190613bfc565b858560ff1681518110610fae57610fae613c7c565b6020026020010151610fc09190613c46565b60008060006001612c04565b5080610fd781613cab565b915050610f17565b505050565b6000546001600160a01b031633146110325760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6017546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b1580156110af57600080fd5b505af11580156110c3573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b0316331461111b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6109c48361ffff161115801561113757506109c48261ffff1611155b801561114957506109c48161ffff1611155b6111955760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ad6565b600a805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146112565760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6017546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610c50565b6000546001600160a01b031633146112f65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b83856113046012600a613bfc565b61131290633b9aca00613c46565b61131c9190613c46565b6113269190613c0b565b60135581836113376012600a613bfc565b61134590633b9aca00613c46565b61134f9190613c46565b6113599190613c0b565b60145560115550505050565b6000546001600160a01b031633146113b35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461142c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6103e861143b6012600a613bfc565b61144990633b9aca00613c46565b6114539190613c0b565b81836114616012600a613bfc565b61146f90633b9aca00613c46565b6114799190613c46565b6114839190613c0b565b10156114f75760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ad6565b80826115056012600a613bfc565b61151390633b9aca00613c46565b61151d9190613c46565b6115279190613c0b565b6015555050565b6000546001600160a01b0316331461157c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6001600160a01b0381166115f85760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ad6565b6001600160a01b03811661dead14156116795760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ad6565b60008054611692916001600160a01b0390911690611747565b61169d816001611747565b600080546001600160a01b0316815260026020526040902054156116e457600080546001600160a01b031680825260026020526040909120546116e29190839061274f565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146117955760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461180e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b601754610100900460ff161561182357600080fd5b6001600160a01b03811630141561187c5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610ad6565b601780546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60006118ca6012600a613bfc565b601554610cb79190613c0b565b6000546001600160a01b031633146119255760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6000805461193e916001600160a01b0390911690611747565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146119e05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b80611a57576001600160a01b03828116600081815260036020526040808220805460ff1916905560175490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610b2f565b60045415611abe576203f48060045442611a719190613c65565b11611abe5760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610ad6565b6001600160a01b0382811660008181526003602052604090819020805460ff1916600190811790915542600490815560175492517f80c581d1000000000000000000000000000000000000000000000000000000008152908101939093526024830152620100009004909116906380c581d190604401610b2f565b5050565b600080546001600160a01b03163314611b8c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b600c54611ba69030906001600160a01b0316600019612642565b50600190565b6000546001600160a01b03163314611bfa5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b60175460ff1615611c4d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ad6565b601754610100900460ff16611ca45760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ad6565b6017546201000090046001600160a01b0316611cea57601780547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601754600d546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611d7557600080fd5b505af1925050508015611d86575060015b506017805460ff19166001179055600d546001600160a01b03166000908152600260205260409020546103e890611dbd9190613c0b565b601355600d546001600160a01b03166000908152600260205260409020546103e890611dea906002613c46565b611df49190613c0b565b601455565b6000611e0633848461274f565b5060019392505050565b6000546001600160a01b03163314611e5e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b600b805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090941692881692909217929092171617905580611ed68385613ccb565b611ee09190613ccb565b600b805461ffff929092166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff909216919091179055505050565b6000546001600160a01b03163314611f715760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b601080548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611fba90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146120135760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b600f80546001600160a01b039384167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600e8054929093169116179055565b6000546001600160a01b031633146120a75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121109190613cf1565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561215d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121819190613cf1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156121e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122089190613cf1565b90506001600160a01b0381166123b157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227a9190613cf1565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122eb9190613cf1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612350573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123749190613cf1565b600d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556123e5565b600d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155610fdf903090600019612642565b6000546001600160a01b031633146124775760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b601754610100900460ff16156124cf5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ad6565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612509573d6000803e3d6000fd5b50565b6000546001600160a01b0316331461255a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6017546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610b2f565b6017546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa15801561261e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c969190613d0e565b6001600160a01b0383166126985760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610ad6565b6001600160a01b0382166126ee5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610ad6565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166127cd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ad6565b6001600160a01b0383166128495760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ad6565b600082116128bf5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610ad6565b6001600160a01b0384166000908152600360205260408120548190819060ff16156128ed576001925061291b565b6001600160a01b03861660009081526003602052604090205460ff1615612917576001915061291b565b5060015b6129258787612e44565b15612b2b5760175460ff1661297c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ad6565b82806129855750815b15612a49576001600160a01b03871660009081526007602052604090205460ff161580156129cc57506001600160a01b03861660009081526007602052604090205460ff16155b15612a4957601554851115612a495760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610ad6565b600c546001600160a01b03878116911614801590612a65575081155b15612b2b576001600160a01b03861660009081526007602052604090205460ff16612b2b5760165485612aad886001600160a01b031660009081526002602052604090205490565b612ab79190613d2b565b1115612b2b5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610ad6565b6001600160a01b03871660009081526006602052604090205460019060ff1680612b6d57506001600160a01b03871660009081526006602052604090205460ff165b15612b76575060005b8215612be95760105460ff16158015612b965750601054610100900460ff165b15612be95742601154601254612bac9190613d2b565b1015612be957306000908152600260205260409020546013548110612be7576014548110612bd957506014545b612be281612f19565b426012555b505b612bf888888884888888612c04565b98975050505050505050565b601754600090610100900460ff16612cb057612c2088886133a0565b601754610100900460ff16158015612c3d5750612c3d8888612e44565b15612cb05760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610ad6565b612cba8888612e44565b15612d6d576017546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612d56575060408051601f3d908101601f19168201909252612d5391810190613d0e565b60015b612d5f57600080fd5b905080612d6b57600080fd5b505b6001600160a01b03881660009081526002602052604081208054889290612d95908490613c65565b909155506000905085612da85786612db4565b612db48986868a6134fe565b6001600160a01b038916600090815260026020526040812080549293508392909190612de1908490613d2b565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e2d91815260200190565b60405180910390a350600198975050505050505050565b600080546001600160a01b03848116911614801590612e7157506000546001600160a01b03838116911614155b8015612e8857506000546001600160a01b03163214155b8015612ead57506001600160a01b03821660009081526008602052604090205460ff16155b8015612ed257506001600160a01b03831660009081526008602052604090205460ff16155b8015612ee957506001600160a01b03821661dead14155b8015612efd57506001600160a01b03821615155b8015612f1257506001600160a01b0383163014155b9392505050565b6010805460ff1916600117905560408051608081018252600b5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052612f775750613393565b306000908152600560209081526040808320600c546001600160a01b0316845290915290205460001914612fd057306000908152600560209081526040808320600c546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff1685612ff19190613c46565b612ffb9190613c0b565b6130059190613c0b565b905060006130138285613c65565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061304d5761304d613c7c565b6001600160a01b03928316602091820292909201810191909152600c54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156130bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e39190613cf1565b816001815181106130f6576130f6613c7c565b6001600160a01b039283166020918202929092010152600c546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613155908590600090869030904290600401613d43565b600060405180830381600087803b15801561316f57600080fd5b505af1158015613183573d6000803e3d6000fd5b50479250600091508490506131988684613c46565b6131a29190613c0b565b9050841561329357600c546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015613231573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132569190613d7f565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b61329d8183613c65565b91508560000151866060018181516132b59190613dad565b61ffff9081169091526060880151604089015160009350908216916132db911685613c46565b6132e59190613c0b565b905060006132f38285613c65565b604089015190915061ffff161561334057600f546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561333e573d6000803e3d6000fd5b505b602088015161ffff161561338a57600e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613388573d6000803e3d6000fd5b505b50505050505050505b506010805460ff19169055565b601754610100900460ff161561341e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610ad6565b6134288282612e44565b1580156134425750600d546001600160a01b038281169116145b15611b39576001600160a01b038083166000908152600860205260409020805460ff191660011790556017805461ff0019166101001790819055620100009004166134b757601780547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6010805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b60008084156135145750600a5461ffff1661353e565b831561352d5750600a5462010000900461ffff1661353e565b50600a54640100000000900461ffff165b600061271061354d8386613c46565b6135579190613c0b565b3060009081526002602052604081208054929350839290919061357b908490613d2b565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36135ca8185613c65565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561362d5761362d6135d5565b604052919050565b600067ffffffffffffffff82111561364f5761364f6135d5565b5060051b60200190565b6001600160a01b038116811461250957600080fd5b600082601f83011261367f57600080fd5b8135602061369461368f83613635565b613604565b82815260059290921b840181019181810190868411156136b357600080fd5b8286015b848110156136d75780356136ca81613659565b83529183019183016136b7565b509695505050505050565b801515811461250957600080fd5b6000806040838503121561370357600080fd5b823567ffffffffffffffff81111561371a57600080fd5b6137268582860161366e565b9250506020830135613737816136e2565b809150509250929050565b600060208083528351808285015260005b8181101561376f57858101830151858201604001528201613753565b81811115613781576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156137a957600080fd5b5035919050565b600080604083850312156137c357600080fd5b82356137ce81613659565b946020939093013593505050565b6000806000606084860312156137f157600080fd5b83356137fc81613659565b9250602084013561380c81613659565b929592945050506040919091013590565b6000806040838503121561383057600080fd5b50508035926020909101359150565b6000806040838503121561385257600080fd5b823567ffffffffffffffff8082111561386a57600080fd5b6138768683870161366e565b935060209150818501358181111561388d57600080fd5b85019050601f810186136138a057600080fd5b80356138ae61368f82613635565b81815260059190911b820183019083810190888311156138cd57600080fd5b928401925b828410156138eb578335825292840192908401906138d2565b80955050505050509250929050565b6000806000806080858703121561391057600080fd5b843561391b816136e2565b9350602085013561392b816136e2565b9250604085013561393b816136e2565b9150606085013561394b816136e2565b939692955090935050565b803561ffff8116811461396857600080fd5b919050565b60008060006060848603121561398257600080fd5b61398b84613956565b925061399960208501613956565b91506139a760408501613956565b90509250925092565b6000602082840312156139c257600080fd5b8135612f1281613659565b600080600080600060a086880312156139e557600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215613a1b57600080fd5b8235613a2681613659565b91506020830135613737816136e2565b600060208284031215613a4857600080fd5b8135612f12816136e2565b60008060408385031215613a6657600080fd5b8235613a7181613659565b9150602083013561373781613659565b600081518084526020808501945080840160005b83811015613aba5781516001600160a01b031687529582019590820190600101613a95565b509495945050505050565b604081526000613ad86040830185613a81565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613b53578160001904821115613b3957613b39613ae9565b80851615613b4657918102915b93841c9390800290613b1d565b509250929050565b600082613b6a57506001610c96565b81613b7757506000610c96565b8160018114613b8d5760028114613b9757613bb3565b6001915050610c96565b60ff841115613ba857613ba8613ae9565b50506001821b610c96565b5060208310610133831016604e8410600b8410161715613bd6575081810a610c96565b613be08383613b18565b8060001904821115613bf457613bf4613ae9565b029392505050565b6000612f1260ff841683613b5b565b600082613c41577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000816000190483118215151615613c6057613c60613ae9565b500290565b600082821015613c7757613c77613ae9565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff811415613cc257613cc2613ae9565b60010192915050565b600061ffff808316818516808303821115613ce857613ce8613ae9565b01949350505050565b600060208284031215613d0357600080fd5b8151612f1281613659565b600060208284031215613d2057600080fd5b8151612f12816136e2565b60008219821115613d3e57613d3e613ae9565b500190565b85815284602082015260a060408201526000613d6260a0830186613a81565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215613d9457600080fd5b8351925060208401519150604084015190509250925092565b600061ffff83811690831681811015613dc857613dc8613ae9565b03939250505056fea2646970667358221220e85322751ab4f0ea9c912b1dcf22cd6bbc00b550cb4450db336646ffc9658af464736f6c634300080c0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x60806040526004361061034e5760003560e01c806350a8e016116101bb578063aa22b172116100f7578063e4fcfd1811610095578063eec2744e1161006f578063eec2744e146109e6578063f94aa1b414610a06578063fdb78c0e14610a4d578063fe575a8714610a6c57600080fd5b8063e4fcfd181461099b578063eafb5a3c146109b1578063ee5d9c2d146109d157600080fd5b8063cab5ebea116100d1578063cab5ebea146108aa578063cf847706146108ca578063d3f6a15714610935578063dd62ed3e1461095557600080fd5b8063aa22b1721461088a578063b1b08f711461058f578063b3d514fb1461058f57600080fd5b8063715018a6116101645780638a63bd9b1161013e5780638a63bd9b146108405780638a8c523c1461085557806395d89b4114610429578063a9059cbb1461086a57600080fd5b8063715018a6146107ed57806380c581d114610802578063893d20e81461082257600080fd5b80635cce86cd116101955780635cce86cd146107695780636ebd0078146107a257806370a08231146107b757600080fd5b806350a8e0161461070a578063590ffdce146107295780635c24b0741461074957600080fd5b806329dd87981161028a57806334cd826011610233578063452ed4f11161020d578063452ed4f1146106775780634ada218b146106975780634fb2e45d146106b15780634fbee193146106d157600080fd5b806334cd82601461061757806336fddb04146106375780633f3cf56c1461065757600080fd5b8063313ce56711610264578063313ce567146105bb57806332cde664146105d757806333251a0b146105f757600080fd5b806329dd87981461056f5780632b28fc7a1461058f5780632e8fa821146105a557600080fd5b806309231602116102f757806318160ddd116102d157806318160ddd146104fa57806323b872dd1461050f578063260039571461052f5780632610eaca1461054f57600080fd5b80630923160214610495578063095ea7b3146104b55780630fa604e4146104e557600080fd5b8063069d955f11610328578063069d955f146103d357806306fdde03146104295780630758d9241461047557600080fd5b806303fd2a451461035a5780630445b6671461038d57806305bbedb6146103b157600080fd5b3661035557005b600080fd5b34801561036657600080fd5b5061037061dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561039957600080fd5b506103a360135481565b604051908152602001610384565b3480156103bd57600080fd5b506103d16103cc3660046136f0565b610a8c565b005b3480156103df57600080fd5b50600a546104049061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610384565b34801561043557600080fd5b50604080518082018252600481527f4e45524400000000000000000000000000000000000000000000000000000000602082015290516103849190613742565b34801561048157600080fd5b50600c54610370906001600160a01b031681565b3480156104a157600080fd5b506103d16104b0366004613797565b610b65565b3480156104c157600080fd5b506104d56104d03660046137b0565b610c85565b6040519015158152602001610384565b3480156104f157600080fd5b506103a3610c9c565b34801561050657600080fd5b506103a3610cbc565b34801561051b57600080fd5b506104d561052a3660046137dc565b610cfb565b34801561053b57600080fd5b506103d161054a36600461381d565b610d73565b34801561055b57600080fd5b506103d161056a36600461383f565b610ec3565b34801561057b57600080fd5b506103d161058a3660046138fa565b610fe4565b34801561059b57600080fd5b506103a36109c481565b3480156105b157600080fd5b506103a360145481565b3480156105c757600080fd5b5060405160128152602001610384565b3480156105e357600080fd5b506103d16105f236600461396d565b6110cd565b34801561060357600080fd5b506103d16106123660046139b0565b611208565b34801561062357600080fd5b506103d16106323660046139cd565b6112a8565b34801561064357600080fd5b506103d1610652366004613a08565b611365565b34801561066357600080fd5b506103d161067236600461381d565b6113de565b34801561068357600080fd5b50600d54610370906001600160a01b031681565b3480156106a357600080fd5b506017546104d59060ff1681565b3480156106bd57600080fd5b506103d16106cc3660046139b0565b61152e565b3480156106dd57600080fd5b506104d56106ec3660046139b0565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561071657600080fd5b506017546104d590610100900460ff1681565b34801561073557600080fd5b506103d1610744366004613a08565b611747565b34801561075557600080fd5b506103d16107643660046139b0565b6117c0565b34801561077557600080fd5b506104d56107843660046139b0565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156107ae57600080fd5b506103a36118bc565b3480156107c357600080fd5b506103a36107d23660046139b0565b6001600160a01b031660009081526002602052604090205490565b3480156107f957600080fd5b506103d16118d7565b34801561080e57600080fd5b506103d161081d366004613a08565b611992565b34801561082e57600080fd5b506000546001600160a01b0316610370565b34801561084c57600080fd5b506104d5611b3d565b34801561086157600080fd5b506103d1611bac565b34801561087657600080fd5b506104d56108853660046137b0565b611df9565b34801561089657600080fd5b506103d16108a536600461396d565b611e10565b3480156108b657600080fd5b506103d16108c5366004613a36565b611f23565b3480156108d657600080fd5b50600b546109079061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff95861681529385166020850152918416918301919091529091166060820152608001610384565b34801561094157600080fd5b506103d1610950366004613a53565b611fc5565b34801561096157600080fd5b506103a3610970366004613a53565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156109a757600080fd5b506103a360115481565b3480156109bd57600080fd5b506103d16109cc3660046139b0565b612059565b3480156109dd57600080fd5b506103d1612429565b3480156109f257600080fd5b506103d1610a01366004613a08565b61250c565b348015610a1257600080fd5b50600e54600f54610a2d916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610384565b348015610a5957600080fd5b506010546104d590610100900460ff1681565b348015610a7857600080fd5b506104d5610a873660046139b0565b6125b4565b6000546001600160a01b03163314610adf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6017546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610b2f9085908590600401613ac5565b600060405180830381600087803b158015610b4957600080fd5b505af1158015610b5d573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610bb35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b61012c811015610c055760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610ad6565b6017546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610c6a57600080fd5b505af1158015610c7e573d6000803e3d6000fd5b5050505050565b6000610c92338484612642565b5060015b92915050565b6000610caa6012600a613bfc565b601654610cb79190613c0b565b905090565b6000610cca6012600a613bfc565b610cd890633b9aca00613c46565b610ce157600080fd5b610ced6012600a613bfc565b610cb790633b9aca00613c46565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610d60576001600160a01b038416600090815260056020908152604080832033845290915281208054849290610d5a908490613c65565b90915550505b610d6b84848461274f565b949350505050565b6000546001600160a01b03163314610dc15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6103e8610dd06012600a613bfc565b610dde90633b9aca00613c46565b610de89190613c0b565b8183610df66012600a613bfc565b610e0490633b9aca00613c46565b610e0e9190613c46565b610e189190613c0b565b1015610e8c5760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610ad6565b8082610e9a6012600a613bfc565b610ea890633b9aca00613c46565b610eb29190613c46565b610ebc9190613c0b565b6016555050565b8051825114610f145760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610ad6565b60005b82518160ff161015610fdf57818160ff1681518110610f3857610f38613c7c565b6020026020010151610f5f336001600160a01b031660009081526002602052604090205490565b1015610f6a57600080fd5b610fcc33848360ff1681518110610f8357610f83613c7c565b60200260200101516012600a610f999190613bfc565b858560ff1681518110610fae57610fae613c7c565b6020026020010151610fc09190613c46565b60008060006001612c04565b5080610fd781613cab565b915050610f17565b505050565b6000546001600160a01b031633146110325760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6017546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b1580156110af57600080fd5b505af11580156110c3573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b0316331461111b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6109c48361ffff161115801561113757506109c48261ffff1611155b801561114957506109c48161ffff1611155b6111955760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ad6565b600a805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146112565760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6017546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610c50565b6000546001600160a01b031633146112f65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b83856113046012600a613bfc565b61131290633b9aca00613c46565b61131c9190613c46565b6113269190613c0b565b60135581836113376012600a613bfc565b61134590633b9aca00613c46565b61134f9190613c46565b6113599190613c0b565b60145560115550505050565b6000546001600160a01b031633146113b35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461142c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6103e861143b6012600a613bfc565b61144990633b9aca00613c46565b6114539190613c0b565b81836114616012600a613bfc565b61146f90633b9aca00613c46565b6114799190613c46565b6114839190613c0b565b10156114f75760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ad6565b80826115056012600a613bfc565b61151390633b9aca00613c46565b61151d9190613c46565b6115279190613c0b565b6015555050565b6000546001600160a01b0316331461157c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6001600160a01b0381166115f85760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ad6565b6001600160a01b03811661dead14156116795760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ad6565b60008054611692916001600160a01b0390911690611747565b61169d816001611747565b600080546001600160a01b0316815260026020526040902054156116e457600080546001600160a01b031680825260026020526040909120546116e29190839061274f565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146117955760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461180e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b601754610100900460ff161561182357600080fd5b6001600160a01b03811630141561187c5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610ad6565b601780546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60006118ca6012600a613bfc565b601554610cb79190613c0b565b6000546001600160a01b031633146119255760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6000805461193e916001600160a01b0390911690611747565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146119e05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b80611a57576001600160a01b03828116600081815260036020526040808220805460ff1916905560175490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610b2f565b60045415611abe576203f48060045442611a719190613c65565b11611abe5760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610ad6565b6001600160a01b0382811660008181526003602052604090819020805460ff1916600190811790915542600490815560175492517f80c581d1000000000000000000000000000000000000000000000000000000008152908101939093526024830152620100009004909116906380c581d190604401610b2f565b5050565b600080546001600160a01b03163314611b8c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b600c54611ba69030906001600160a01b0316600019612642565b50600190565b6000546001600160a01b03163314611bfa5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b60175460ff1615611c4d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ad6565b601754610100900460ff16611ca45760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ad6565b6017546201000090046001600160a01b0316611cea57601780547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601754600d546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611d7557600080fd5b505af1925050508015611d86575060015b506017805460ff19166001179055600d546001600160a01b03166000908152600260205260409020546103e890611dbd9190613c0b565b601355600d546001600160a01b03166000908152600260205260409020546103e890611dea906002613c46565b611df49190613c0b565b601455565b6000611e0633848461274f565b5060019392505050565b6000546001600160a01b03163314611e5e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b600b805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090941692881692909217929092171617905580611ed68385613ccb565b611ee09190613ccb565b600b805461ffff929092166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff909216919091179055505050565b6000546001600160a01b03163314611f715760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b601080548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611fba90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146120135760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b600f80546001600160a01b039384167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600e8054929093169116179055565b6000546001600160a01b031633146120a75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121109190613cf1565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561215d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121819190613cf1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156121e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122089190613cf1565b90506001600160a01b0381166123b157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227a9190613cf1565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122eb9190613cf1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612350573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123749190613cf1565b600d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556123e5565b600d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155610fdf903090600019612642565b6000546001600160a01b031633146124775760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b601754610100900460ff16156124cf5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ad6565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612509573d6000803e3d6000fd5b50565b6000546001600160a01b0316331461255a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ad6565b6017546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610b2f565b6017546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa15801561261e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c969190613d0e565b6001600160a01b0383166126985760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610ad6565b6001600160a01b0382166126ee5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610ad6565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166127cd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ad6565b6001600160a01b0383166128495760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ad6565b600082116128bf5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610ad6565b6001600160a01b0384166000908152600360205260408120548190819060ff16156128ed576001925061291b565b6001600160a01b03861660009081526003602052604090205460ff1615612917576001915061291b565b5060015b6129258787612e44565b15612b2b5760175460ff1661297c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ad6565b82806129855750815b15612a49576001600160a01b03871660009081526007602052604090205460ff161580156129cc57506001600160a01b03861660009081526007602052604090205460ff16155b15612a4957601554851115612a495760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610ad6565b600c546001600160a01b03878116911614801590612a65575081155b15612b2b576001600160a01b03861660009081526007602052604090205460ff16612b2b5760165485612aad886001600160a01b031660009081526002602052604090205490565b612ab79190613d2b565b1115612b2b5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610ad6565b6001600160a01b03871660009081526006602052604090205460019060ff1680612b6d57506001600160a01b03871660009081526006602052604090205460ff165b15612b76575060005b8215612be95760105460ff16158015612b965750601054610100900460ff165b15612be95742601154601254612bac9190613d2b565b1015612be957306000908152600260205260409020546013548110612be7576014548110612bd957506014545b612be281612f19565b426012555b505b612bf888888884888888612c04565b98975050505050505050565b601754600090610100900460ff16612cb057612c2088886133a0565b601754610100900460ff16158015612c3d5750612c3d8888612e44565b15612cb05760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610ad6565b612cba8888612e44565b15612d6d576017546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612d56575060408051601f3d908101601f19168201909252612d5391810190613d0e565b60015b612d5f57600080fd5b905080612d6b57600080fd5b505b6001600160a01b03881660009081526002602052604081208054889290612d95908490613c65565b909155506000905085612da85786612db4565b612db48986868a6134fe565b6001600160a01b038916600090815260026020526040812080549293508392909190612de1908490613d2b565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e2d91815260200190565b60405180910390a350600198975050505050505050565b600080546001600160a01b03848116911614801590612e7157506000546001600160a01b03838116911614155b8015612e8857506000546001600160a01b03163214155b8015612ead57506001600160a01b03821660009081526008602052604090205460ff16155b8015612ed257506001600160a01b03831660009081526008602052604090205460ff16155b8015612ee957506001600160a01b03821661dead14155b8015612efd57506001600160a01b03821615155b8015612f1257506001600160a01b0383163014155b9392505050565b6010805460ff1916600117905560408051608081018252600b5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052612f775750613393565b306000908152600560209081526040808320600c546001600160a01b0316845290915290205460001914612fd057306000908152600560209081526040808320600c546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff1685612ff19190613c46565b612ffb9190613c0b565b6130059190613c0b565b905060006130138285613c65565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061304d5761304d613c7c565b6001600160a01b03928316602091820292909201810191909152600c54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156130bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e39190613cf1565b816001815181106130f6576130f6613c7c565b6001600160a01b039283166020918202929092010152600c546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613155908590600090869030904290600401613d43565b600060405180830381600087803b15801561316f57600080fd5b505af1158015613183573d6000803e3d6000fd5b50479250600091508490506131988684613c46565b6131a29190613c0b565b9050841561329357600c546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015613231573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132569190613d7f565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b61329d8183613c65565b91508560000151866060018181516132b59190613dad565b61ffff9081169091526060880151604089015160009350908216916132db911685613c46565b6132e59190613c0b565b905060006132f38285613c65565b604089015190915061ffff161561334057600f546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561333e573d6000803e3d6000fd5b505b602088015161ffff161561338a57600e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613388573d6000803e3d6000fd5b505b50505050505050505b506010805460ff19169055565b601754610100900460ff161561341e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610ad6565b6134288282612e44565b1580156134425750600d546001600160a01b038281169116145b15611b39576001600160a01b038083166000908152600860205260409020805460ff191660011790556017805461ff0019166101001790819055620100009004166134b757601780547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6010805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b60008084156135145750600a5461ffff1661353e565b831561352d5750600a5462010000900461ffff1661353e565b50600a54640100000000900461ffff165b600061271061354d8386613c46565b6135579190613c0b565b3060009081526002602052604081208054929350839290919061357b908490613d2b565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36135ca8185613c65565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561362d5761362d6135d5565b604052919050565b600067ffffffffffffffff82111561364f5761364f6135d5565b5060051b60200190565b6001600160a01b038116811461250957600080fd5b600082601f83011261367f57600080fd5b8135602061369461368f83613635565b613604565b82815260059290921b840181019181810190868411156136b357600080fd5b8286015b848110156136d75780356136ca81613659565b83529183019183016136b7565b509695505050505050565b801515811461250957600080fd5b6000806040838503121561370357600080fd5b823567ffffffffffffffff81111561371a57600080fd5b6137268582860161366e565b9250506020830135613737816136e2565b809150509250929050565b600060208083528351808285015260005b8181101561376f57858101830151858201604001528201613753565b81811115613781576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156137a957600080fd5b5035919050565b600080604083850312156137c357600080fd5b82356137ce81613659565b946020939093013593505050565b6000806000606084860312156137f157600080fd5b83356137fc81613659565b9250602084013561380c81613659565b929592945050506040919091013590565b6000806040838503121561383057600080fd5b50508035926020909101359150565b6000806040838503121561385257600080fd5b823567ffffffffffffffff8082111561386a57600080fd5b6138768683870161366e565b935060209150818501358181111561388d57600080fd5b85019050601f810186136138a057600080fd5b80356138ae61368f82613635565b81815260059190911b820183019083810190888311156138cd57600080fd5b928401925b828410156138eb578335825292840192908401906138d2565b80955050505050509250929050565b6000806000806080858703121561391057600080fd5b843561391b816136e2565b9350602085013561392b816136e2565b9250604085013561393b816136e2565b9150606085013561394b816136e2565b939692955090935050565b803561ffff8116811461396857600080fd5b919050565b60008060006060848603121561398257600080fd5b61398b84613956565b925061399960208501613956565b91506139a760408501613956565b90509250925092565b6000602082840312156139c257600080fd5b8135612f1281613659565b600080600080600060a086880312156139e557600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215613a1b57600080fd5b8235613a2681613659565b91506020830135613737816136e2565b600060208284031215613a4857600080fd5b8135612f12816136e2565b60008060408385031215613a6657600080fd5b8235613a7181613659565b9150602083013561373781613659565b600081518084526020808501945080840160005b83811015613aba5781516001600160a01b031687529582019590820190600101613a95565b509495945050505050565b604081526000613ad86040830185613a81565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613b53578160001904821115613b3957613b39613ae9565b80851615613b4657918102915b93841c9390800290613b1d565b509250929050565b600082613b6a57506001610c96565b81613b7757506000610c96565b8160018114613b8d5760028114613b9757613bb3565b6001915050610c96565b60ff841115613ba857613ba8613ae9565b50506001821b610c96565b5060208310610133831016604e8410600b8410161715613bd6575081810a610c96565b613be08383613b18565b8060001904821115613bf457613bf4613ae9565b029392505050565b6000612f1260ff841683613b5b565b600082613c41577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000816000190483118215151615613c6057613c60613ae9565b500290565b600082821015613c7757613c77613ae9565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff811415613cc257613cc2613ae9565b60010192915050565b600061ffff808316818516808303821115613ce857613ce8613ae9565b01949350505050565b600060208284031215613d0357600080fd5b8151612f1281613659565b600060208284031215613d2057600080fd5b8151612f12816136e2565b60008219821115613d3e57613d3e613ae9565b500190565b85815284602082015260a060408201526000613d6260a0830186613a81565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215613d9457600080fd5b8351925060208401519150604084015190509250925092565b600061ffff83811690831681811015613dc857613dc8613ae9565b03939250505056fea2646970667358221220e85322751ab4f0ea9c912b1dcf22cd6bbc00b550cb4450db336646ffc9658af464736f6c634300080c0033

Deployed Bytecode Sourcemap

4206:20498:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5933:73;;;;;;;;;;;;5964:42;5933:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5933:73:0;;;;;;;;6485:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6485:28:0;245:177:1;13712:172:0;;;;;;;;;;-1:-1:-1;13712:172:0;;;;;:::i;:::-;;:::i;:::-;;5400:116;;;;;;;;;;-1:-1:-1;5400:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;2855:6:1;2888:15;;;2870:34;;2940:15;;;2935:2;2920:18;;2913:43;2992:15;;2972:18;;;2965:43;;;;2833:2;2818:18;5400:116:0;2649:365:1;10686:80:0;;;;;;;;;;-1:-1:-1;10758:5:0;;;;;;;;;;;;;;;;10686:80;;;;10758:5;10686:80;:::i;5872:26::-;;;;;;;;;;-1:-1:-1;5872:26:0;;;;-1:-1:-1;;;;;5872:26:0;;;14344:150;;;;;;;;;;-1:-1:-1;14344:150:0;;;;;:::i;:::-;;:::i;11296:159::-;;;;;;;;;;-1:-1:-1;11296:159:0;;;;;:::i;:::-;;:::i;:::-;;;4598:14:1;;4591:22;4573:41;;4561:2;4546:18;11296:159:0;4433:187:1;16430:112:0;;;;;;;;;;;;;:::i;10389:115::-;;;;;;;;;;;;;:::i;11961:306::-;;;;;;;;;;-1:-1:-1;11961:306:0;;;;;:::i;:::-;;:::i;15480:267::-;;;;;;;;;;-1:-1:-1;15480:267:0;;;;;:::i;:::-;;:::i;22770:408::-;;;;;;;;;;-1:-1:-1;22770:408:0;;;;;:::i;:::-;;:::i;14141:195::-;;;;;;;;;;-1:-1:-1;14141:195:0;;;;;:::i;:::-;;:::i;5669:42::-;;;;;;;;;;;;5707:4;5669:42;;6520:25;;;;;;;;;;;;;;;;10510:80;;;;;;;;;;-1:-1:-1;10510:80:0;;4968:2;7276:36:1;;7264:2;7249:18;10510:80:0;7134:184:1;14502:397:0;;;;;;;;;;-1:-1:-1;14502:397:0;;;;;:::i;:::-;;:::i;14025:108::-;;;;;;;;;;-1:-1:-1;14025:108:0;;;;;:::i;:::-;;:::i;16550:338::-;;;;;;;;;;-1:-1:-1;16550:338:0;;;;;:::i;:::-;;:::i;15755:140::-;;;;;;;;;;-1:-1:-1;15755:140:0;;;;;:::i;:::-;;:::i;15203:269::-;;;;;;;;;;-1:-1:-1;15203:269:0;;;;;:::i;:::-;;:::i;5905:21::-;;;;;;;;;;-1:-1:-1;5905:21:0;;;;-1:-1:-1;;;;;5905:21:0;;;6678:34;;;;;;;;;;-1:-1:-1;6678:34:0;;;;;;;;9247:588;;;;;;;;;;-1:-1:-1;9247:588:0;;;;;:::i;:::-;;:::i;16041:125::-;;;;;;;;;;-1:-1:-1;16041:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;16130:28:0;16106:4;16130:28;;;:19;:28;;;;;;;;;16041:125;6719:36;;;;;;;;;;-1:-1:-1;6719:36:0;;;;;;;;;;;16174:134;;;;;;;;;;-1:-1:-1;16174:134:0;;;;;:::i;:::-;;:::i;13331:220::-;;;;;;;;;;-1:-1:-1;13331:220:0;;;;;:::i;:::-;;:::i;15903:130::-;;;;;;;;;;-1:-1:-1;15903:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;15995:30:0;15971:4;15995:30;;;:21;:30;;;;;;;;;15903:130;16316:106;;;;;;;;;;;;;:::i;10998:117::-;;;;;;;;;;-1:-1:-1;10998:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;11091:16:0;11064:7;11091:16;;;:7;:16;;;;;;;10998:117;9843:193;;;;;;;;;;;;;:::i;12823:500::-;;;;;;;;;;-1:-1:-1;12823:500:0;;;;;:::i;:::-;;:::i;10772:79::-;;;;;;;;;;-1:-1:-1;10824:7:0;10842:6;-1:-1:-1;;;;;10842:6:0;10772:79;;11780:173;;;;;;;;;;;;;:::i;22036:536::-;;;;;;;;;;;;;:::i;11123:165::-;;;;;;;;;;-1:-1:-1;11123:165:0;;;;;:::i;:::-;;:::i;14907:288::-;;;;;;;;;;-1:-1:-1;14907:288:0;;;;;:::i;:::-;;:::i;17117:164::-;;;;;;;;;;-1:-1:-1;17117:164:0;;;;;:::i;:::-;;:::i;5525:135::-;;;;;;;;;;-1:-1:-1;5525:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9397:6:1;9430:15;;;9412:34;;9482:15;;;9477:2;9462:18;;9455:43;9534:15;;;9514:18;;;9507:43;;;;9586:15;;;9581:2;9566:18;;9559:43;9374:3;9359:19;5525:135:0;9164:444:1;16896:213:0;;;;;;;;;;-1:-1:-1;16896:213:0;;;;;:::i;:::-;;:::i;10857:133::-;;;;;;;;;;-1:-1:-1;10857:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10959:19:0;;;10941:7;10959:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10857:133;6403:44;;;;;;;;;;;;;;;;12275:540;;;;;;;;;;-1:-1:-1;12275:540:0;;;;;:::i;:::-;;:::i;22580:182::-;;;;;;;;;;;;;:::i;13559:145::-;;;;;;;;;;-1:-1:-1;13559:145:0;;;;;:::i;:::-;;:::i;6123:203::-;;;;;;;;;;-1:-1:-1;6123:203:0;;;;;;-1:-1:-1;;;;;6123:203:0;;;;;;;;;;;-1:-1:-1;;;;;10700:15:1;;;10682:34;;10752:15;;;;10747:2;10732:18;;10725:43;10594:18;6123:203:0;10415:359:1;6357:39:0;;;;;;;;;;-1:-1:-1;6357:39:0;;;;;;;;;;;13892:125;;;;;;;;;;-1:-1:-1;13892:125:0;;;;;:::i;:::-;;:::i;13712:172::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;;;;;;;;;13820:9:::1;::::0;:56:::1;::::0;;;;:9;;;::::1;-1:-1:-1::0;;;;;13820:9:0::1;::::0;:37:::1;::::0;:56:::1;::::0;13858:8;;13868:7;;13820:56:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13712:172:::0;;:::o;14344:150::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;14428:3:::1;14421;:10;;14413:31;;;::::0;-1:-1:-1;;;14413:31:0;;12163:2:1;14413:31:0::1;::::0;::::1;12145:21:1::0;12202:1;12182:18;;;12175:29;12240:10;12220:18;;;12213:38;12268:18;;14413:31:0::1;11961:331:1::0;14413:31:0::1;14455:9;::::0;:31:::1;::::0;;;;::::1;::::0;::::1;391:25:1::0;;;14455:9:0;;;::::1;-1:-1:-1::0;;;;;14455:9:0::1;::::0;:26:::1;::::0;364:18:1;;14455:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14344:150:::0;:::o;11296:159::-;11371:4;11388:37;11397:10;11409:7;11418:6;11388:8;:37::i;:::-;-1:-1:-1;11443:4:0;11296:159;;;;;:::o;16430:112::-;16475:7;16520:13;4968:2;16520;:13;:::i;:::-;16502:14;;:32;;;;:::i;:::-;16495:39;;16430:112;:::o;10389:115::-;10444:7;5031:13;4968:2;5031;:13;:::i;:::-;5014:30;;4819:13;5014:30;:::i;:::-;10455:31;;10475:8;;;10455:31;5031:13;4968:2;5031;:13;:::i;:::-;5014:30;;4819:13;5014:30;:::i;11961:306::-;-1:-1:-1;;;;;12082:19:0;;12061:4;12082:19;;;:11;:19;;;;;;;;12102:10;12082:31;;;;;;;;-1:-1:-1;;12082:52:0;12078:126;;-1:-1:-1;;;;;12151:19:0;;;;;;:11;:19;;;;;;;;12171:10;12151:31;;;;;;;:41;;12186:6;;12151:19;:41;;12186:6;;12151:41;:::i;:::-;;;;-1:-1:-1;;12078:126:0;12223:36;12233:6;12241:9;12252:6;12223:9;:36::i;:::-;12216:43;11961:306;-1:-1:-1;;;;11961:306:0:o;15480:267::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;15622:4:::1;5031:13;4968:2;5031;:13;:::i;:::-;5014:30;::::0;4819:13:::1;5014:30;:::i;:::-;15612:14;;;;:::i;:::-;15600:7:::0;15589;5031:13:::1;4968:2;5031;:13;:::i;:::-;5014:30;::::0;4819:13:::1;5014:30;:::i;:::-;15579:17;;;;:::i;:::-;15578:29;;;;:::i;:::-;:49;;15570:112;;;::::0;-1:-1:-1;;;15570:112:0;;14833:2:1;15570:112:0::1;::::0;::::1;14815:21:1::0;14872:2;14852:18;;;14845:30;14911:34;14891:18;;;14884:62;14982:20;14962:18;;;14955:48;15020:19;;15570:112:0::1;14631:414:1::0;15570:112:0::1;15732:7:::0;15721;5031:13:::1;4968:2;5031;:13;:::i;:::-;5014:30;::::0;4819:13:::1;5014:30;:::i;:::-;15711:17;;;;:::i;:::-;15710:29;;;;:::i;:::-;15693:14;:46:::0;-1:-1:-1;;15480:267:0:o;22770:408::-;22895:7;:14;22876:8;:15;:33;22868:67;;;;-1:-1:-1;;;22868:67:0;;15252:2:1;22868:67:0;;;15234:21:1;15291:2;15271:18;;;15264:30;15330:23;15310:18;;;15303:51;15371:18;;22868:67:0;15050:345:1;22868:67:0;22951:7;22946:225;22968:8;:15;22964:1;:19;;;22946:225;;;23038:7;23046:1;23038:10;;;;;;;;;;:::i;:::-;;;;;;;23013:21;23023:10;-1:-1:-1;;;;;11091:16:0;11064:7;11091:16;;;:7;:16;;;;;;;10998:117;23013:21;:35;;23005:44;;;;;;23064:95;23082:10;23094:8;23103:1;23094:11;;;;;;;;;;:::i;:::-;;;;;;;4968:2;23118;:13;;;;:::i;:::-;23107:7;23115:1;23107:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23133:5;23140;23147;23154:4;23064:17;:95::i;:::-;-1:-1:-1;22985:3:0;;;;:::i;:::-;;;;22946:225;;;;22770:408;;:::o;14141:195::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;14263:9:::1;::::0;:65:::1;::::0;;;;16001:14:1;;15994:22;14263:65:0::1;::::0;::::1;15976:41:1::0;16060:14;;16053:22;16033:18;;;16026:50;16119:14;;16112:22;16092:18;;;16085:50;16178:14;;16171:22;16151:18;;;16144:50;14263:9:0;;;::::1;-1:-1:-1::0;;;;;14263:9:0::1;::::0;:24:::1;::::0;15948:19:1;;14263:65:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14141:195:::0;;;;:::o;14502:397::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;5707:4:::1;14609:6;:21;;;;:65;;;;;5757:4;14651:7;:23;;;;14609:65;:117;;;;;5811:4;14695:11;:31;;;;14609:117;14601:170;;;::::0;-1:-1:-1;;;14601:170:0;;16407:2:1;14601:170:0::1;::::0;::::1;16389:21:1::0;16446:2;16426:18;;;16419:30;16485:25;16465:18;;;16458:53;16528:18;;14601:170:0::1;16205:347:1::0;14601:170:0::1;14782:9;:25:::0;;::::1;::::0;;::::1;14818:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;14856:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;14502:397::o;14025:108::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;14094:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;14094:31:0::1;::::0;::::1;160:74:1::0;14094:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;14094:31:0::1;14:226:1::0;16550:338:0;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;16764:16;16744;5031:13:::1;4968:2;5031;:13;:::i;:::-;5014:30;::::0;4819:13:::1;5014:30;:::i;:::-;16734:26;;;;:::i;:::-;16733:47;;;;:::i;:::-;16717:13;:63:::0;16832:13;16815;5031::::1;4968:2;5031;:13;:::i;:::-;5014:30;::::0;4819:13:::1;5014:30;:::i;:::-;16805:23;;;;:::i;:::-;16804:41;;;;:::i;:::-;16791:10;:54:::0;16856:17:::1;:24:::0;-1:-1:-1;;;;16550:338:0:o;15755:140::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;-1:-1:-1;;;;;15847:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;15847:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15755:140::o;15203:269::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;15344:4:::1;5031:13;4968:2;5031;:13;:::i;:::-;5014:30;::::0;4819:13:::1;5014:30;:::i;:::-;15334:14;;;;:::i;:::-;15322:7:::0;15311;5031:13:::1;4968:2;5031;:13;:::i;:::-;5014:30;::::0;4819:13:::1;5014:30;:::i;:::-;15301:17;;;;:::i;:::-;15300:29;;;;:::i;:::-;:49;;15292:117;;;::::0;-1:-1:-1;;;15292:117:0;;16759:2:1;15292:117:0::1;::::0;::::1;16741:21:1::0;16798:2;16778:18;;;16771:30;16837:34;16817:18;;;16810:62;16908:25;16888:18;;;16881:53;16951:19;;15292:117:0::1;16557:419:1::0;15292:117:0::1;15457:7:::0;15446;5031:13:::1;4968:2;5031;:13;:::i;:::-;5014:30;::::0;4819:13:::1;5014:30;:::i;:::-;15436:17;;;;:::i;:::-;15435:29;;;;:::i;:::-;15420:12;:44:::0;-1:-1:-1;;15203:269:0:o;9247:588::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;-1:-1:-1;;;;;9326:22:0;::::1;9318:96;;;::::0;-1:-1:-1;;;9318:96:0;;17183:2:1;9318:96:0::1;::::0;::::1;17165:21:1::0;17222:2;17202:18;;;17195:30;17261:34;17241:18;;;17234:62;17332:31;17312:18;;;17305:59;17381:19;;9318:96:0::1;16981:425:1::0;9318:96:0::1;-1:-1:-1::0;;;;;9433:16:0;::::1;5964:42;9433:16;;9425:90;;;::::0;-1:-1:-1;;;9425:90:0;;17183:2:1;9425:90:0::1;::::0;::::1;17165:21:1::0;17222:2;17202:18;;;17195:30;17261:34;17241:18;;;17234:62;17332:31;17312:18;;;17305:59;17381:19;;9425:90:0::1;16981:425:1::0;9425:90:0::1;9546:6;::::0;;9526:34:::1;::::0;-1:-1:-1;;;;;9546:6:0;;::::1;::::0;9526:19:::1;:34::i;:::-;9571:35;9591:8;9601:4;9571:19;:35::i;:::-;9650:1;9640:6:::0;;-1:-1:-1;;;;;9640:6:0::1;11091:16:::0;;:7;:16;;;;;;9630:21;9627:99:::1;;9678:6;::::0;;-1:-1:-1;;;;;9678:6:0::1;11091:16:::0;;;:7;:16;;;;;;;9668:46:::1;::::0;9678:6;9686:8;;9668:9:::1;:46::i;:::-;;9627:99;9746:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;9746:17:0;::::1;::::0;;::::1;::::0;;9779:38:::1;::::0;9746:17;;;;9779:38:::1;::::0;9746:6;9779:38:::1;9247:588:::0;:::o;16174:134::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;-1:-1:-1;;;;;16262:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;16262:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16174:134::o;13331:220::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;13415:16:::1;::::0;::::1;::::0;::::1;;;13414:17;13406:26;;;::::0;::::1;;-1:-1:-1::0;;;;;13451:28:0;::::1;13474:4;13451:28;;13443:55;;;::::0;-1:-1:-1;;;13443:55:0;;17613:2:1;13443:55:0::1;::::0;::::1;17595:21:1::0;17652:2;17632:18;;;17625:30;17691:16;17671:18;;;17664:44;17725:18;;13443:55:0::1;17411:338:1::0;13443:55:0::1;13509:9;:34:::0;;-1:-1:-1;;;;;13509:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;13331:220::o;16316:106::-;16357:7;16400:13;4968:2;16400;:13;:::i;:::-;16384:12;;:30;;;;:::i;9843:193::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;9928:6:::1;::::0;;9908:34:::1;::::0;-1:-1:-1;;;;;9928:6:0;;::::1;::::0;9908:19:::1;:34::i;:::-;9970:1;9953:19:::0;;;::::1;::::0;;9988:40:::1;::::0;9970:1;;9988:40:::1;::::0;9970:1;;9988:40:::1;9843:193::o:0;12823:500::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;12904:16;12900:416:::1;;-1:-1:-1::0;;;;;12937:13:0;;::::1;12953:5;12937:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12937:21:0::1;::::0;;12973:9:::1;::::0;:32;;;;;::::1;::::0;::::1;17922:74:1::0;;;;18012:18;;;18005:50;;;;12973:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;17895:18:1;;12973:32:0::1;17754:307:1::0;12900:416:0::1;13042:17;::::0;:22;13038:136:::1;;13131:6;13111:17;;13093:15;:35;;;;:::i;:::-;:44;13085:73;;;::::0;-1:-1:-1;;;13085:73:0;;18268:2:1;13085:73:0::1;::::0;::::1;18250:21:1::0;18307:2;18287:18;;;18280:30;18346:18;18326;;;18319:46;18382:18;;13085:73:0::1;18066:340:1::0;13085:73:0::1;-1:-1:-1::0;;;;;13188:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;13188:20:0::1;13204:4;13188:20:::0;;::::1;::::0;;;13243:15:::1;13223:17;:35:::0;;;13273:9:::1;::::0;:31;;;;;;;::::1;17922:74:1::0;;;;18012:18;;;18005:50;13273:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;17895:18:1;;13273:31:0::1;17754:307:1::0;12900:416:0::1;12823:500:::0;;:::o;11780:173::-;11844:4;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;11893:9:::1;::::0;11861:62:::1;::::0;11878:4:::1;::::0;-1:-1:-1;;;;;11893:9:0::1;-1:-1:-1::0;;11861:8:0::1;:62::i;:::-;-1:-1:-1::0;11941:4:0::1;11780:173:::0;:::o;22036:536::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;22098:14:::1;::::0;::::1;;22097:15;22089:52;;;::::0;-1:-1:-1;;;22089:52:0;;18613:2:1;22089:52:0::1;::::0;::::1;18595:21:1::0;18652:2;18632:18;;;18625:30;18691:26;18671:18;;;18664:54;18735:18;;22089:52:0::1;18411:348:1::0;22089:52:0::1;22160:16;::::0;::::1;::::0;::::1;;;22152:53;;;::::0;-1:-1:-1;;;22152:53:0;;18966:2:1;22152:53:0::1;::::0;::::1;18948:21:1::0;19005:2;18985:18;;;18978:30;19044:26;19024:18;;;19017:54;19088:18;;22152:53:0::1;18764:348:1::0;22152:53:0::1;22227:9;::::0;;;::::1;-1:-1:-1::0;;;;;22227:9:0::1;22216:99;;22267:9;:36:::0;;;::::1;22297:4;22267:36:::0;::::1;;::::0;;22216:99:::1;22329:9;::::0;22349:6:::1;::::0;22329:85:::1;::::0;;;;-1:-1:-1;;;;;22349:6:0;;::::1;22329:85;::::0;::::1;19340:74:1::0;19462:10;22364:12:0::1;19450:23:1::0;19430:18;;;19423:51;19522:18;22386:15:0::1;19510:31:1::0;19490:18;;;19483:59;4968:2:0::1;19558:18:1::0;;;19551:45;22329:9:0;;;::::1;;::::0;:19:::1;::::0;19312::1;;22329:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;22436:14:0::1;:21:::0;;-1:-1:-1;;22436:21:0::1;22453:4;22436:21;::::0;;22495:6:::1;::::0;-1:-1:-1;;;;;22495:6:0::1;-1:-1:-1::0;11091:16:0;;;:7;:16;;;;;;22506:4:::1;::::0;22484:26:::1;;;;:::i;:::-;22468:13;:42:::0;22545:6:::1;::::0;-1:-1:-1;;;;;22545:6:0::1;11064:7:::0;11091:16;;;:7;:16;;;;;;22560:4:::1;::::0;22535:21:::1;::::0;22555:1:::1;22535:21;:::i;:::-;22534:30;;;;:::i;:::-;22521:10;:43:::0;22036:536::o;11123:165::-;11201:4;11218:40;11228:10;11240:9;11251:6;11218:9;:40::i;:::-;-1:-1:-1;11276:4:0;;11123:165;-1:-1:-1;;;11123:165:0:o;14907:288::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;15012:7:::1;:29:::0;;::::1;15092:33:::0;;::::1;::::0;::::1;::::0;15052:29;;::::1;::::0;::::1;::::0;;;;15012;;::::1;15052::::0;;;;;;;::::1;15092:33;;::::0;;15114:11;15152:21:::1;15072:9:::0;15032;15152:21:::1;:::i;:::-;:35;;;;:::i;:::-;15136:7;:51:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;14907:288:0:o;17117:164::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;17193:19:::1;:29:::0;;;::::1;;;;-1:-1:-1::0;;17193:29:0;;::::1;;::::0;;17238:35:::1;::::0;::::1;::::0;::::1;::::0;17215:7;4598:14:1;4591:22;4573:41;;4561:2;4546:18;;4433:187;17238:35:0::1;;;;;;;;17117:164:::0;:::o;16896:213::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;17002:23;:46;;-1:-1:-1;;;;;17002:46:0;;::::1;::::0;;;::::1;;::::0;;;:11:::1;17059:42:::0;;;;;::::1;::::0;::::1;;::::0;;16896:213::o;12275:540::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;12344:20:::1;12377:9;12344:43;;12398:16;12428:10;-1:-1:-1::0;;;;;12428:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12417:40:0::1;;12466:4;12473:10;-1:-1:-1::0;;;;;12473:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12417:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;10700:15:1;;;12417:74:0::1;::::0;::::1;10682:34:1::0;10752:15;;10732:18;;;10725:43;10594:18;;12417:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12398:93:::0;-1:-1:-1;;;;;;12506:22:0;::::1;12502:200;;12565:10;-1:-1:-1::0;;;;;12565:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12554:43:0::1;;12606:4;12613:10;-1:-1:-1::0;;;;;12613:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12554:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;10700:15:1;;;12554:77:0::1;::::0;::::1;10682:34:1::0;10752:15;;10732:18;;;10725:43;10594:18;;12554:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12545:6;:86:::0;;;::::1;-1:-1:-1::0;;;;;12545:86:0;;;::::1;::::0;;;::::1;::::0;;12502:200:::1;;;12673:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;12673:17:0;::::1;;::::0;;12502:200:::1;12712:9;:22:::0;;;::::1;-1:-1:-1::0;;;;;12712:22:0;::::1;::::0;;::::1;::::0;;;12745:62:::1;::::0;12762:4:::1;::::0;-1:-1:-1;;12745:8:0::1;:62::i;22580:182::-:0;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;22647:16:::1;::::0;::::1;::::0;::::1;;;22646:17;22638:58;;;::::0;-1:-1:-1;;;22638:58:0;;20626:2:1;22638:58:0::1;::::0;::::1;20608:21:1::0;20665:2;20645:18;;;20638:30;20704;20684:18;;;20677:58;20752:18;;22638:58:0::1;20424:352:1::0;22638:58:0::1;22715:6;::::0;;22707:47:::1;::::0;-1:-1:-1;;;;;22715:6:0;;::::1;::::0;22732:21:::1;22707:47:::0;::::1;;;::::0;22732:21;;22707:47;22715:6;22707:47;22732:21;22715:6;22707:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22580:182::o:0;13559:145::-;7147:6;;-1:-1:-1;;;;;7147:6:0;7157:10;7147:20;7139:50;;;;-1:-1:-1;;;7139:50:0;;10981:2:1;7139:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7139:50:0;10779:341:1;7139:50:0;13649:9:::1;::::0;:47:::1;::::0;;;;-1:-1:-1;;;;;17940:55:1;;;13649:47:0::1;::::0;::::1;17922:74:1::0;18039:14;;18032:22;18012:18;;;18005:50;13649:9:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;17895:18:1;;13649:47:0::1;17754:307:1::0;13892:125:0;13977:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;13977:32:0;;;160:74:1;13953:4:0;;13977:9;;;;;:23;;133:18:1;;13977:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11463:309::-;-1:-1:-1;;;;;11557:20:0;;11549:52;;;;-1:-1:-1;;;11549:52:0;;21233:2:1;11549:52:0;;;21215:21:1;21272:2;21252:18;;;21245:30;21311:21;21291:18;;;21284:49;21350:18;;11549:52:0;21031:343:1;11549:52:0;-1:-1:-1;;;;;11620:21:0;;11612:53;;;;-1:-1:-1;;;11612:53:0;;21233:2:1;11612:53:0;;;21215:21:1;21272:2;21252:18;;;21245:30;21311:21;21291:18;;;21284:49;21350:18;;11612:53:0;21031:343:1;11612:53:0;-1:-1:-1;;;;;11678:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11731:33;;391:25:1;;;11731:33:0;;364:18:1;11731:33:0;;;;;;;11463:309;;;:::o;17654:2061::-;17733:4;-1:-1:-1;;;;;17758:18:0;;17750:68;;;;-1:-1:-1;;;17750:68:0;;21581:2:1;17750:68:0;;;21563:21:1;21620:2;21600:18;;;21593:30;21659:34;21639:18;;;21632:62;21730:7;21710:18;;;21703:35;21755:19;;17750:68:0;21379:401:1;17750:68:0;-1:-1:-1;;;;;17837:16:0;;17829:64;;;;-1:-1:-1;;;17829:64:0;;21987:2:1;17829:64:0;;;21969:21:1;22026:2;22006:18;;;21999:30;22065:34;22045:18;;;22038:62;22136:5;22116:18;;;22109:33;22159:19;;17829:64:0;21785:399:1;17829:64:0;17921:1;17912:6;:10;17904:64;;;;-1:-1:-1;;;17904:64:0;;22391:2:1;17904:64:0;;;22373:21:1;22430:2;22410:18;;;22403:30;22469:34;22449:18;;;22442:62;22540:11;22520:18;;;22513:39;22569:19;;17904:64:0;22189:405:1;17904:64:0;-1:-1:-1;;;;;18067:13:0;;17979:8;18067:13;;;:7;:13;;;;;;17979:8;;;;18067:13;;18063:162;;;18103:4;18097:10;;18063:162;;;-1:-1:-1;;;;;18129:11:0;;;;;;:7;:11;;;;;;;;18125:100;;;18164:4;18157:11;;18125:100;;;-1:-1:-1;18209:4:0;18125:100;18238:20;18249:4;18255:2;18238:10;:20::i;:::-;18235:641;;;18279:14;;;;18275:89;;18314:34;;-1:-1:-1;;;18314:34:0;;22801:2:1;18314:34:0;;;22783:21:1;22840:2;22820:18;;;22813:30;22879:26;22859:18;;;22852:54;22923:18;;18314:34:0;22599:348:1;18275:89:0;18381:3;:11;;;;18388:4;18381:11;18378:231;;;-1:-1:-1;;;;;18417:27:0;;;;;;:21;:27;;;;;;;;18416:28;:58;;;;-1:-1:-1;;;;;;18449:25:0;;;;;;:21;:25;;;;;;;;18448:26;18416:58;18412:182;;;18517:12;;18507:6;:22;;18499:75;;;;-1:-1:-1;;;18499:75:0;;23154:2:1;18499:75:0;;;23136:21:1;23193:2;23173:18;;;23166:30;23232:34;23212:18;;;23205:62;23303:10;23283:18;;;23276:38;23331:19;;18499:75:0;22952:404:1;18499:75:0;18640:9;;-1:-1:-1;;;;;18626:24:0;;;18640:9;;18626:24;;;;:33;;;18655:4;18654:5;18626:33;18623:242;;;-1:-1:-1;;;;;18685:25:0;;;;;;:21;:25;;;;;;;;18680:170;;18769:14;;18759:6;18743:13;18753:2;-1:-1:-1;;;;;11091:16:0;11064:7;11091:16;;;:7;:16;;;;;;;10998:117;18743:13;:22;;;;:::i;:::-;:40;;18735:95;;;;-1:-1:-1;;;18735:95:0;;23696:2:1;18735:95:0;;;23678:21:1;23735:2;23715:18;;;23708:30;23774:34;23754:18;;;23747:62;23845:12;23825:18;;;23818:40;23875:19;;18735:95:0;23494:406:1;18735:95:0;-1:-1:-1;;;;;18921:25:0;;18888:12;18921:25;;;:19;:25;;;;;;18903:4;;18921:25;;;:52;;-1:-1:-1;;;;;;18950:23:0;;;;;;:19;:23;;;;;;;;18921:52;18918:98;;;-1:-1:-1;18999:5:0;18918:98;19032:4;19028:599;;;19058:6;;;;19057:7;:47;;;;-1:-1:-1;19085:19:0;;;;;;;19057:47;19053:557;;;19174:15;19154:17;;19143:8;;:28;;;;:::i;:::-;:46;19139:456;;;19263:4;19214:28;11091:16;;;:7;:16;;;;;;19320:13;;19296:37;;19292:284;;19389:10;;19365:20;:34;19362:77;;-1:-1:-1;19426:10:0;;19362:77;19465:34;19478:20;19465:12;:34::i;:::-;19537:15;19526:8;:26;19292:284;19191:404;19139:456;19645:62;19663:4;19669:2;19673:6;19681:7;19690:3;19695:4;19701:5;19645:17;:62::i;:::-;19638:69;17654:2061;-1:-1:-1;;;;;;;;17654:2061:0:o;23186:945::-;23341:16;;23319:4;;23341:16;;;;;23336:221;;23374:28;23393:4;23399:2;23374:18;:28::i;:::-;23422:16;;;;;;;23421:17;:41;;;;;23442:20;23453:4;23459:2;23442:10;:20::i;:::-;23417:129;;;23483:47;;-1:-1:-1;;;23483:47:0;;24107:2:1;23483:47:0;;;24089:21:1;24146:2;24126:18;;;24119:30;24185:34;24165:18;;;24158:62;24256:7;24236:18;;;24229:35;24281:19;;23483:47:0;23905:401:1;23417:129:0;23573:20;23584:4;23590:2;23573:10;:20::i;:::-;23569:314;;;23641:9;;:37;;;;;-1:-1:-1;;;;;24592:15:1;;;23641:37:0;;;24574:34:1;24644:15;;;24624:18;;;24617:43;24676:18;;;24669:34;;;23610:12:0;;23641:9;;;;;:19;;24486:18:1;;23641:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;23641:37:0;;;;;;;;-1:-1:-1;;23641:37:0;;;;;;;;;;;;:::i;:::-;;;23637:163;;23776:8;;;23637:163;23729:5;-1:-1:-1;23820:7:0;23816:56;;23848:8;;;23816:56;23595:288;23569:314;-1:-1:-1;;;;;23895:13:0;;;;;;:7;:13;;;;;:23;;23912:6;;23895:13;:23;;23912:6;;23895:23;:::i;:::-;;;;-1:-1:-1;23929:22:0;;-1:-1:-1;23955:7:0;23954:55;;24003:6;23954:55;;;23966:34;23976:4;23982:3;23987:4;23993:6;23966:9;:34::i;:::-;-1:-1:-1;;;;;24020:11:0;;;;;;:7;:11;;;;;:29;;23929:80;;-1:-1:-1;23929:80:0;;24020:11;;;:29;;23929:80;;24020:29;:::i;:::-;;;;;;;;24082:2;-1:-1:-1;;;;;24067:34:0;24076:4;-1:-1:-1;;;;;24067:34:0;;24086:14;24067:34;;;;391:25:1;;379:2;364:18;;245:177;24067:34:0;;;;;;;;-1:-1:-1;24119:4:0;;23186:945;-1:-1:-1;;;;;;;;23186:945:0:o;17289:357::-;17357:4;17389:6;;-1:-1:-1;;;;;17381:14:0;;;17389:6;;17381:14;;;;:43;;-1:-1:-1;17418:6:0;;-1:-1:-1;;;;;17412:12:0;;;17418:6;;17412:12;;17381:43;:79;;;;-1:-1:-1;17454:6:0;;-1:-1:-1;;;;;17454:6:0;17441:9;:19;;17381:79;:118;;;;-1:-1:-1;;;;;;17478:21:0;;;;;;:17;:21;;;;;;;;17477:22;17381:118;:159;;;;-1:-1:-1;;;;;;17517:23:0;;;;;;:17;:23;;;;;;;;17516:24;17381:159;:186;;;;-1:-1:-1;;;;;;17557:10:0;;5964:42;17557:10;;17381:186;:219;;;;-1:-1:-1;;;;;;17584:16:0;;;;17381:219;:257;;;;-1:-1:-1;;;;;;17617:21:0;;17633:4;17617:21;;17381:257;17374:264;17289:357;-1:-1:-1;;;17289:357:0:o;19723:1789::-;7041:6;:13;;-1:-1:-1;;7041:13:0;7050:4;7041:13;;;19806:30:::1;::::0;;::::1;::::0;::::1;::::0;;19829:7:::1;19806:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;19847:56:::1;;19885:7;;;19847:56;19938:4;19918:26;::::0;;;:11:::1;:26;::::0;;;;;;;19953:9:::1;::::0;-1:-1:-1;;;;;19953:9:0::1;19918:46:::0;;;;;;;;-1:-1:-1;;19918:67:0::1;19915:165;;20022:4;20002:26;::::0;;;:11:::1;:26;::::0;;;;;;;20037:9:::1;::::0;-1:-1:-1;;;;;20037:9:0::1;20002:46:::0;;;;;;;-1:-1:-1;;20002:66:0;;19915:165:::1;20092:17;20173:1;20157:6;:12;;;20113:56;;20137:6;:16;;;20114:39;;:20;:39;;;;:::i;:::-;20113:56;;;;:::i;:::-;20112:62;;;;:::i;:::-;20092:82:::0;-1:-1:-1;20185:15:0::1;20203:32;20092:82:::0;20203:20;:32:::1;:::i;:::-;20280:16;::::0;;20294:1:::1;20280:16:::0;;;;;::::1;::::0;;20185:50;;-1:-1:-1;20256:21:0::1;::::0;20280:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20280:16:0::1;20256:40;;20325:4;20307;20312:1;20307:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20307:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;20351:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;20307:7;;20351:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20341:4;20346:1;20341:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20341:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;20380:9:::1;::::0;:186:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:186:::1;::::0;20455:7;;20380:9:::1;::::0;20493:4;;20520::::1;::::0;20540:15:::1;::::0;20380:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;20600:21:0::1;::::0;-1:-1:-1;20579:18:0::1;::::0;-1:-1:-1;20686:7:0;;-1:-1:-1;20660:22:0::1;20673:9:::0;20600:21;20660:22:::1;:::i;:::-;20659:34;;;;:::i;:::-;20632:61:::0;-1:-1:-1;20710:13:0;;20706:328:::1;;20740:9;::::0;:222:::1;::::0;;;;20817:4:::1;20740:222;::::0;::::1;25688:34:1::0;25738:18;;;25731:34;;;20740:9:0::1;25781:18:1::0;;;25774:34;;;25824:18;;;25817:34;5964:42:0::1;25867:19:1::0;;;25860:44;20932:15:0::1;25920:19:1::0;;;25913:35;-1:-1:-1;;;;;20740:9:0;;::::1;::::0;:25:::1;::::0;20773:16;;25599:19:1;;20740:222:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;20982:40:0::1;::::0;;26444:25:1;;;26500:2;26485:18;;26478:34;;;20982:40:0::1;::::0;-1:-1:-1;26417:18:1;20982:40:0::1;;;;;;;20706:328;21046:30;21060:16:::0;21046:30;::::1;:::i;:::-;;;21103:6;:16;;;21087:6;:12;;:32;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;21195:12:::1;::::0;::::1;::::0;21173:18:::1;::::0;::::1;::::0;21130:26:::1;::::0;-1:-1:-1;21159:48:0;;::::1;::::0;21160:31:::1;::::0;::::1;:10:::0;:31:::1;:::i;:::-;21159:48;;;;:::i;:::-;21130:77:::0;-1:-1:-1;21218:24:0::1;21245:31;21130:77:::0;21245:10;:31:::1;:::i;:::-;21291:18;::::0;::::1;::::0;21218:58;;-1:-1:-1;21291:22:0::1;;::::0;21287:107:::1;;21330:23:::0;;:52:::1;::::0;-1:-1:-1;;;;;21330:23:0;;::::1;::::0;:52;::::1;;;::::0;21363:18;;21330:23:::1;:52:::0;:23;:52;21363:18;21330:23;:52;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21287:107;21408:16;::::0;::::1;::::0;:20:::1;;::::0;21404:101:::1;;21445:11;:21:::0;:48:::1;::::0;-1:-1:-1;;;;;21445:21:0;;::::1;::::0;:48;::::1;;;::::0;21476:16;;21445:21:::1;:48:::0;:21;:48;21476:16;21445:21;:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21404:101;19795:1717;;;;;;;;7065:1;-1:-1:-1::0;7077:6:0;:14;;-1:-1:-1;;7077:14:0;;;19723:1789::o;21520:508::-;21602:16;;;;;;;21601:17;21593:65;;;;-1:-1:-1;;;21593:65:0;;26947:2:1;21593:65:0;;;26929:21:1;26986:2;26966:18;;;26959:30;27025:34;27005:18;;;26998:62;27096:5;27076:18;;;27069:33;27119:19;;21593:65:0;26745:399:1;21593:65:0;21674:20;21685:4;21691:2;21674:10;:20::i;:::-;21673:21;:37;;;;-1:-1:-1;21704:6:0;;-1:-1:-1;;;;;21698:12:0;;;21704:6;;21698:12;21673:37;21669:352;;;-1:-1:-1;;;;;21727:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;21727:30:0;21753:4;21727:30;;;21772:16;:23;;-1:-1:-1;;21772:23:0;21727:30;21772:23;;;;;21821:9;;;;21810:107;;21865:9;:36;;;;21895:4;21865:36;;;;;21810:107;21931:19;:26;;-1:-1:-1;;21931:26:0;;;;;21977:32;;-1:-1:-1;4573:41:1;;21977:32:0;;4561:2:1;4546:18;21977:32:0;;;;;;;21520:508;;:::o;24139:562::-;24227:7;24247:18;24280:3;24276:205;;;-1:-1:-1;24313:9:0;:16;;;24276:205;;;24351:4;24347:134;;;-1:-1:-1;24385:9:0;:17;;;;;;24347:134;;;-1:-1:-1;24448:9:0;:21;;;;;;24347:134;24493:17;5858:5;24513:19;24522:10;24513:6;:19;:::i;:::-;:38;;;;:::i;:::-;24580:4;24564:22;;;;:7;:22;;;;;:35;;24493:58;;-1:-1:-1;24493:58:0;;24564:22;;;:35;;24493:58;;24564:35;:::i;:::-;;;;-1:-1:-1;;24615:40:0;;391:25:1;;;24638:4:0;;-1:-1:-1;;;;;24615:40:0;;;;;379:2:1;364:18;24615:40:0;;;;;;;24675:18;24684:9;24675:6;:18;:::i;:::-;24668:25;24139:562;-1:-1:-1;;;;;;;24139:562:0:o;427:184:1:-;479:77;476:1;469:88;576:4;573:1;566:15;600:4;597:1;590:15;616:334;687:2;681:9;743:2;733:13;;-1:-1:-1;;729:86:1;717:99;;846:18;831:34;;867:22;;;828:62;825:88;;;893:18;;:::i;:::-;929:2;922:22;616:334;;-1:-1:-1;616:334:1:o;955:183::-;1015:4;1048:18;1040:6;1037:30;1034:56;;;1070:18;;:::i;:::-;-1:-1:-1;1115:1:1;1111:14;1127:4;1107:25;;955:183::o;1143:154::-;-1:-1:-1;;;;;1222:5:1;1218:54;1211:5;1208:65;1198:93;;1287:1;1284;1277:12;1302:737;1356:5;1409:3;1402:4;1394:6;1390:17;1386:27;1376:55;;1427:1;1424;1417:12;1376:55;1463:6;1450:20;1489:4;1513:60;1529:43;1569:2;1529:43;:::i;:::-;1513:60;:::i;:::-;1607:15;;;1693:1;1689:10;;;;1677:23;;1673:32;;;1638:12;;;;1717:15;;;1714:35;;;1745:1;1742;1735:12;1714:35;1781:2;1773:6;1769:15;1793:217;1809:6;1804:3;1801:15;1793:217;;;1889:3;1876:17;1906:31;1931:5;1906:31;:::i;:::-;1950:18;;1988:12;;;;1826;;1793:217;;;-1:-1:-1;2028:5:1;1302:737;-1:-1:-1;;;;;;1302:737:1:o;2044:118::-;2130:5;2123:13;2116:21;2109:5;2106:32;2096:60;;2152:1;2149;2142:12;2167:477;2257:6;2265;2318:2;2306:9;2297:7;2293:23;2289:32;2286:52;;;2334:1;2331;2324:12;2286:52;2374:9;2361:23;2407:18;2399:6;2396:30;2393:50;;;2439:1;2436;2429:12;2393:50;2462:61;2515:7;2506:6;2495:9;2491:22;2462:61;:::i;:::-;2452:71;;;2573:2;2562:9;2558:18;2545:32;2586:28;2608:5;2586:28;:::i;:::-;2633:5;2623:15;;;2167:477;;;;;:::o;3019:656::-;3131:4;3160:2;3189;3178:9;3171:21;3221:6;3215:13;3264:6;3259:2;3248:9;3244:18;3237:34;3289:1;3299:140;3313:6;3310:1;3307:13;3299:140;;;3408:14;;;3404:23;;3398:30;3374:17;;;3393:2;3370:26;3363:66;3328:10;;3299:140;;;3457:6;3454:1;3451:13;3448:91;;;3527:1;3522:2;3513:6;3502:9;3498:22;3494:31;3487:42;3448:91;-1:-1:-1;3591:2:1;3579:15;-1:-1:-1;;3575:88:1;3560:104;;;;3666:2;3556:113;;3019:656;-1:-1:-1;;;3019:656:1:o;3928:180::-;3987:6;4040:2;4028:9;4019:7;4015:23;4011:32;4008:52;;;4056:1;4053;4046:12;4008:52;-1:-1:-1;4079:23:1;;3928:180;-1:-1:-1;3928:180:1:o;4113:315::-;4181:6;4189;4242:2;4230:9;4221:7;4217:23;4213:32;4210:52;;;4258:1;4255;4248:12;4210:52;4297:9;4284:23;4316:31;4341:5;4316:31;:::i;:::-;4366:5;4418:2;4403:18;;;;4390:32;;-1:-1:-1;;;4113:315:1:o;4625:456::-;4702:6;4710;4718;4771:2;4759:9;4750:7;4746:23;4742:32;4739:52;;;4787:1;4784;4777:12;4739:52;4826:9;4813:23;4845:31;4870:5;4845:31;:::i;:::-;4895:5;-1:-1:-1;4952:2:1;4937:18;;4924:32;4965:33;4924:32;4965:33;:::i;:::-;4625:456;;5017:7;;-1:-1:-1;;;5071:2:1;5056:18;;;;5043:32;;4625:456::o;5086:248::-;5154:6;5162;5215:2;5203:9;5194:7;5190:23;5186:32;5183:52;;;5231:1;5228;5221:12;5183:52;-1:-1:-1;;5254:23:1;;;5324:2;5309:18;;;5296:32;;-1:-1:-1;5086:248:1:o;5339:1138::-;5457:6;5465;5518:2;5506:9;5497:7;5493:23;5489:32;5486:52;;;5534:1;5531;5524:12;5486:52;5574:9;5561:23;5603:18;5644:2;5636:6;5633:14;5630:34;;;5660:1;5657;5650:12;5630:34;5683:61;5736:7;5727:6;5716:9;5712:22;5683:61;:::i;:::-;5673:71;;5763:2;5753:12;;5818:2;5807:9;5803:18;5790:32;5847:2;5837:8;5834:16;5831:36;;;5863:1;5860;5853:12;5831:36;5886:24;;;-1:-1:-1;5941:4:1;5933:13;;5929:27;-1:-1:-1;5919:55:1;;5970:1;5967;5960:12;5919:55;6006:2;5993:16;6029:60;6045:43;6085:2;6045:43;:::i;6029:60::-;6123:15;;;6205:1;6201:10;;;;6193:19;;6189:28;;;6154:12;;;;6229:19;;;6226:39;;;6261:1;6258;6251:12;6226:39;6285:11;;;;6305:142;6321:6;6316:3;6313:15;6305:142;;;6387:17;;6375:30;;6338:12;;;;6425;;;;6305:142;;;6466:5;6456:15;;;;;;;5339:1138;;;;;:::o;6482:647::-;6556:6;6564;6572;6580;6633:3;6621:9;6612:7;6608:23;6604:33;6601:53;;;6650:1;6647;6640:12;6601:53;6689:9;6676:23;6708:28;6730:5;6708:28;:::i;:::-;6755:5;-1:-1:-1;6812:2:1;6797:18;;6784:32;6825:30;6784:32;6825:30;:::i;:::-;6874:7;-1:-1:-1;6933:2:1;6918:18;;6905:32;6946:30;6905:32;6946:30;:::i;:::-;6995:7;-1:-1:-1;7054:2:1;7039:18;;7026:32;7067:30;7026:32;7067:30;:::i;:::-;6482:647;;;;-1:-1:-1;6482:647:1;;-1:-1:-1;;6482:647:1:o;7323:159::-;7390:20;;7450:6;7439:18;;7429:29;;7419:57;;7472:1;7469;7462:12;7419:57;7323:159;;;:::o;7487:328::-;7561:6;7569;7577;7630:2;7618:9;7609:7;7605:23;7601:32;7598:52;;;7646:1;7643;7636:12;7598:52;7669:28;7687:9;7669:28;:::i;:::-;7659:38;;7716:37;7749:2;7738:9;7734:18;7716:37;:::i;:::-;7706:47;;7772:37;7805:2;7794:9;7790:18;7772:37;:::i;:::-;7762:47;;7487:328;;;;;:::o;7820:247::-;7879:6;7932:2;7920:9;7911:7;7907:23;7903:32;7900:52;;;7948:1;7945;7938:12;7900:52;7987:9;7974:23;8006:31;8031:5;8006:31;:::i;8072:454::-;8167:6;8175;8183;8191;8199;8252:3;8240:9;8231:7;8227:23;8223:33;8220:53;;;8269:1;8266;8259:12;8220:53;-1:-1:-1;;8292:23:1;;;8362:2;8347:18;;8334:32;;-1:-1:-1;8413:2:1;8398:18;;8385:32;;8464:2;8449:18;;8436:32;;-1:-1:-1;8515:3:1;8500:19;8487:33;;-1:-1:-1;8072:454:1;-1:-1:-1;8072:454:1:o;8531:382::-;8596:6;8604;8657:2;8645:9;8636:7;8632:23;8628:32;8625:52;;;8673:1;8670;8663:12;8625:52;8712:9;8699:23;8731:31;8756:5;8731:31;:::i;:::-;8781:5;-1:-1:-1;8838:2:1;8823:18;;8810:32;8851:30;8810:32;8851:30;:::i;8918:241::-;8974:6;9027:2;9015:9;9006:7;9002:23;8998:32;8995:52;;;9043:1;9040;9033:12;8995:52;9082:9;9069:23;9101:28;9123:5;9101:28;:::i;9613:404::-;9697:6;9705;9758:2;9746:9;9737:7;9733:23;9729:32;9726:52;;;9774:1;9771;9764:12;9726:52;9813:9;9800:23;9832:31;9857:5;9832:31;:::i;:::-;9882:5;-1:-1:-1;9939:2:1;9924:18;;9911:32;9952:33;9911:32;9952:33;:::i;11125:484::-;11178:3;11216:5;11210:12;11243:6;11238:3;11231:19;11269:4;11298:2;11293:3;11289:12;11282:19;;11335:2;11328:5;11324:14;11356:1;11366:218;11380:6;11377:1;11374:13;11366:218;;;11445:13;;-1:-1:-1;;;;;11441:62:1;11429:75;;11524:12;;;;11559:15;;;;11402:1;11395:9;11366:218;;;-1:-1:-1;11600:3:1;;11125:484;-1:-1:-1;;;;;11125:484:1:o;11614:342::-;11815:2;11804:9;11797:21;11778:4;11835:56;11887:2;11876:9;11872:18;11864:6;11835:56;:::i;:::-;11827:64;;11941:6;11934:14;11927:22;11922:2;11911:9;11907:18;11900:50;11614:342;;;;;:::o;12297:184::-;12349:77;12346:1;12339:88;12446:4;12443:1;12436:15;12470:4;12467:1;12460:15;12486:482;12575:1;12618:5;12575:1;12632:330;12653:7;12643:8;12640:21;12632:330;;;12772:4;-1:-1:-1;;12700:77:1;12694:4;12691:87;12688:113;;;12781:18;;:::i;:::-;12831:7;12821:8;12817:22;12814:55;;;12851:16;;;;12814:55;12930:22;;;;12890:15;;;;12632:330;;;12636:3;12486:482;;;;;:::o;12973:866::-;13022:5;13052:8;13042:80;;-1:-1:-1;13093:1:1;13107:5;;13042:80;13141:4;13131:76;;-1:-1:-1;13178:1:1;13192:5;;13131:76;13223:4;13241:1;13236:59;;;;13309:1;13304:130;;;;13216:218;;13236:59;13266:1;13257:10;;13280:5;;;13304:130;13341:3;13331:8;13328:17;13325:43;;;13348:18;;:::i;:::-;-1:-1:-1;;13404:1:1;13390:16;;13419:5;;13216:218;;13518:2;13508:8;13505:16;13499:3;13493:4;13490:13;13486:36;13480:2;13470:8;13467:16;13462:2;13456:4;13453:12;13449:35;13446:77;13443:159;;;-1:-1:-1;13555:19:1;;;13587:5;;13443:159;13634:34;13659:8;13653:4;13634:34;:::i;:::-;13764:6;-1:-1:-1;;13692:79:1;13683:7;13680:92;13677:118;;;13775:18;;:::i;:::-;13813:20;;12973:866;-1:-1:-1;;;12973:866:1:o;13844:140::-;13902:5;13931:47;13972:4;13962:8;13958:19;13952:4;13931:47;:::i;13989:274::-;14029:1;14055;14045:189;;14090:77;14087:1;14080:88;14191:4;14188:1;14181:15;14219:4;14216:1;14209:15;14045:189;-1:-1:-1;14248:9:1;;13989:274::o;14268:228::-;14308:7;14434:1;-1:-1:-1;;14362:74:1;14359:1;14356:81;14351:1;14344:9;14337:17;14333:105;14330:131;;;14441:18;;:::i;:::-;-1:-1:-1;14481:9:1;;14268:228::o;14501:125::-;14541:4;14569:1;14566;14563:8;14560:34;;;14574:18;;:::i;:::-;-1:-1:-1;14611:9:1;;14501:125::o;15400:184::-;15452:77;15449:1;15442:88;15549:4;15546:1;15539:15;15573:4;15570:1;15563:15;15589:175;15626:3;15670:4;15663:5;15659:16;15699:4;15690:7;15687:17;15684:43;;;15707:18;;:::i;:::-;15756:1;15743:15;;15589:175;-1:-1:-1;;15589:175:1:o;19607:224::-;19646:3;19674:6;19707:2;19704:1;19700:10;19737:2;19734:1;19730:10;19768:3;19764:2;19760:12;19755:3;19752:21;19749:47;;;19776:18;;:::i;:::-;19812:13;;19607:224;-1:-1:-1;;;;19607:224:1:o;19836:251::-;19906:6;19959:2;19947:9;19938:7;19934:23;19930:32;19927:52;;;19975:1;19972;19965:12;19927:52;20007:9;20001:16;20026:31;20051:5;20026:31;:::i;20781:245::-;20848:6;20901:2;20889:9;20880:7;20876:23;20872:32;20869:52;;;20917:1;20914;20907:12;20869:52;20949:9;20943:16;20968:28;20990:5;20968:28;:::i;23361:128::-;23401:3;23432:1;23428:6;23425:1;23422:13;23419:39;;;23438:18;;:::i;:::-;-1:-1:-1;23474:9:1;;23361:128::o;24714:605::-;25013:6;25002:9;24995:25;25056:6;25051:2;25040:9;25036:18;25029:34;25099:3;25094:2;25083:9;25079:18;25072:31;24976:4;25120:57;25172:3;25161:9;25157:19;25149:6;25120:57;:::i;:::-;-1:-1:-1;;;;;25213:55:1;;;;25208:2;25193:18;;25186:83;-1:-1:-1;25300:3:1;25285:19;25278:35;25112:65;24714:605;-1:-1:-1;;;24714:605:1:o;25959:306::-;26047:6;26055;26063;26116:2;26104:9;26095:7;26091:23;26087:32;26084:52;;;26132:1;26129;26122:12;26084:52;26161:9;26155:16;26145:26;;26211:2;26200:9;26196:18;26190:25;26180:35;;26255:2;26244:9;26240:18;26234:25;26224:35;;25959:306;;;;;:::o;26523:217::-;26562:4;26591:6;26647:10;;;;26617;;26669:12;;;26666:38;;;26684:18;;:::i;:::-;26721:13;;26523:217;-1:-1:-1;;;26523:217:1:o

Swarm Source

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