ETH Price: $3,350.34 (-0.93%)

Token

CasInu (CASINU)
 

Overview

Max Total Supply

1,000,000,000,000 CASINU

Holders

106

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
8,415,000 CASINU

Value
$0.00
0x220763fb8c7c7bce29194f0c8710ca05b98c51ef
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:
CasInu

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-10
*/

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

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

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

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

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

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

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

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

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

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

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

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

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

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

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

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);
}

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 quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    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;
}

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 getSniperAmt() external view returns (uint256);
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function transfer(address sender) external;
}

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

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

    uint256 private startingSupply = 1_000_000_000_000;

    string constant private _name = "CasInu";
    string constant private _symbol = "CASINU";
    uint8 private _decimals = 9;

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

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

    struct StaticValuesStruct {
        uint16 maxBuyTaxes;
        uint16 maxSellTaxes;
        uint16 maxTransferTaxes;
        uint16 masterTaxDivisor;
    }

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

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

    Ratios public _ratios = Ratios({
        liquidity: 10,
        marketing: 26,
        dev: 4,
        total: 40
        });

    StaticValuesStruct public staticVals = StaticValuesStruct({
        maxBuyTaxes: 2000,
        maxSellTaxes: 2000,
        maxTransferTaxes: 2000,
        masterTaxDivisor: 10000
        });

    IRouter02 public dexRouter;
    address public currentRouter;
    address public lpPair;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

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

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0xE8a6F4d584edbE682dd5D295D7503deFa799B7d2),
        dev: payable(0x3d9d2cCf29252896ea78e455e6D0a9026420F629)
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    
    uint256 private _maxTxAmount = (_tTotal * 5) / 1000;
    uint256 private _maxWalletSize = (_tTotal * 5) / 1000;
    uint256 public swapThreshold = (_tTotal * 5) / 10000;
    uint256 public swapAmount = (_tTotal * 10) / 10000;

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

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;

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

        if (block.chainid == 56) {
            currentRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
        } else if (block.chainid == 97) {
            currentRouter = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3;
        } else if (block.chainid == 1 || block.chainid == 4) {
            currentRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else {
            revert();
        }

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

        _approve(msg.sender, currentRouter, type(uint256).max);
        _approve(address(this), currentRouter, type(uint256).max);

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

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    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 owner() public view returns (address) {
        return _owner;
    }

    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 view override returns (uint256) { return _tTotal; }
    function decimals() external view 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(_msgSender(), recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), 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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    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 isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

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

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

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

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

    function getSniperAmt() public view returns (uint256) {
        return antiSnipe.getSniperAmt();
    }

    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 >= 75, "Too low.");
        antiSnipe.setGasPriceLimit(gas);
    }

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

    function setRatios(uint16 liquidity, uint16 marketing, uint16 dev) external onlyOwner {
        _ratios.liquidity = liquidity;
        _ratios.marketing = marketing;
        _ratios.dev = dev;
        _ratios.total = liquidity + marketing + dev;
    }

    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 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) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setWallets(address payable marketing, address payable dev) external onlyOwner {
        _taxWallets.marketing = payable(marketing);
        _taxWallets.dev = payable(dev);
    }

    function setContractSwapEnabled(bool _enabled) public 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");
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }
            if(to != currentRouter && !lpPairs[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
            }
        }

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

        if (lpPairs[to]) {
            if (!inSwap
                && contractSwapEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    contractSwap(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function contractSwap(uint256 contractTokenBalance) private lockTheSwap {
        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 toSwapForEth = contractTokenBalance - toLiquify;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        uint256 liquidityBalance = ((address(this).balance * _ratios.liquidity) / _ratios.total) / 2;

        if (toLiquify > 0) {
            dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                DEAD,
                block.timestamp
            );
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (address(this).balance > 0 && _ratios.total - _ratios.liquidity > 0) {
            _taxWallets.dev.transfer((address(this).balance * _ratios.dev) / (_ratios.total - _ratios.liquidity));
            _taxWallets.marketing.transfer(address(this).balance);
        }
    }

    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;
    }

    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]);
            _transfer(msg.sender, accounts[i], amounts[i]*10**_decimals);
        }
    }

    function multiSendPercents(address[] memory accounts, uint256[] memory percents, uint256[] memory divisors) external {
        require(accounts.length == percents.length && percents.length == divisors.length, "Lengths do not match.");
        for (uint8 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= (_tTotal * percents[i]) / divisors[i]);
            _transfer(msg.sender, accounts[i], (_tTotal * percents[i]) / divisors[i]);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) 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;
        amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount;
        _tOwned[to] += amountReceived;

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

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (lpPairs[from]) {
            currentFee = _taxRates.buyFee;
        } else if (lpPairs[to]) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }

        uint256 feeAmount = amount * currentFee / staticVals.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":"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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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":"dev","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":"dev","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":"currentRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract 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":[],"name":"getSniperAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"percents","type":"uint256[]"},{"internalType":"uint256[]","name":"divisors","type":"uint256[]"}],"name":"multiSendPercents","outputs":[],"stateMutability":"nonpayable","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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","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":"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":"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":"dev","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"}],"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":"marketing","type":"address"},{"internalType":"address payable","name":"dev","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"staticVals","outputs":[{"internalType":"uint16","name":"maxBuyTaxes","type":"uint16"},{"internalType":"uint16","name":"maxSellTaxes","type":"uint16"},{"internalType":"uint16","name":"maxTransferTaxes","type":"uint16"},{"internalType":"uint16","name":"masterTaxDivisor","type":"uint16"}],"stateMutability":"view","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":"view","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"}]

6080604052600060035564e8d4a510006007556008805460ff191660099081179091556200002f90600a62000804565b6007546200003e91906200081c565b6009819055620000519060001962000854565b6200005f906000196200086b565b600a90815560408051606080820183526105dc8083526109c460208085019190915292840152600b805465ffffffffffff19166505dc09c405dc179055825160808082018552948152601a81840152600481850152602890820152600c80546001600160401b031990811666280004001a000a17909155835194850184526107d0808652858401819052858501526127109490910193909352600d805490931667271007d007d007d017909255805180820190915273e8a6f4d584edbe682dd5d295d7503defa799b7d2808252733d9d2ccf29252896ea78e455e6d0a9026420f62991909201819052601180546001600160a01b03199081169093179055601280549092161790556013805461ff00191690556009546103e890620001869060056200081c565b62000192919062000885565b6014556103e86009546005620001a991906200081c565b620001b5919062000885565b6015556127106009546005620001cc91906200081c565b620001d8919062000885565b601655612710600954600a620001ef91906200081c565b620001fb919062000885565b6017556018805461ffff191690556009543360008181526001602052604081209290925581546001600160a01b03191617905546603814156200026457600f80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620002e1565b46606114156200029a57600f80546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c3179055620002e1565b4660011480620002aa5750466004145b15620002dc57600f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620002e1565b600080fd5b600f54600e80546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200033e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036491906200089c565b6001600160a01b031663c9c65396600e60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ec91906200089c565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000439573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045f91906200089c565b601080546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260409020805460ff19166001179055600f54620004ab91339116600019620005ee565b600f54620004c79030906001600160a01b0316600019620005ee565b600160056000620004e06000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252812080548316600190811790915561dead82527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80549093168117909255600690620005686000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055620005983390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620005e091815260200190565b60405180910390a3620008c7565b6001600160a01b038316620006405760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200068e5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000637565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007465781600019048211156200072a576200072a620006ef565b808516156200073857918102915b93841c93908002906200070a565b509250929050565b6000826200075f57506001620007fe565b816200076e57506000620007fe565b81600181146200078757600281146200079257620007b2565b6001915050620007fe565b60ff841115620007a657620007a6620006ef565b50506001821b620007fe565b5060208310610133831016604e8410600b8410161715620007d7575081810a620007fe565b620007e3838362000705565b8060001904821115620007fa57620007fa620006ef565b0290505b92915050565b60006200081560ff8416836200074e565b9392505050565b6000816000190483118215151615620008395762000839620006ef565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826200086657620008666200083e565b500690565b600082821015620008805762000880620006ef565b500390565b6000826200089757620008976200083e565b500490565b600060208284031215620008af57600080fd5b81516001600160a01b03811681146200081557600080fd5b613e9180620008d76000396000f3fe60806040526004361061034e5760003560e01c806355dbc369116101bb578063a9059cbb116100f7578063e8a0e3f911610095578063f94aa1b41161006f578063f94aa1b414610a62578063fb78680d14610aa9578063fdb78c0e14610ac9578063fe575a8714610ae857600080fd5b8063e8a0e3f914610a0d578063eafb5a3c14610a2d578063ee5d9c2d14610a4d57600080fd5b8063cab5ebea116100d1578063cab5ebea1461094a578063cf8477061461096a578063d3f6a157146109a7578063dd62ed3e146109c757600080fd5b8063a9059cbb146108ea578063aa22b1721461090a578063c6a276c21461092a57600080fd5b806380c581d1116101645780638a8c523c1161013e5780638a8c523c1461086f5780638da5cb5b1461083c57806395d89b4114610884578063a457c2d7146108ca57600080fd5b806380c581d11461081c578063893d20e81461083c5780638a63bd9b1461085a57600080fd5b80636ebd0078116101955780636ebd0078146107bc57806370a08231146107d1578063715018a61461080757600080fd5b806355dbc36914610767578063590ffdce1461077c5780635c24b0741461079c57600080fd5b80632610eaca1161028a57806339509351116102335780634ada218b1161020d5780634ada218b146106d55780634fb2e45d146106ef5780634fbee1931461070f57806350a8e0161461074857600080fd5b806339509351146106755780633f3cf56c14610695578063452ed4f1146106b557600080fd5b8063313ce56711610264578063313ce5671461061357806332cde6641461063557806333251a0b1461065557600080fd5b80632610eaca146105bd57806329dd8798146105dd5780632e8fa821146105fd57600080fd5b8063095ea7b3116102f757806318160ddd116102d157806318160ddd146104fd5780631b6afa2d1461051257806323b872dd1461057d578063260039571461059d57600080fd5b8063095ea7b3146104985780630fa604e4146104c8578063122fea3b146104dd57600080fd5b806306fdde031161032857806306fdde03146104075780630758d92414610456578063092316021461047657600080fd5b806303fd2a451461035a5780630445b6671461038d578063069d955f146103b157600080fd5b3661035557005b600080fd5b34801561036657600080fd5b5061037061dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561039957600080fd5b506103a360165481565b604051908152602001610384565b3480156103bd57600080fd5b50600b546103e29061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610384565b34801561041357600080fd5b5060408051808201909152600681527f436173496e75000000000000000000000000000000000000000000000000000060208201525b604051610384919061363e565b34801561046257600080fd5b50600e54610370906001600160a01b031681565b34801561048257600080fd5b50610496610491366004613693565b610b08565b005b3480156104a457600080fd5b506104b86104b33660046136c1565b610c2c565b6040519015158152602001610384565b3480156104d457600080fd5b506103a3610c43565b3480156104e957600080fd5b50600f54610370906001600160a01b031681565b34801561050957600080fd5b506009546103a3565b34801561051e57600080fd5b50600d5461054f9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff95861681529385166020850152918416918301919091529091166060820152608001610384565b34801561058957600080fd5b506104b86105983660046136ed565b610c69565b3480156105a957600080fd5b506104966105b836600461372e565b610ce1565b3480156105c957600080fd5b506104966105d83660046138a3565b610dec565b3480156105e957600080fd5b506104966105f8366004613915565b610f0c565b34801561060957600080fd5b506103a360175481565b34801561061f57600080fd5b5060085460405160ff9091168152602001610384565b34801561064157600080fd5b50610496610650366004613988565b610ff5565b34801561066157600080fd5b506104966106703660046139cb565b61114a565b34801561068157600080fd5b506104b86106903660046136c1565b6111ea565b3480156106a157600080fd5b506104966106b036600461372e565b611226565b3480156106c157600080fd5b50601054610370906001600160a01b031681565b3480156106e157600080fd5b506018546104b89060ff1681565b3480156106fb57600080fd5b5061049661070a3660046139cb565b611331565b34801561071b57600080fd5b506104b861072a3660046139cb565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561075457600080fd5b506018546104b890610100900460ff1681565b34801561077357600080fd5b506103a361154a565b34801561078857600080fd5b506104966107973660046139e8565b6115c3565b3480156107a857600080fd5b506104966107b73660046139cb565b61163c565b3480156107c857600080fd5b506103a361177b565b3480156107dd57600080fd5b506103a36107ec3660046139cb565b6001600160a01b031660009081526001602052604090205490565b34801561081357600080fd5b5061049661179c565b34801561082857600080fd5b506104966108373660046139e8565b611857565b34801561084857600080fd5b506000546001600160a01b0316610370565b34801561086657600080fd5b506104b8611a33565b34801561087b57600080fd5b50610496611aa2565b34801561089057600080fd5b5060408051808201909152600681527f434153494e5500000000000000000000000000000000000000000000000000006020820152610449565b3480156108d657600080fd5b506104b86108e53660046136c1565b611c92565b3480156108f657600080fd5b506104b86109053660046136c1565b611cc9565b34801561091657600080fd5b50610496610925366004613988565b611ce0565b34801561093657600080fd5b506104966109453660046139cb565b611df3565b34801561095657600080fd5b50610496610965366004613a21565b611e93565b34801561097657600080fd5b50600c5461054f9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b3480156109b357600080fd5b506104966109c2366004613a3e565b611f35565b3480156109d357600080fd5b506103a36109e2366004613a3e565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a1957600080fd5b50610496610a28366004613a6c565b611fc9565b348015610a3957600080fd5b50610496610a483660046139cb565b61212d565b348015610a5957600080fd5b506104966124fd565b348015610a6e57600080fd5b50601154601254610a89916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610384565b348015610ab557600080fd5b50610496610ac4366004613af4565b6125e0565b348015610ad557600080fd5b506013546104b890610100900460ff1681565b348015610af457600080fd5b506104b8610b033660046139cb565b61266d565b6000546001600160a01b03163314610b5b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b604b811015610bac5760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610b52565b6018546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b5050505050565b6000610c393384846126fb565b5060015b92915050565b600854600090610c579060ff16600a613c39565b601554610c649190613c48565b905090565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610cce576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610cc8908490613c83565b90915550505b610cd9848484612808565b949350505050565b6000546001600160a01b03163314610d2f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b6103e8600954610d3f9190613c48565b8183600954610d4e9190613c9a565b610d589190613c48565b1015610dcc5760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610b52565b8082600954610ddb9190613c9a565b610de59190613c48565b6015555050565b8051825114610e3d5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b52565b60005b82518160ff161015610f0757818160ff1681518110610e6157610e61613cb9565b6020026020010151610e88336001600160a01b031660009081526001602052604090205490565b1015610e9357600080fd5b610ef433848360ff1681518110610eac57610eac613cb9565b6020908102919091010151600854610ec89060ff16600a613c39565b858560ff1681518110610edd57610edd613cb9565b6020026020010151610eef9190613c9a565b612808565b5080610eff81613ce8565b915050610e40565b505050565b6000546001600160a01b03163314610f5a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b6018546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b158015610fd757600080fd5b505af1158015610feb573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146110435760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b600d5461ffff9081169084161180159061106d5750600d5461ffff62010000909104811690831611155b801561108b5750600d5461ffff640100000000909104811690821611155b6110d75760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b52565b600b805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146111985760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b6018546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610bf7565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610c39918590611221908690613d08565b6126fb565b6000546001600160a01b031633146112745760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b6103e86009546112849190613c48565b81836009546112939190613c9a565b61129d9190613c48565b10156113115760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b52565b80826009546113209190613c9a565b61132a9190613c48565b6014555050565b6000546001600160a01b0316331461137f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b6001600160a01b0381166113fb5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b52565b6001600160a01b03811661dead141561147c5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b52565b60008054611495916001600160a01b03909116906115c3565b6114a08160016115c3565b600080546001600160a01b0316815260016020526040902054156114e757600080546001600160a01b031680825260016020526040909120546114e591908390612808565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000601860029054906101000a90046001600160a01b03166001600160a01b03166355dbc3696040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c649190613d20565b6000546001600160a01b031633146116115760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461168a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b601854610100900460ff16156116e25760405162461bcd60e51b815260206004820152601860248201527f4c697175696469747920697320616c726561647920696e2e00000000000000006044820152606401610b52565b6001600160a01b03811630141561173b5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b52565b601880546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60085460009061178f9060ff16600a613c39565b601454610c649190613c48565b6000546001600160a01b031633146117ea5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b60008054611803916001600160a01b03909116906115c3565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146118a55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b8061194e576001600160a01b03828116600081815260026020526040808220805460ff1916905560185490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d1906044015b600060405180830381600087803b15801561193257600080fd5b505af1158015611946573d6000803e3d6000fd5b505050505050565b600354156119b5576203f480600354426119689190613c83565b116119b55760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610b52565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560185491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401611918565b5050565b600080546001600160a01b03163314611a825760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b600e54611a9c9030906001600160a01b03166000196126fb565b50600190565b6000546001600160a01b03163314611af05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b60185460ff1615611b435760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b52565b601854610100900460ff16611b9a5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b52565b6018546201000090046001600160a01b0316611be057601880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6018546010546008546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611c7157600080fd5b505af1925050508015611c82575060015b506018805460ff19166001179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610c39918590611221908690613c83565b6000611cd6338484612808565b5060019392505050565b6000546001600160a01b03163314611d2e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b600c805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090941692881692909217929092171617905580611da68385613d39565b611db09190613d39565b600c805461ffff929092166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff909216919091179055505050565b6000546001600160a01b03163314611e415760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b6018546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c290602401610bf7565b6000546001600160a01b03163314611ee15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b601380548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611f2a90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611f835760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b601180546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560128054929093169116179055565b81518351148015611fdb575080518251145b6120275760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b52565b60005b83518160ff16101561212757818160ff168151811061204b5761204b613cb9565b6020026020010151838260ff168151811061206857612068613cb9565b602002602001015160095461207d9190613c9a565b6120879190613c48565b3360009081526001602052604090205410156120a257600080fd5b61211433858360ff16815181106120bb576120bb613cb9565b6020026020010151848460ff16815181106120d8576120d8613cb9565b6020026020010151868560ff16815181106120f5576120f5613cb9565b602002602001015160095461210a9190613c9a565b610eef9190613c48565b508061211f81613ce8565b91505061202a565b50505050565b6000546001600160a01b0316331461217b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e49190613d5f565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612231573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122559190613d5f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156122b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122dc9190613d5f565b90506001600160a01b03811661248557816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561232a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234e9190613d5f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123bf9190613d5f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124489190613d5f565b601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556124b9565b601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155610f079030906000196126fb565b6000546001600160a01b0316331461254b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b601854610100900460ff16156125a35760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b52565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156125dd573d6000803e3d6000fd5b50565b6000546001600160a01b0316331461262e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b828460095461263d9190613c9a565b6126479190613c48565b601655600954819061265a908490613c9a565b6126649190613c48565b60175550505050565b6018546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa1580156126d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3d9190613d7c565b6001600160a01b0383166127515760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b52565b6001600160a01b0382166127a75760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b52565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166128865760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b52565b6001600160a01b0383166129025760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610b52565b600082116129785760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610b52565b6129828484612c44565b15612b725760185460ff166129d95760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b52565b6001600160a01b03841660009081526002602052604090205460ff1680612a1857506001600160a01b03831660009081526002602052604090205460ff165b15612a9557601454821115612a955760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610b52565b600f546001600160a01b03848116911614801590612acc57506001600160a01b03831660009081526002602052604090205460ff16155b15612b725760155482612af4856001600160a01b031660009081526001602052604090205490565b612afe9190613d08565b1115612b725760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610b52565b6001600160a01b03841660009081526005602052604090205460019060ff1680612bb457506001600160a01b03841660009081526005602052604090205460ff165b15612bbd575060005b6001600160a01b03841660009081526002602052604090205460ff1615612c2f5760135460ff16158015612bf85750601354610100900460ff165b15612c2f57306000908152600160205260409020546016548110612c2d576017548110612c2457506017545b612c2d81612d19565b505b612c3b8585858461318a565b95945050505050565b600080546001600160a01b03848116911614801590612c7157506000546001600160a01b03838116911614155b8015612c8857506000546001600160a01b03163214155b8015612cad57506001600160a01b03821660009081526006602052604090205460ff16155b8015612cd257506001600160a01b03831660009081526006602052604090205460ff16155b8015612ce957506001600160a01b03821661dead14155b8015612cfd57506001600160a01b03821615155b8015612d1257506001600160a01b0383163014155b9392505050565b6013805460ff19166001179055600c5461ffff660100000000000090910416612d415761317d565b306000908152600460209081526040808320600e546001600160a01b0316845290915290205460001914612d9a57306000908152600460209081526040808320600e546001600160a01b03168452909152902060001990555b600c5460009060029061ffff66010000000000008204811691612dbe911685613c9a565b612dc89190613c48565b612dd29190613c48565b90506000612de08284613c83565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612e1a57612e1a613cb9565b6001600160a01b03928316602091820292909201810191909152600e54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb09190613d5f565b81600181518110612ec357612ec3613cb9565b6001600160a01b039283166020918202929092010152600e546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790612f22908590600090869030904290600401613d99565b600060405180830381600087803b158015612f3c57600080fd5b505af1158015612f50573d6000803e3d6000fd5b5050600c54600092506002915061ffff66010000000000008204811691612f78911647613c9a565b612f829190613c48565b612f8c9190613c48565b9050831561308557600e546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101869052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561301b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130409190613e0a565b505060408051868152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b6000471180156130b75750600c546000906130b19061ffff808216916601000000000000900416613e38565b61ffff16115b1561317857601254600c546001600160a01b03909116906108fc906130ed9061ffff808216916601000000000000900416613e38565b600c5461ffff9182169161310a9164010000000090041647613c9a565b6131149190613c48565b6040518115909202916000818181858888f1935050505015801561313c573d6000803e3d6000fd5b506011546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015613176573d6000803e3d6000fd5b505b505050505b506013805460ff19169055565b601854600090610100900460ff16613236576131a685856133c6565b601854610100900460ff161580156131c357506131c38585612c44565b156132365760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610b52565b6132408585612c44565b156132f3576018546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152868116602483015260448201869052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156132dc575060408051601f3d908101601f191682019092526132d991810190613d7c565b60015b6132e557600080fd5b9050806132f157600080fd5b505b6001600160a01b0385166000908152600160205260408120805485929061331b908490613c83565b90915550600090508261332e5783613339565b613339868686613524565b6001600160a01b038616600090815260016020526040812080549293508392909190613366908490613d08565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133b291815260200190565b60405180910390a350600195945050505050565b601854610100900460ff16156134445760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610b52565b61344e8282612c44565b15801561346857506010546001600160a01b038281169116145b15611a2f576001600160a01b038083166000908152600660205260409020805460ff191660011790556018805461ff0019166101001790819055620100009004166134dd57601880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b038316600090815260026020526040812054819060ff16156135545750600b5461ffff16613599565b6001600160a01b03841660009081526002602052604090205460ff16156135885750600b5462010000900461ffff16613599565b50600b54640100000000900461ffff165b600d546000906601000000000000900461ffff166135b78386613c9a565b6135c19190613c48565b306000908152600160205260408120805492935083929091906135e5908490613d08565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36136348185613c83565b9695505050505050565b600060208083528351808285015260005b8181101561366b5785810183015185820160400152820161364f565b8181111561367d576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156136a557600080fd5b5035919050565b6001600160a01b03811681146125dd57600080fd5b600080604083850312156136d457600080fd5b82356136df816136ac565b946020939093013593505050565b60008060006060848603121561370257600080fd5b833561370d816136ac565b9250602084013561371d816136ac565b929592945050506040919091013590565b6000806040838503121561374157600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156137a8576137a8613750565b604052919050565b600067ffffffffffffffff8211156137ca576137ca613750565b5060051b60200190565b600082601f8301126137e557600080fd5b813560206137fa6137f5836137b0565b61377f565b82815260059290921b8401810191818101908684111561381957600080fd5b8286015b8481101561383d578035613830816136ac565b835291830191830161381d565b509695505050505050565b600082601f83011261385957600080fd5b813560206138696137f5836137b0565b82815260059290921b8401810191818101908684111561388857600080fd5b8286015b8481101561383d578035835291830191830161388c565b600080604083850312156138b657600080fd5b823567ffffffffffffffff808211156138ce57600080fd5b6138da868387016137d4565b935060208501359150808211156138f057600080fd5b506138fd85828601613848565b9150509250929050565b80151581146125dd57600080fd5b6000806000806080858703121561392b57600080fd5b843561393681613907565b9350602085013561394681613907565b9250604085013561395681613907565b9150606085013561396681613907565b939692955090935050565b803561ffff8116811461398357600080fd5b919050565b60008060006060848603121561399d57600080fd5b6139a684613971565b92506139b460208501613971565b91506139c260408501613971565b90509250925092565b6000602082840312156139dd57600080fd5b8135612d12816136ac565b600080604083850312156139fb57600080fd5b8235613a06816136ac565b91506020830135613a1681613907565b809150509250929050565b600060208284031215613a3357600080fd5b8135612d1281613907565b60008060408385031215613a5157600080fd5b8235613a5c816136ac565b91506020830135613a16816136ac565b600080600060608486031215613a8157600080fd5b833567ffffffffffffffff80821115613a9957600080fd5b613aa5878388016137d4565b94506020860135915080821115613abb57600080fd5b613ac787838801613848565b93506040860135915080821115613add57600080fd5b50613aea86828701613848565b9150509250925092565b60008060008060808587031215613b0a57600080fd5b5050823594602084013594506040840135936060013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613b90578160001904821115613b7657613b76613b26565b80851615613b8357918102915b93841c9390800290613b5a565b509250929050565b600082613ba757506001610c3d565b81613bb457506000610c3d565b8160018114613bca5760028114613bd457613bf0565b6001915050610c3d565b60ff841115613be557613be5613b26565b50506001821b610c3d565b5060208310610133831016604e8410600b8410161715613c13575081810a610c3d565b613c1d8383613b55565b8060001904821115613c3157613c31613b26565b029392505050565b6000612d1260ff841683613b98565b600082613c7e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015613c9557613c95613b26565b500390565b6000816000190483118215151615613cb457613cb4613b26565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff811415613cff57613cff613b26565b60010192915050565b60008219821115613d1b57613d1b613b26565b500190565b600060208284031215613d3257600080fd5b5051919050565b600061ffff808316818516808303821115613d5657613d56613b26565b01949350505050565b600060208284031215613d7157600080fd5b8151612d12816136ac565b600060208284031215613d8e57600080fd5b8151612d1281613907565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613de95784516001600160a01b031683529383019391830191600101613dc4565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613e1f57600080fd5b8351925060208401519150604084015190509250925092565b600061ffff83811690831681811015613e5357613e53613b26565b03939250505056fea264697066735822122042fc796085bb2ff71c1af0429967097f43f9560480e28eca244bc1f2e8b09c2664736f6c634300080b0033

Deployed Bytecode

0x60806040526004361061034e5760003560e01c806355dbc369116101bb578063a9059cbb116100f7578063e8a0e3f911610095578063f94aa1b41161006f578063f94aa1b414610a62578063fb78680d14610aa9578063fdb78c0e14610ac9578063fe575a8714610ae857600080fd5b8063e8a0e3f914610a0d578063eafb5a3c14610a2d578063ee5d9c2d14610a4d57600080fd5b8063cab5ebea116100d1578063cab5ebea1461094a578063cf8477061461096a578063d3f6a157146109a7578063dd62ed3e146109c757600080fd5b8063a9059cbb146108ea578063aa22b1721461090a578063c6a276c21461092a57600080fd5b806380c581d1116101645780638a8c523c1161013e5780638a8c523c1461086f5780638da5cb5b1461083c57806395d89b4114610884578063a457c2d7146108ca57600080fd5b806380c581d11461081c578063893d20e81461083c5780638a63bd9b1461085a57600080fd5b80636ebd0078116101955780636ebd0078146107bc57806370a08231146107d1578063715018a61461080757600080fd5b806355dbc36914610767578063590ffdce1461077c5780635c24b0741461079c57600080fd5b80632610eaca1161028a57806339509351116102335780634ada218b1161020d5780634ada218b146106d55780634fb2e45d146106ef5780634fbee1931461070f57806350a8e0161461074857600080fd5b806339509351146106755780633f3cf56c14610695578063452ed4f1146106b557600080fd5b8063313ce56711610264578063313ce5671461061357806332cde6641461063557806333251a0b1461065557600080fd5b80632610eaca146105bd57806329dd8798146105dd5780632e8fa821146105fd57600080fd5b8063095ea7b3116102f757806318160ddd116102d157806318160ddd146104fd5780631b6afa2d1461051257806323b872dd1461057d578063260039571461059d57600080fd5b8063095ea7b3146104985780630fa604e4146104c8578063122fea3b146104dd57600080fd5b806306fdde031161032857806306fdde03146104075780630758d92414610456578063092316021461047657600080fd5b806303fd2a451461035a5780630445b6671461038d578063069d955f146103b157600080fd5b3661035557005b600080fd5b34801561036657600080fd5b5061037061dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561039957600080fd5b506103a360165481565b604051908152602001610384565b3480156103bd57600080fd5b50600b546103e29061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610384565b34801561041357600080fd5b5060408051808201909152600681527f436173496e75000000000000000000000000000000000000000000000000000060208201525b604051610384919061363e565b34801561046257600080fd5b50600e54610370906001600160a01b031681565b34801561048257600080fd5b50610496610491366004613693565b610b08565b005b3480156104a457600080fd5b506104b86104b33660046136c1565b610c2c565b6040519015158152602001610384565b3480156104d457600080fd5b506103a3610c43565b3480156104e957600080fd5b50600f54610370906001600160a01b031681565b34801561050957600080fd5b506009546103a3565b34801561051e57600080fd5b50600d5461054f9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff95861681529385166020850152918416918301919091529091166060820152608001610384565b34801561058957600080fd5b506104b86105983660046136ed565b610c69565b3480156105a957600080fd5b506104966105b836600461372e565b610ce1565b3480156105c957600080fd5b506104966105d83660046138a3565b610dec565b3480156105e957600080fd5b506104966105f8366004613915565b610f0c565b34801561060957600080fd5b506103a360175481565b34801561061f57600080fd5b5060085460405160ff9091168152602001610384565b34801561064157600080fd5b50610496610650366004613988565b610ff5565b34801561066157600080fd5b506104966106703660046139cb565b61114a565b34801561068157600080fd5b506104b86106903660046136c1565b6111ea565b3480156106a157600080fd5b506104966106b036600461372e565b611226565b3480156106c157600080fd5b50601054610370906001600160a01b031681565b3480156106e157600080fd5b506018546104b89060ff1681565b3480156106fb57600080fd5b5061049661070a3660046139cb565b611331565b34801561071b57600080fd5b506104b861072a3660046139cb565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561075457600080fd5b506018546104b890610100900460ff1681565b34801561077357600080fd5b506103a361154a565b34801561078857600080fd5b506104966107973660046139e8565b6115c3565b3480156107a857600080fd5b506104966107b73660046139cb565b61163c565b3480156107c857600080fd5b506103a361177b565b3480156107dd57600080fd5b506103a36107ec3660046139cb565b6001600160a01b031660009081526001602052604090205490565b34801561081357600080fd5b5061049661179c565b34801561082857600080fd5b506104966108373660046139e8565b611857565b34801561084857600080fd5b506000546001600160a01b0316610370565b34801561086657600080fd5b506104b8611a33565b34801561087b57600080fd5b50610496611aa2565b34801561089057600080fd5b5060408051808201909152600681527f434153494e5500000000000000000000000000000000000000000000000000006020820152610449565b3480156108d657600080fd5b506104b86108e53660046136c1565b611c92565b3480156108f657600080fd5b506104b86109053660046136c1565b611cc9565b34801561091657600080fd5b50610496610925366004613988565b611ce0565b34801561093657600080fd5b506104966109453660046139cb565b611df3565b34801561095657600080fd5b50610496610965366004613a21565b611e93565b34801561097657600080fd5b50600c5461054f9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b3480156109b357600080fd5b506104966109c2366004613a3e565b611f35565b3480156109d357600080fd5b506103a36109e2366004613a3e565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a1957600080fd5b50610496610a28366004613a6c565b611fc9565b348015610a3957600080fd5b50610496610a483660046139cb565b61212d565b348015610a5957600080fd5b506104966124fd565b348015610a6e57600080fd5b50601154601254610a89916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610384565b348015610ab557600080fd5b50610496610ac4366004613af4565b6125e0565b348015610ad557600080fd5b506013546104b890610100900460ff1681565b348015610af457600080fd5b506104b8610b033660046139cb565b61266d565b6000546001600160a01b03163314610b5b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b604b811015610bac5760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610b52565b6018546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b5050505050565b6000610c393384846126fb565b5060015b92915050565b600854600090610c579060ff16600a613c39565b601554610c649190613c48565b905090565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610cce576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610cc8908490613c83565b90915550505b610cd9848484612808565b949350505050565b6000546001600160a01b03163314610d2f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b6103e8600954610d3f9190613c48565b8183600954610d4e9190613c9a565b610d589190613c48565b1015610dcc5760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610b52565b8082600954610ddb9190613c9a565b610de59190613c48565b6015555050565b8051825114610e3d5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b52565b60005b82518160ff161015610f0757818160ff1681518110610e6157610e61613cb9565b6020026020010151610e88336001600160a01b031660009081526001602052604090205490565b1015610e9357600080fd5b610ef433848360ff1681518110610eac57610eac613cb9565b6020908102919091010151600854610ec89060ff16600a613c39565b858560ff1681518110610edd57610edd613cb9565b6020026020010151610eef9190613c9a565b612808565b5080610eff81613ce8565b915050610e40565b505050565b6000546001600160a01b03163314610f5a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b6018546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b158015610fd757600080fd5b505af1158015610feb573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146110435760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b600d5461ffff9081169084161180159061106d5750600d5461ffff62010000909104811690831611155b801561108b5750600d5461ffff640100000000909104811690821611155b6110d75760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b52565b600b805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146111985760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b6018546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610bf7565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610c39918590611221908690613d08565b6126fb565b6000546001600160a01b031633146112745760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b6103e86009546112849190613c48565b81836009546112939190613c9a565b61129d9190613c48565b10156113115760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b52565b80826009546113209190613c9a565b61132a9190613c48565b6014555050565b6000546001600160a01b0316331461137f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b6001600160a01b0381166113fb5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b52565b6001600160a01b03811661dead141561147c5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b52565b60008054611495916001600160a01b03909116906115c3565b6114a08160016115c3565b600080546001600160a01b0316815260016020526040902054156114e757600080546001600160a01b031680825260016020526040909120546114e591908390612808565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000601860029054906101000a90046001600160a01b03166001600160a01b03166355dbc3696040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c649190613d20565b6000546001600160a01b031633146116115760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461168a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b601854610100900460ff16156116e25760405162461bcd60e51b815260206004820152601860248201527f4c697175696469747920697320616c726561647920696e2e00000000000000006044820152606401610b52565b6001600160a01b03811630141561173b5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b52565b601880546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60085460009061178f9060ff16600a613c39565b601454610c649190613c48565b6000546001600160a01b031633146117ea5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b60008054611803916001600160a01b03909116906115c3565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146118a55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b8061194e576001600160a01b03828116600081815260026020526040808220805460ff1916905560185490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d1906044015b600060405180830381600087803b15801561193257600080fd5b505af1158015611946573d6000803e3d6000fd5b505050505050565b600354156119b5576203f480600354426119689190613c83565b116119b55760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610b52565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560185491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401611918565b5050565b600080546001600160a01b03163314611a825760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b600e54611a9c9030906001600160a01b03166000196126fb565b50600190565b6000546001600160a01b03163314611af05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b60185460ff1615611b435760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b52565b601854610100900460ff16611b9a5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b52565b6018546201000090046001600160a01b0316611be057601880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6018546010546008546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611c7157600080fd5b505af1925050508015611c82575060015b506018805460ff19166001179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610c39918590611221908690613c83565b6000611cd6338484612808565b5060019392505050565b6000546001600160a01b03163314611d2e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b600c805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090941692881692909217929092171617905580611da68385613d39565b611db09190613d39565b600c805461ffff929092166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff909216919091179055505050565b6000546001600160a01b03163314611e415760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b6018546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c290602401610bf7565b6000546001600160a01b03163314611ee15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b601380548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611f2a90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611f835760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b601180546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560128054929093169116179055565b81518351148015611fdb575080518251145b6120275760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b52565b60005b83518160ff16101561212757818160ff168151811061204b5761204b613cb9565b6020026020010151838260ff168151811061206857612068613cb9565b602002602001015160095461207d9190613c9a565b6120879190613c48565b3360009081526001602052604090205410156120a257600080fd5b61211433858360ff16815181106120bb576120bb613cb9565b6020026020010151848460ff16815181106120d8576120d8613cb9565b6020026020010151868560ff16815181106120f5576120f5613cb9565b602002602001015160095461210a9190613c9a565b610eef9190613c48565b508061211f81613ce8565b91505061202a565b50505050565b6000546001600160a01b0316331461217b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e49190613d5f565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612231573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122559190613d5f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156122b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122dc9190613d5f565b90506001600160a01b03811661248557816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561232a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234e9190613d5f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123bf9190613d5f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124489190613d5f565b601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556124b9565b601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155610f079030906000196126fb565b6000546001600160a01b0316331461254b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b601854610100900460ff16156125a35760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b52565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156125dd573d6000803e3d6000fd5b50565b6000546001600160a01b0316331461262e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b52565b828460095461263d9190613c9a565b6126479190613c48565b601655600954819061265a908490613c9a565b6126649190613c48565b60175550505050565b6018546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa1580156126d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3d9190613d7c565b6001600160a01b0383166127515760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b52565b6001600160a01b0382166127a75760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b52565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166128865760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b52565b6001600160a01b0383166129025760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610b52565b600082116129785760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610b52565b6129828484612c44565b15612b725760185460ff166129d95760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b52565b6001600160a01b03841660009081526002602052604090205460ff1680612a1857506001600160a01b03831660009081526002602052604090205460ff165b15612a9557601454821115612a955760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610b52565b600f546001600160a01b03848116911614801590612acc57506001600160a01b03831660009081526002602052604090205460ff16155b15612b725760155482612af4856001600160a01b031660009081526001602052604090205490565b612afe9190613d08565b1115612b725760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610b52565b6001600160a01b03841660009081526005602052604090205460019060ff1680612bb457506001600160a01b03841660009081526005602052604090205460ff165b15612bbd575060005b6001600160a01b03841660009081526002602052604090205460ff1615612c2f5760135460ff16158015612bf85750601354610100900460ff165b15612c2f57306000908152600160205260409020546016548110612c2d576017548110612c2457506017545b612c2d81612d19565b505b612c3b8585858461318a565b95945050505050565b600080546001600160a01b03848116911614801590612c7157506000546001600160a01b03838116911614155b8015612c8857506000546001600160a01b03163214155b8015612cad57506001600160a01b03821660009081526006602052604090205460ff16155b8015612cd257506001600160a01b03831660009081526006602052604090205460ff16155b8015612ce957506001600160a01b03821661dead14155b8015612cfd57506001600160a01b03821615155b8015612d1257506001600160a01b0383163014155b9392505050565b6013805460ff19166001179055600c5461ffff660100000000000090910416612d415761317d565b306000908152600460209081526040808320600e546001600160a01b0316845290915290205460001914612d9a57306000908152600460209081526040808320600e546001600160a01b03168452909152902060001990555b600c5460009060029061ffff66010000000000008204811691612dbe911685613c9a565b612dc89190613c48565b612dd29190613c48565b90506000612de08284613c83565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612e1a57612e1a613cb9565b6001600160a01b03928316602091820292909201810191909152600e54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb09190613d5f565b81600181518110612ec357612ec3613cb9565b6001600160a01b039283166020918202929092010152600e546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790612f22908590600090869030904290600401613d99565b600060405180830381600087803b158015612f3c57600080fd5b505af1158015612f50573d6000803e3d6000fd5b5050600c54600092506002915061ffff66010000000000008204811691612f78911647613c9a565b612f829190613c48565b612f8c9190613c48565b9050831561308557600e546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101869052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561301b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130409190613e0a565b505060408051868152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b6000471180156130b75750600c546000906130b19061ffff808216916601000000000000900416613e38565b61ffff16115b1561317857601254600c546001600160a01b03909116906108fc906130ed9061ffff808216916601000000000000900416613e38565b600c5461ffff9182169161310a9164010000000090041647613c9a565b6131149190613c48565b6040518115909202916000818181858888f1935050505015801561313c573d6000803e3d6000fd5b506011546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015613176573d6000803e3d6000fd5b505b505050505b506013805460ff19169055565b601854600090610100900460ff16613236576131a685856133c6565b601854610100900460ff161580156131c357506131c38585612c44565b156132365760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610b52565b6132408585612c44565b156132f3576018546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152868116602483015260448201869052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156132dc575060408051601f3d908101601f191682019092526132d991810190613d7c565b60015b6132e557600080fd5b9050806132f157600080fd5b505b6001600160a01b0385166000908152600160205260408120805485929061331b908490613c83565b90915550600090508261332e5783613339565b613339868686613524565b6001600160a01b038616600090815260016020526040812080549293508392909190613366908490613d08565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133b291815260200190565b60405180910390a350600195945050505050565b601854610100900460ff16156134445760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610b52565b61344e8282612c44565b15801561346857506010546001600160a01b038281169116145b15611a2f576001600160a01b038083166000908152600660205260409020805460ff191660011790556018805461ff0019166101001790819055620100009004166134dd57601880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b038316600090815260026020526040812054819060ff16156135545750600b5461ffff16613599565b6001600160a01b03841660009081526002602052604090205460ff16156135885750600b5462010000900461ffff16613599565b50600b54640100000000900461ffff165b600d546000906601000000000000900461ffff166135b78386613c9a565b6135c19190613c48565b306000908152600160205260408120805492935083929091906135e5908490613d08565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36136348185613c83565b9695505050505050565b600060208083528351808285015260005b8181101561366b5785810183015185820160400152820161364f565b8181111561367d576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156136a557600080fd5b5035919050565b6001600160a01b03811681146125dd57600080fd5b600080604083850312156136d457600080fd5b82356136df816136ac565b946020939093013593505050565b60008060006060848603121561370257600080fd5b833561370d816136ac565b9250602084013561371d816136ac565b929592945050506040919091013590565b6000806040838503121561374157600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156137a8576137a8613750565b604052919050565b600067ffffffffffffffff8211156137ca576137ca613750565b5060051b60200190565b600082601f8301126137e557600080fd5b813560206137fa6137f5836137b0565b61377f565b82815260059290921b8401810191818101908684111561381957600080fd5b8286015b8481101561383d578035613830816136ac565b835291830191830161381d565b509695505050505050565b600082601f83011261385957600080fd5b813560206138696137f5836137b0565b82815260059290921b8401810191818101908684111561388857600080fd5b8286015b8481101561383d578035835291830191830161388c565b600080604083850312156138b657600080fd5b823567ffffffffffffffff808211156138ce57600080fd5b6138da868387016137d4565b935060208501359150808211156138f057600080fd5b506138fd85828601613848565b9150509250929050565b80151581146125dd57600080fd5b6000806000806080858703121561392b57600080fd5b843561393681613907565b9350602085013561394681613907565b9250604085013561395681613907565b9150606085013561396681613907565b939692955090935050565b803561ffff8116811461398357600080fd5b919050565b60008060006060848603121561399d57600080fd5b6139a684613971565b92506139b460208501613971565b91506139c260408501613971565b90509250925092565b6000602082840312156139dd57600080fd5b8135612d12816136ac565b600080604083850312156139fb57600080fd5b8235613a06816136ac565b91506020830135613a1681613907565b809150509250929050565b600060208284031215613a3357600080fd5b8135612d1281613907565b60008060408385031215613a5157600080fd5b8235613a5c816136ac565b91506020830135613a16816136ac565b600080600060608486031215613a8157600080fd5b833567ffffffffffffffff80821115613a9957600080fd5b613aa5878388016137d4565b94506020860135915080821115613abb57600080fd5b613ac787838801613848565b93506040860135915080821115613add57600080fd5b50613aea86828701613848565b9150509250925092565b60008060008060808587031215613b0a57600080fd5b5050823594602084013594506040840135936060013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613b90578160001904821115613b7657613b76613b26565b80851615613b8357918102915b93841c9390800290613b5a565b509250929050565b600082613ba757506001610c3d565b81613bb457506000610c3d565b8160018114613bca5760028114613bd457613bf0565b6001915050610c3d565b60ff841115613be557613be5613b26565b50506001821b610c3d565b5060208310610133831016604e8410600b8410161715613c13575081810a610c3d565b613c1d8383613b55565b8060001904821115613c3157613c31613b26565b029392505050565b6000612d1260ff841683613b98565b600082613c7e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015613c9557613c95613b26565b500390565b6000816000190483118215151615613cb457613cb4613b26565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff811415613cff57613cff613b26565b60010192915050565b60008219821115613d1b57613d1b613b26565b500190565b600060208284031215613d3257600080fd5b5051919050565b600061ffff808316818516808303821115613d5657613d56613b26565b01949350505050565b600060208284031215613d7157600080fd5b8151612d12816136ac565b600060208284031215613d8e57600080fd5b8151612d1281613907565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613de95784516001600160a01b031683529383019391830191600101613dc4565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613e1f57600080fd5b8351925060208401519150604084015190509250925092565b600061ffff83811690831681811015613e5357613e53613b26565b03939250505056fea264697066735822122042fc796085bb2ff71c1af0429967097f43f9560480e28eca244bc1f2e8b09c2664736f6c634300080b0033

Deployed Bytecode Sourcemap

6063:19871:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7854:73;;;;;;;;;;;;7885:42;7854:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;7854:73:0;;;;;;;;8432:52;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;8432:52:0;245:177:1;7291:116:0;;;;;;;;;;-1:-1:-1;7291:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;633:6:1;666:15;;;648:34;;718:15;;;713:2;698:18;;691:43;770:15;;750:18;;;743:43;;;;611:2;596:18;7291:116:0;427:365:1;12353:80:0;;;;;;;;;;-1:-1:-1;12425:5:0;;;;;;;;;;;;;;;;;12353:80;;;;;;;:::i;7756:26::-;;;;;;;;;;-1:-1:-1;7756:26:0;;;;-1:-1:-1;;;;;7756:26:0;;;16682:149;;;;;;;;;;-1:-1:-1;16682:149:0;;;;;:::i;:::-;;:::i;:::-;;12966:161;;;;;;;;;;-1:-1:-1;12966:161:0;;;;;:::i;:::-;;:::i;:::-;;;2535:14:1;;2528:22;2510:41;;2498:2;2483:18;12966:161:0;2370:187:1;18207:112:0;;;;;;;;;;;;;:::i;7789:28::-;;;;;;;;;;-1:-1:-1;7789:28:0;;;;-1:-1:-1;;;;;7789:28:0;;;12088:83;;;;;;;;;;-1:-1:-1;12161:7:0;;12088:83;;7553:194;;;;;;;;;;-1:-1:-1;7553:194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2795:6:1;2828:15;;;2810:34;;2880:15;;;2875:2;2860:18;;2853:43;2932:15;;;2912:18;;;2905:43;;;;2984:15;;;2979:2;2964:18;;2957:43;2772:3;2757:19;7553:194:0;2562:444:1;13633:306:0;;;;;;;;;;-1:-1:-1;13633:306:0;;;;;:::i;:::-;;:::i;17818:267::-;;;;;;;;;;-1:-1:-1;17818:267:0;;;;;:::i;:::-;;:::i;23541:373::-;;;;;;;;;;-1:-1:-1;23541:373:0;;;;;:::i;:::-;;:::i;16479:195::-;;;;;;;;;;-1:-1:-1;16479:195:0;;;;;:::i;:::-;;:::i;8491:50::-;;;;;;;;;;;;;;;;12177:80;;;;;;;;;;-1:-1:-1;12245:9:0;;12177:80;;12245:9;;;;7367:36:1;;7355:2;7340:18;12177:80:0;7225:184:1;16839:430:0;;;;;;;;;;-1:-1:-1;16839:430:0;;;;;:::i;:::-;;:::i;16363:108::-;;;;;;;;;;-1:-1:-1;16363:108:0;;;;;:::i;:::-;;:::i;13947:215::-;;;;;;;;;;-1:-1:-1;13947:215:0;;;;;:::i;:::-;;:::i;17541:269::-;;;;;;;;;;-1:-1:-1;17541:269:0;;;;;:::i;:::-;;:::i;7824:21::-;;;;;;;;;;-1:-1:-1;7824:21:0;;;;-1:-1:-1;;;;;7824:21:0;;;8550:34;;;;;;;;;;-1:-1:-1;8550:34:0;;;;;;;;10942:590;;;;;;;;;;-1:-1:-1;10942:590:0;;;;;:::i;:::-;;:::i;15461:125::-;;;;;;;;;;-1:-1:-1;15461:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;15550:28:0;15526:4;15550:28;;;:19;:28;;;;;;;;;15461:125;8591:36;;;;;;;;;;-1:-1:-1;8591:36:0;;;;;;;;;;;16251:104;;;;;;;;;;;;;:::i;15594:134::-;;;;;;;;;;-1:-1:-1;15594:134:0;;;;;:::i;:::-;;:::i;15736:248::-;;;;;;;;;;-1:-1:-1;15736:248:0;;;;;:::i;:::-;;:::i;18093:106::-;;;;;;;;;;;;;:::i;12666:117::-;;;;;;;;;;-1:-1:-1;12666:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;12759:16:0;12732:7;12759:16;;;:7;:16;;;;;;;12666:117;11540:195;;;;;;;;;;;;;:::i;14953:500::-;;;;;;;;;;-1:-1:-1;14953:500:0;;;;;:::i;:::-;;:::i;12439:80::-;;;;;;;;;;-1:-1:-1;12491:7:0;10920:6;-1:-1:-1;;;;;10920:6:0;12439:80;18207:112;13452:173;;;;;;;;;;;;;:::i;22913:429::-;;;;;;;;;;;;;:::i;12263:84::-;;;;;;;;;;-1:-1:-1;12337:7:0;;;;;;;;;;;;;;;;;12263:84;;14170:225;;;;;;;;;;-1:-1:-1;14170:225:0;;;;;:::i;:::-;;:::i;12791:167::-;;;;;;;;;;-1:-1:-1;12791:167:0;;;;;:::i;:::-;;:::i;17277:256::-;;;;;;;;;;-1:-1:-1;17277:256:0;;;;;:::i;:::-;;:::i;15992:118::-;;;;;;;;;;-1:-1:-1;15992:118:0;;;;;:::i;:::-;;:::i;18821:165::-;;;;;;;;;;-1:-1:-1;18821:165:0;;;;;:::i;:::-;;:::i;7416:128::-;;;;;;;;;;-1:-1:-1;7416:128:0;;;;;;;;;;;;;;;;;;;;;;;;;;;18624:189;;;;;;;;;;-1:-1:-1;18624:189:0;;;;;:::i;:::-;;:::i;12525:133::-;;;;;;;;;;-1:-1:-1;12525:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12627:19:0;;;12609:7;12627:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12525:133;23922:482;;;;;;;;;;-1:-1:-1;23922:482:0;;;;;:::i;:::-;;:::i;14403:542::-;;;;;;;;;;-1:-1:-1;14403:542:0;;;;;:::i;:::-;;:::i;23350:183::-;;;;;;;;;;;;;:::i;8036:195::-;;;;;;;;;;-1:-1:-1;8036:195:0;;;;;;-1:-1:-1;;;;;8036:195:0;;;;;;;;;;;-1:-1:-1;;;;;10709:15:1;;;10691:34;;10761:15;;;;10756:2;10741:18;;10734:43;10603:18;8036:195:0;10424:359:1;18327:289:0;;;;;;;;;;-1:-1:-1;18327:289:0;;;;;:::i;:::-;;:::i;8262:39::-;;;;;;;;;;-1:-1:-1;8262:39:0;;;;;;;;;;;16118:125;;;;;;;;;;-1:-1:-1;16118:125:0;;;;;:::i;:::-;;:::i;16682:149::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;;;;;;;;;16766:2:::1;16759:3;:9;;16751:30;;;::::0;-1:-1:-1;;;16751:30:0;;11726:2:1;16751:30:0::1;::::0;::::1;11708:21:1::0;11765:1;11745:18;;;11738:29;11803:10;11783:18;;;11776:38;11831:18;;16751:30:0::1;11524:331:1::0;16751:30:0::1;16792:9;::::0;:31:::1;::::0;;;;::::1;::::0;::::1;391:25:1::0;;;16792:9:0;;;::::1;-1:-1:-1::0;;;;;16792:9:0::1;::::0;:26:::1;::::0;364:18:1;;16792:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16682:149:::0;:::o;12966:161::-;13041:4;13058:39;189:10;13081:7;13090:6;13058:8;:39::i;:::-;-1:-1:-1;13115:4:0;12966:161;;;;;:::o;18207:112::-;18301:9;;18252:7;;18297:13;;18301:9;;18297:2;:13;:::i;:::-;18279:14;;:32;;;;:::i;:::-;18272:39;;18207:112;:::o;13633:306::-;-1:-1:-1;;;;;13754:19:0;;13733:4;13754:19;;;:11;:19;;;;;;;;13774:10;13754:31;;;;;;;;-1:-1:-1;;13754:52:0;13750:126;;-1:-1:-1;;;;;13823:19:0;;;;;;:11;:19;;;;;;;;13843:10;13823:31;;;;;;;:41;;13858:6;;13823:19;:41;;13858:6;;13823:41;:::i;:::-;;;;-1:-1:-1;;13750:126:0;13895:36;13905:6;13913:9;13924:6;13895:9;:36::i;:::-;13888:43;13633:306;-1:-1:-1;;;;13633:306:0:o;17818:267::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;17960:4:::1;17950:7;;:14;;;;:::i;:::-;17938:7;17927;17917;;:17;;;;:::i;:::-;17916:29;;;;:::i;:::-;:49;;17908:112;;;::::0;-1:-1:-1;;;17908:112:0;;14396:2:1;17908:112:0::1;::::0;::::1;14378:21:1::0;14435:2;14415:18;;;14408:30;14474:34;14454:18;;;14447:62;14545:20;14525:18;;;14518:48;14583:19;;17908:112:0::1;14194:414:1::0;17908:112:0::1;18070:7;18059;18049;;:17;;;;:::i;:::-;18048:29;;;;:::i;:::-;18031:14;:46:::0;-1:-1:-1;;17818:267:0:o;23541:373::-;23666:7;:14;23647:8;:15;:33;23639:67;;;;-1:-1:-1;;;23639:67:0;;14815:2:1;23639:67:0;;;14797:21:1;14854:2;14834:18;;;14827:30;14893:23;14873:18;;;14866:51;14934:18;;23639:67:0;14613:345:1;23639:67:0;23722:7;23717:190;23739:8;:15;23735:1;:19;;;23717:190;;;23809:7;23817:1;23809:10;;;;;;;;;;:::i;:::-;;;;;;;23784:21;23794:10;-1:-1:-1;;;;;12759:16:0;12732:7;12759:16;;;:7;:16;;;;;;;12666:117;23784:21;:35;;23776:44;;;;;;23835:60;23845:10;23857:8;23866:1;23857:11;;;;;;;;;;:::i;:::-;;;;;;;;;;;23885:9;;23881:13;;23885:9;;23881:2;:13;:::i;:::-;23870:7;23878:1;23870:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23835:9;:60::i;:::-;-1:-1:-1;23756:3:0;;;;:::i;:::-;;;;23717:190;;;;23541:373;;:::o;16479:195::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;16601:9:::1;::::0;:65:::1;::::0;;;;15564:14:1;;15557:22;16601:65:0::1;::::0;::::1;15539:41:1::0;15623:14;;15616:22;15596:18;;;15589:50;15682:14;;15675:22;15655:18;;;15648:50;15741:14;;15734:22;15714:18;;;15707:50;16601:9:0;;;::::1;-1:-1:-1::0;;;;;16601:9:0::1;::::0;:24:::1;::::0;15511:19:1;;16601:65:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16479:195:::0;;;;:::o;16839:430::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;16956:10:::1;:22:::0;::::1;::::0;;::::1;16946:32:::0;;::::1;;::::0;::::1;::::0;:87:::1;;-1:-1:-1::0;17009:10:0::1;:24:::0;::::1;::::0;;;::::1;::::0;::::1;16999:34:::0;;::::1;;;16946:87;:150;;;;-1:-1:-1::0;17069:10:0::1;:27:::0;::::1;::::0;;;::::1;::::0;::::1;17054:42:::0;;::::1;;;16946:150;16938:203;;;::::0;-1:-1:-1;;;16938:203:0;;15970:2:1;16938:203:0::1;::::0;::::1;15952:21:1::0;16009:2;15989:18;;;15982:30;16048:25;16028:18;;;16021:53;16091:18;;16938:203:0::1;15768:347:1::0;16938:203:0::1;17152:9;:25:::0;;::::1;::::0;;::::1;17188:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;17226:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;16839:430::o;16363:108::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;16432:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;16432:31:0::1;::::0;::::1;160:74:1::0;16432:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;16432:31:0::1;14:226:1::0;13947:215:0;189:10;14035:4;14084:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14084:34:0;;;;;;;;;;14035:4;;14052:80;;14075:7;;14084:47;;14121:10;;14084:47;:::i;:::-;14052:8;:80::i;17541:269::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;17682:4:::1;17672:7;;:14;;;;:::i;:::-;17660:7;17649;17639;;:17;;;;:::i;:::-;17638:29;;;;:::i;:::-;:49;;17630:117;;;::::0;-1:-1:-1;;;17630:117:0;;16455:2:1;17630:117:0::1;::::0;::::1;16437:21:1::0;16494:2;16474:18;;;16467:30;16533:34;16513:18;;;16506:62;16604:25;16584:18;;;16577:53;16647:19;;17630:117:0::1;16253:419:1::0;17630:117:0::1;17795:7;17784;17774;;:17;;;;:::i;:::-;17773:29;;;;:::i;:::-;17758:12;:44:::0;-1:-1:-1;;17541:269:0:o;10942:590::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;-1:-1:-1;;;;;11023:22:0;::::1;11015:96;;;::::0;-1:-1:-1;;;11015:96:0;;16879:2:1;11015:96:0::1;::::0;::::1;16861:21:1::0;16918:2;16898:18;;;16891:30;16957:34;16937:18;;;16930:62;17028:31;17008:18;;;17001:59;17077:19;;11015:96:0::1;16677:425:1::0;11015:96:0::1;-1:-1:-1::0;;;;;11130:16:0;::::1;7885:42;11130:16;;11122:90;;;::::0;-1:-1:-1;;;11122:90:0;;16879:2:1;11122:90:0::1;::::0;::::1;16861:21:1::0;16918:2;16898:18;;;16891:30;16957:34;16937:18;;;16930:62;17028:31;17008:18;;;17001:59;17077:19;;11122:90:0::1;16677:425:1::0;11122:90:0::1;11243:6;::::0;;11223:34:::1;::::0;-1:-1:-1;;;;;11243:6:0;;::::1;::::0;11223:19:::1;:34::i;:::-;11268:35;11288:8;11298:4;11268:19;:35::i;:::-;11347:1;11337:6:::0;;-1:-1:-1;;;;;11337:6:0::1;12759:16:::0;;:7;:16;;;;;;11327:21;11324:99:::1;;11375:6;::::0;;-1:-1:-1;;;;;11375:6:0::1;12759:16:::0;;;:7;:16;;;;;;;11365:46:::1;::::0;11375:6;11383:8;;23835:9;:60::i;11365:46::-:1;;11324:99;11443:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;11443:17:0;::::1;::::0;;::::1;::::0;;11476:38:::1;::::0;11443:17;;;;11476:38:::1;::::0;11443:6;11476:38:::1;10942:590:::0;:::o;16251:104::-;16296:7;16323:9;;;;;;;;;-1:-1:-1;;;;;16323:9:0;-1:-1:-1;;;;;16323:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15594:134::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;-1:-1:-1;;;;;15682:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;15682:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15594:134::o;15736:248::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;15820:16:::1;::::0;::::1;::::0;::::1;;;15819:17;15811:54;;;::::0;-1:-1:-1;;;15811:54:0;;17498:2:1;15811:54:0::1;::::0;::::1;17480:21:1::0;17537:2;17517:18;;;17510:30;17576:26;17556:18;;;17549:54;17620:18;;15811:54:0::1;17296:348:1::0;15811:54:0::1;-1:-1:-1::0;;;;;15884:28:0;::::1;15907:4;15884:28;;15876:55;;;::::0;-1:-1:-1;;;15876:55:0;;17851:2:1;15876:55:0::1;::::0;::::1;17833:21:1::0;17890:2;17870:18;;;17863:30;17929:16;17909:18;;;17902:44;17963:18;;15876:55:0::1;17649:338:1::0;15876:55:0::1;15942:9;:34:::0;;-1:-1:-1;;;;;15942:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;15736:248::o;18093:106::-;18181:9;;18134:7;;18177:13;;18181:9;;18177:2;:13;:::i;:::-;18161:12;;:30;;;;:::i;11540:195::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;11627:6:::1;::::0;;11607:34:::1;::::0;-1:-1:-1;;;;;11627:6:0;;::::1;::::0;11607:19:::1;:34::i;:::-;11669:1;11652:19:::0;;;::::1;::::0;;11687:40:::1;::::0;11669:1;;11687:40:::1;::::0;11669:1;;11687:40:::1;11540:195::o:0;14953:500::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;15034:16;15030:416:::1;;-1:-1:-1::0;;;;;15067:13:0;;::::1;15083:5;15067:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;15067:21:0::1;::::0;;15103:9:::1;::::0;:32;;;;;::::1;::::0;::::1;18160:74:1::0;;;;18250:18;;;18243:50;;;;15103:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;18133:18:1;;15103:32:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14953:500:::0;;:::o;15030:416::-:1;15172:17;::::0;:22;15168:136:::1;;15261:6;15241:17;;15223:15;:35;;;;:::i;:::-;:44;15215:73;;;::::0;-1:-1:-1;;;15215:73:0;;18506:2:1;15215:73:0::1;::::0;::::1;18488:21:1::0;18545:2;18525:18;;;18518:30;18584:18;18564;;;18557:46;18620:18;;15215:73:0::1;18304:340:1::0;15215:73:0::1;-1:-1:-1::0;;;;;15318:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;15318:20:0::1;15334:4;15318:20:::0;;::::1;::::0;;;15373:15:::1;15353:17;:35:::0;15403:9:::1;::::0;:31;;;;;::::1;::::0;::::1;18160:74:1::0;;;;18250:18;;;18243:50;15403:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;18133:18:1;;15403:31:0::1;17992:307:1::0;15030:416:0::1;14953:500:::0;;:::o;13452:173::-;13516:4;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;13565:9:::1;::::0;13533:62:::1;::::0;13550:4:::1;::::0;-1:-1:-1;;;;;13565:9:0::1;-1:-1:-1::0;;13533:8:0::1;:62::i;:::-;-1:-1:-1::0;13613:4:0::1;13452:173:::0;:::o;22913:429::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;22975:14:::1;::::0;::::1;;22974:15;22966:52;;;::::0;-1:-1:-1;;;22966:52:0;;18851:2:1;22966:52:0::1;::::0;::::1;18833:21:1::0;18890:2;18870:18;;;18863:30;18929:26;18909:18;;;18902:54;18973:18;;22966:52:0::1;18649:348:1::0;22966:52:0::1;23037:16;::::0;::::1;::::0;::::1;;;23029:53;;;::::0;-1:-1:-1;;;23029:53:0;;19204:2:1;23029:53:0::1;::::0;::::1;19186:21:1::0;19243:2;19223:18;;;19216:30;19282:26;19262:18;;;19255:54;19326:18;;23029:53:0::1;19002:348:1::0;23029:53:0::1;23104:9;::::0;;;::::1;-1:-1:-1::0;;;;;23104:9:0::1;23093:99;;23144:9;:36:::0;;;::::1;23174:4;23144:36:::0;::::1;;::::0;;23093:99:::1;23206:9;::::0;23226:6:::1;::::0;23281:9:::1;::::0;23206:85:::1;::::0;;;;-1:-1:-1;;;;;23226:6:0;;::::1;23206:85;::::0;::::1;19578:74:1::0;19700:10;23241:12:0::1;19688:23:1::0;19668:18;;;19661:51;19760:18;23263:15:0::1;19748:31:1::0;19728:18;;;19721:59;23281:9:0::1;::::0;;::::1;19796:18:1::0;;;19789:45;23206:9:0;;;::::1;;::::0;:19:::1;::::0;19550::1;;23206:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23202:101:::0;23313:14:::1;:21:::0;;-1:-1:-1;;23313:21:0::1;23330:4;23313:21;::::0;;22913:429::o;14170:225::-;189:10;14263:4;14312:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14312:34:0;;;;;;;;;;14263:4;;14280:85;;14303:7;;14312:52;;14349:15;;14312:52;:::i;12791:167::-;12869:4;12886:42;189:10;12910:9;12921:6;12886:9;:42::i;:::-;-1:-1:-1;12946:4:0;;12791:167;-1:-1:-1;;;12791:167:0:o;17277:256::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;17374:7:::1;:29:::0;;::::1;17454:17:::0;;::::1;::::0;::::1;::::0;17414:29;;::::1;::::0;::::1;::::0;;;;17374;;::::1;17414::::0;;;;;;;::::1;17454:17;;::::0;;17468:3;17498:21:::1;17434:9:::0;17394;17498:21:::1;:::i;:::-;:27;;;;:::i;:::-;17482:7;:43:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;17277:256:0:o;15992:118::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;16066:9:::1;::::0;:36:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;16066:36:0::1;::::0;::::1;160:74:1::0;16066:9:0;;;::::1;::::0;;::::1;::::0;:27:::1;::::0;133:18:1;;16066:36:0::1;14:226:1::0;18821:165:0;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;18896:19:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;18896:30:0;;::::1;;::::0;;18942:36:::1;::::0;::::1;::::0;::::1;::::0;18918:8;2535:14:1;2528:22;2510:41;;2498:2;2483:18;;2370:187;18942:36:0::1;;;;;;;;18821:165:::0;:::o;18624:189::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;18722:11:::1;:42:::0;;-1:-1:-1;;;;;18722:42:0;;::::1;::::0;;;::::1;;::::0;;;18775:15;:30;;;;;::::1;::::0;::::1;;::::0;;18624:189::o;23922:482::-;24077:8;:15;24058:8;:15;:34;:72;;;;;24115:8;:15;24096:8;:15;:34;24058:72;24050:106;;;;-1:-1:-1;;;24050:106:0;;14815:2:1;24050:106:0;;;14797:21:1;14854:2;14834:18;;;14827:30;14893:23;14873:18;;;14866:51;14934:18;;24050:106:0;14613:345:1;24050:106:0;24172:7;24167:230;24189:8;:15;24185:1;:19;;;24167:230;;;24285:8;24294:1;24285:11;;;;;;;;;;:::i;:::-;;;;;;;24270:8;24279:1;24270:11;;;;;;;;;;:::i;:::-;;;;;;;24260:7;;:21;;;;:::i;:::-;24259:37;;;;:::i;:::-;24244:10;12732:7;12759:16;;;:7;:16;;;;;;24234:62;;24226:71;;;;;;24312:73;24322:10;24334:8;24343:1;24334:11;;;;;;;;;;:::i;:::-;;;;;;;24373:8;24382:1;24373:11;;;;;;;;;;:::i;:::-;;;;;;;24358:8;24367:1;24358:11;;;;;;;;;;:::i;:::-;;;;;;;24348:7;;:21;;;;:::i;:::-;24347:37;;;;:::i;24312:73::-;-1:-1:-1;24206:3:0;;;;:::i;:::-;;;;24167:230;;;;23922:482;;;:::o;14403:542::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;14474:20:::1;14507:9;14474:43;;14528:16;14558:10;-1:-1:-1::0;;;;;14558:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14547:40:0::1;;14596:4;14603:10;-1:-1:-1::0;;;;;14603:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14547:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;10709:15:1;;;14547:74:0::1;::::0;::::1;10691:34:1::0;10761:15;;10741:18;;;10734:43;10603:18;;14547:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14528:93:::0;-1:-1:-1;;;;;;14636:22:0;::::1;14632:200;;14695:10;-1:-1:-1::0;;;;;14695:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14684:43:0::1;;14736:4;14743:10;-1:-1:-1::0;;;;;14743:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14684:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;10709:15:1;;;14684:77:0::1;::::0;::::1;10691:34:1::0;10761:15;;10741:18;;;10734:43;10603:18;;14684:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14675:6;:86:::0;;;::::1;-1:-1:-1::0;;;;;14675:86:0;;;::::1;::::0;;;::::1;::::0;;14632:200:::1;;;14803:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;14803:17:0;::::1;;::::0;;14632:200:::1;14842:9;:22:::0;;;::::1;-1:-1:-1::0;;;;;14842:22:0;::::1;::::0;;::::1;::::0;;;14875:62:::1;::::0;14892:4:::1;::::0;-1:-1:-1;;14875:8:0::1;:62::i;23350:183::-:0;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;23417:16:::1;::::0;::::1;::::0;::::1;;;23416:17;23408:58;;;::::0;-1:-1:-1;;;23408:58:0;;20864:2:1;23408:58:0::1;::::0;::::1;20846:21:1::0;20903:2;20883:18;;;20876:30;20942;20922:18;;;20915:58;20990:18;;23408:58:0::1;20662:352:1::0;23408:58:0::1;10893:7:::0;10920:6;;23477:48:::1;::::0;-1:-1:-1;;;;;10920:6:0;;;;23503:21:::1;23477:48:::0;::::1;;;::::0;23503:21;;23477:48;10893:7;23477:48;23503:21;10920:6;23477:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23350:183::o:0;18327:289::-;9082:6;;-1:-1:-1;;;;;9082:6:0;189:10;9082:22;9074:52;;;;-1:-1:-1;;;9074:52:0;;11380:2:1;9074:52:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:47;11495:18;;9074:52:0;11178:341:1;9074:52:0;18527:16:::1;18507;18497:7;;:26;;;;:::i;:::-;18496:47;;;;:::i;:::-;18480:13;:63:::0;18568:7:::1;::::0;18595:13;;18568:23:::1;::::0;18578:13;;18568:23:::1;:::i;:::-;18567:41;;;;:::i;:::-;18554:10;:54:::0;-1:-1:-1;;;;18327:289:0:o;16118:125::-;16203:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;16203:32:0;;;160:74:1;16179:4:0;;16203:9;;;;;:23;;133:18:1;;16203:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13135:309::-;-1:-1:-1;;;;;13229:20:0;;13221:52;;;;-1:-1:-1;;;13221:52:0;;21471:2:1;13221:52:0;;;21453:21:1;21510:2;21490:18;;;21483:30;21549:21;21529:18;;;21522:49;21588:18;;13221:52:0;21269:343:1;13221:52:0;-1:-1:-1;;;;;13292:21:0;;13284:53;;;;-1:-1:-1;;;13284:53:0;;21471:2:1;13284:53:0;;;21453:21:1;21510:2;21490:18;;;21483:30;21549:21;21529:18;;;21522:49;21588:18;;13284:53:0;21269:343:1;13284:53:0;-1:-1:-1;;;;;13350:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13403:33;;391:25:1;;;13403:33:0;;364:18:1;13403:33:0;;;;;;;13135:309;;;:::o;19362:1470::-;19441:4;-1:-1:-1;;;;;19466:18:0;;19458:68;;;;-1:-1:-1;;;19458:68:0;;21819:2:1;19458:68:0;;;21801:21:1;21858:2;21838:18;;;21831:30;21897:34;21877:18;;;21870:62;21968:7;21948:18;;;21941:35;21993:19;;19458:68:0;21617:401:1;19458:68:0;-1:-1:-1;;;;;19545:16:0;;19537:64;;;;-1:-1:-1;;;19537:64:0;;22225:2:1;19537:64:0;;;22207:21:1;22264:2;22244:18;;;22237:30;22303:34;22283:18;;;22276:62;22374:5;22354:18;;;22347:33;22397:19;;19537:64:0;22023:399:1;19537:64:0;19629:1;19620:6;:10;19612:64;;;;-1:-1:-1;;;19612:64:0;;22629:2:1;19612:64:0;;;22611:21:1;22668:2;22648:18;;;22641:30;22707:34;22687:18;;;22680:62;22778:11;22758:18;;;22751:39;22807:19;;19612:64:0;22427:405:1;19612:64:0;19690:20;19701:4;19707:2;19690:10;:20::i;:::-;19687:480;;;19731:14;;;;19727:89;;19766:34;;-1:-1:-1;;;19766:34:0;;23039:2:1;19766:34:0;;;23021:21:1;23078:2;23058:18;;;23051:30;23117:26;23097:18;;;23090:54;23161:18;;19766:34:0;22837:348:1;19727:89:0;-1:-1:-1;;;;;19833:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;19850:11:0;;;;;;:7;:11;;;;;;;;19833:28;19830:142;;;19899:12;;19889:6;:22;;19881:75;;;;-1:-1:-1;;;19881:75:0;;23392:2:1;19881:75:0;;;23374:21:1;23431:2;23411:18;;;23404:30;23470:34;23450:18;;;23443:62;23541:10;23521:18;;;23514:38;23569:19;;19881:75:0;23190:404:1;19881:75:0;19995:13;;-1:-1:-1;;;;;19989:19:0;;;19995:13;;19989:19;;;;:35;;-1:-1:-1;;;;;;20013:11:0;;;;;;:7;:11;;;;;;;;20012:12;19989:35;19986:170;;;20079:14;;20069:6;20053:13;20063:2;-1:-1:-1;;;;;12759:16:0;12732:7;12759:16;;;:7;:16;;;;;;;12666:117;20053:13;:22;;;;:::i;:::-;:40;;20045:95;;;;-1:-1:-1;;;20045:95:0;;23801:2:1;20045:95:0;;;23783:21:1;23840:2;23820:18;;;23813:30;23879:34;23859:18;;;23852:62;23950:12;23930:18;;;23923:40;23980:19;;20045:95:0;23599:406:1;20045:95:0;-1:-1:-1;;;;;20212:25:0;;20179:12;20212:25;;;:19;:25;;;;;;20194:4;;20212:25;;;:52;;-1:-1:-1;;;;;;20241:23:0;;;;;;:19;:23;;;;;;;;20212:52;20209:98;;;-1:-1:-1;20290:5:0;20209:98;-1:-1:-1;;;;;20323:11:0;;;;;;:7;:11;;;;;;;;20319:443;;;20356:6;;;;20355:7;:47;;;;-1:-1:-1;20383:19:0;;;;;;;20355:47;20351:394;;;20486:4;20437:28;12759:16;;;:7;:16;;;;;;20539:13;;20515:37;;20511:219;;20604:10;;20580:20;:34;20577:77;;-1:-1:-1;20641:10:0;;20577:77;20676:34;20689:20;20676:12;:34::i;:::-;20418:327;20351:394;20780:44;20798:4;20804:2;20808:6;20816:7;20780:17;:44::i;:::-;20773:51;19362:1470;-1:-1:-1;;;;;19362:1470:0:o;18994:360::-;19062:4;10920:6;;-1:-1:-1;;;;;19086:15:0;;;10920:6;;19086:15;;;;:45;;-1:-1:-1;10893:7:0;10920:6;-1:-1:-1;;;;;19118:13:0;;;10920:6;;19118:13;;19086:45;:82;;;;-1:-1:-1;10893:7:0;10920:6;-1:-1:-1;;;;;10920:6:0;19148:9;:20;;19086:82;:121;;;;-1:-1:-1;;;;;;19186:21:0;;;;;;:17;:21;;;;;;;;19185:22;19086:121;:162;;;;-1:-1:-1;;;;;;19225:23:0;;;;;;:17;:23;;;;;;;;19224:24;19086:162;:189;;;;-1:-1:-1;;;;;;19265:10:0;;7885:42;19265:10;;19086:189;:222;;;;-1:-1:-1;;;;;;19292:16:0;;;;19086:222;:260;;;;-1:-1:-1;;;;;;19325:21:0;;19341:4;19325:21;;19086:260;19079:267;18994:360;-1:-1:-1;;;18994:360:0:o;20840:1549::-;8976:6;:13;;-1:-1:-1;;8976:13:0;8985:4;8976:13;;;20927:7:::1;:13:::0;::::1;::::0;;;::::1;;20923:44;;20960:7;;20923:44;21002:4;20982:26;::::0;;;:11:::1;:26;::::0;;;;;;;21017:9:::1;::::0;-1:-1:-1;;;;;21017:9:0::1;20982:46:::0;;;;;;;;-1:-1:-1;;20982:67:0::1;20979:165;;21086:4;21066:26;::::0;;;:11:::1;:26;::::0;;;;;;;21101:9:::1;::::0;-1:-1:-1;;;;;21101:9:0::1;21066:46:::0;;;;;;;-1:-1:-1;;21066:66:0;;20979:165:::1;21222:7;:13:::0;21156:17:::1;::::0;21239:1:::1;::::0;21222:13:::1;::::0;;::::1;::::0;::::1;::::0;21178:40:::1;::::0;21201:17:::1;21178:20:::0;:40:::1;:::i;:::-;21177:58;;;;:::i;:::-;21176:64;;;;:::i;:::-;21156:84:::0;-1:-1:-1;21253:20:0::1;21276:32;21156:84:::0;21276:20;:32:::1;:::i;:::-;21353:16;::::0;;21367:1:::1;21353:16:::0;;;;;::::1;::::0;;21253:55;;-1:-1:-1;21329:21:0::1;::::0;21353:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21353:16:0::1;21329:40;;21398:4;21380;21385:1;21380:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21380:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;21424:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;21380:7;;21424:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21414:4;21419:1;21414:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21414:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21453:9:::1;::::0;:191:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:191:::1;::::0;21528:12;;21453:9:::1;::::0;21571:4;;21598::::1;::::0;21618:15:::1;::::0;21453:191:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;21731:7:0::1;:13:::0;21657:24:::1;::::0;-1:-1:-1;21748:1:0::1;::::0;-1:-1:-1;21731:13:0::1;::::0;;::::1;::::0;::::1;::::0;21686:41:::1;::::0;21710:17:::1;21686:21;:41;:::i;:::-;21685:59;;;;:::i;:::-;21684:65;;;;:::i;:::-;21657:92:::0;-1:-1:-1;21766:13:0;;21762:342:::1;;21796:9;::::0;:222:::1;::::0;;;;21873:4:::1;21796:222;::::0;::::1;25405:34:1::0;25455:18;;;25448:34;;;21796:9:0::1;25498:18:1::0;;;25491:34;;;25541:18;;;25534:34;7885:42:0::1;25584:19:1::0;;;25577:44;21988:15:0::1;25637:19:1::0;;;25630:35;-1:-1:-1;;;;;21796:9:0;;::::1;::::0;:25:::1;::::0;21829:16;;25316:19:1;;21796:222:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;22038:54:0::1;::::0;;26189:25:1;;;26245:2;26230:18;;26223:34;;;26273:18;;;26266:34;;;22038:54:0::1;::::0;-1:-1:-1;26177:2:1;26162:18;22038:54:0::1;;;;;;;21762:342;22142:1;22118:21;:25;:66;;;;-1:-1:-1::0;22163:7:0::1;:17:::0;22183:1:::1;::::0;22147:33:::1;::::0;22163:17:::1;::::0;;::::1;::::0;22147:13;;::::1;;:33;:::i;:::-;:37;;;22118:66;22114:268;;;22201:15:::0;;22283:7:::1;:17:::0;-1:-1:-1;;;;;22201:15:0;;::::1;::::0;:101:::1;::::0;22267:33:::1;::::0;22283:17:::1;::::0;;::::1;::::0;22267:13;;::::1;;:33;:::i;:::-;22251:7;:11:::0;22226:75:::1;::::0;;::::1;::::0;22227:35:::1;::::0;22251:11;;::::1;;22227:21;:35;:::i;:::-;22226:75;;;;:::i;:::-;22201:101;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;22317:11:0::1;:21:::0;:53:::1;::::0;-1:-1:-1;;;;;22317:21:0;;::::1;::::0;22348::::1;22317:53:::0;::::1;;;::::0;:21:::1;:53:::0;:21;:53;22348:21;22317;:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22114:268;20912:1477;;;;9000:1;-1:-1:-1::0;9012:6:0;:14;;-1:-1:-1;;9012:14:0;;;20840:1549::o;24412:930::-;24534:16;;24512:4;;24534:16;;;;;24529:221;;24567:28;24586:4;24592:2;24567:18;:28::i;:::-;24615:16;;;;;;;24614:17;:41;;;;;24635:20;24646:4;24652:2;24635:10;:20::i;:::-;24610:129;;;24676:47;;-1:-1:-1;;;24676:47:0;;26735:2:1;24676:47:0;;;26717:21:1;26774:2;26754:18;;;26747:30;26813:34;26793:18;;;26786:62;26884:7;26864:18;;;26857:35;26909:19;;24676:47:0;26533:401:1;24610:129:0;24766:20;24777:4;24783:2;24766:10;:20::i;:::-;24762:314;;;24834:9;;:37;;;;;-1:-1:-1;;;;;27220:15:1;;;24834:37:0;;;27202:34:1;27272:15;;;27252:18;;;27245:43;27304:18;;;27297:34;;;24803:12:0;;24834:9;;;;;:19;;27114:18:1;;24834:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;24834:37:0;;;;;;;;-1:-1:-1;;24834:37:0;;;;;;;;;;;;:::i;:::-;;;24830:163;;24969:8;;;24830:163;24922:5;-1:-1:-1;25013:7:0;25009:56;;25041:8;;;25009:56;24788:288;24762:314;-1:-1:-1;;;;;25088:13:0;;;;;;:7;:13;;;;;:23;;25105:6;;25088:13;:23;;25105:6;;25088:23;:::i;:::-;;;;-1:-1:-1;25122:22:0;;-1:-1:-1;25173:7:0;25172:48;;25214:6;25172:48;;;25184:27;25194:4;25200:2;25204:6;25184:9;:27::i;:::-;-1:-1:-1;;;;;25231:11:0;;;;;;:7;:11;;;;;:29;;25155:65;;-1:-1:-1;25155:65:0;;25231:11;;;:29;;25155:65;;25231:29;:::i;:::-;;;;;;;;25293:2;-1:-1:-1;;;;;25278:34:0;25287:4;-1:-1:-1;;;;;25278:34:0;;25297:14;25278:34;;;;391:25:1;;379:2;364:18;;245:177;25278:34:0;;;;;;;;-1:-1:-1;25330:4:0;;24412:930;-1:-1:-1;;;;;24412:930:0:o;22397:508::-;22479:16;;;;;;;22478:17;22470:65;;;;-1:-1:-1;;;22470:65:0;;27544:2:1;22470:65:0;;;27526:21:1;27583:2;27563:18;;;27556:30;27622:34;27602:18;;;27595:62;27693:5;27673:18;;;27666:33;27716:19;;22470:65:0;27342:399:1;22470:65:0;22551:20;22562:4;22568:2;22551:10;:20::i;:::-;22550:21;:37;;;;-1:-1:-1;22581:6:0;;-1:-1:-1;;;;;22575:12:0;;;22581:6;;22575:12;22550:37;22546:352;;;-1:-1:-1;;;;;22604:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;22604:30:0;22630:4;22604:30;;;22649:16;:23;;-1:-1:-1;;22649:23:0;22604:30;22649:23;;;;;22698:9;;;;22687:107;;22742:9;:36;;;;22772:4;22742:36;;;;;22687:107;22808:19;:26;;-1:-1:-1;;22808:26:0;;;;;22854:32;;-1:-1:-1;2510:41:1;;22854:32:0;;2498:2:1;2483:18;22854:32:0;;;;;;;22397:508;;:::o;25350:581::-;-1:-1:-1;;;;;25482:13:0;;25429:7;25482:13;;;:7;:13;;;;;;25429:7;;25482:13;;25478:222;;;-1:-1:-1;25525:9:0;:16;;;25478:222;;;-1:-1:-1;;;;;25563:11:0;;;;;;:7;:11;;;;;;;;25559:141;;;-1:-1:-1;25604:9:0;:17;;;;;;25559:141;;;-1:-1:-1;25667:9:0;:21;;;;;;25559:141;25754:10;:27;25712:17;;25754:27;;;;;25732:19;25741:10;25732:6;:19;:::i;:::-;:49;;;;:::i;:::-;25810:4;25794:22;;;;:7;:22;;;;;:35;;25712:69;;-1:-1:-1;25712:69:0;;25794:22;;;:35;;25712:69;;25794:35;:::i;:::-;;;;-1:-1:-1;;25845:40:0;;391:25:1;;;25868:4:0;;-1:-1:-1;;;;;25845:40:0;;;;;379:2:1;364:18;25845:40:0;;;;;;;25905:18;25914:9;25905:6;:18;:::i;:::-;25898:25;25350:581;-1:-1:-1;;;;;;25350:581:0:o;797:656:1:-;909:4;938:2;967;956:9;949:21;999:6;993:13;1042:6;1037:2;1026:9;1022:18;1015:34;1067:1;1077:140;1091:6;1088:1;1085:13;1077:140;;;1186:14;;;1182:23;;1176:30;1152:17;;;1171:2;1148:26;1141:66;1106:10;;1077:140;;;1235:6;1232:1;1229:13;1226:91;;;1305:1;1300:2;1291:6;1280:9;1276:22;1272:31;1265:42;1226:91;-1:-1:-1;1369:2:1;1357:15;-1:-1:-1;;1353:88:1;1338:104;;;;1444:2;1334:113;;797:656;-1:-1:-1;;;797:656:1:o;1706:180::-;1765:6;1818:2;1806:9;1797:7;1793:23;1789:32;1786:52;;;1834:1;1831;1824:12;1786:52;-1:-1:-1;1857:23:1;;1706:180;-1:-1:-1;1706:180:1:o;1891:154::-;-1:-1:-1;;;;;1970:5:1;1966:54;1959:5;1956:65;1946:93;;2035:1;2032;2025:12;2050:315;2118:6;2126;2179:2;2167:9;2158:7;2154:23;2150:32;2147:52;;;2195:1;2192;2185:12;2147:52;2234:9;2221:23;2253:31;2278:5;2253:31;:::i;:::-;2303:5;2355:2;2340:18;;;;2327:32;;-1:-1:-1;;;2050:315:1:o;3011:456::-;3088:6;3096;3104;3157:2;3145:9;3136:7;3132:23;3128:32;3125:52;;;3173:1;3170;3163:12;3125:52;3212:9;3199:23;3231:31;3256:5;3231:31;:::i;:::-;3281:5;-1:-1:-1;3338:2:1;3323:18;;3310:32;3351:33;3310:32;3351:33;:::i;:::-;3011:456;;3403:7;;-1:-1:-1;;;3457:2:1;3442:18;;;;3429:32;;3011:456::o;3472:248::-;3540:6;3548;3601:2;3589:9;3580:7;3576:23;3572:32;3569:52;;;3617:1;3614;3607:12;3569:52;-1:-1:-1;;3640:23:1;;;3710:2;3695:18;;;3682:32;;-1:-1:-1;3472:248:1:o;3725:184::-;3777:77;3774:1;3767:88;3874:4;3871:1;3864:15;3898:4;3895:1;3888:15;3914:334;3985:2;3979:9;4041:2;4031:13;;-1:-1:-1;;4027:86:1;4015:99;;4144:18;4129:34;;4165:22;;;4126:62;4123:88;;;4191:18;;:::i;:::-;4227:2;4220:22;3914:334;;-1:-1:-1;3914:334:1:o;4253:183::-;4313:4;4346:18;4338:6;4335:30;4332:56;;;4368:18;;:::i;:::-;-1:-1:-1;4413:1:1;4409:14;4425:4;4405:25;;4253:183::o;4441:737::-;4495:5;4548:3;4541:4;4533:6;4529:17;4525:27;4515:55;;4566:1;4563;4556:12;4515:55;4602:6;4589:20;4628:4;4652:60;4668:43;4708:2;4668:43;:::i;:::-;4652:60;:::i;:::-;4746:15;;;4832:1;4828:10;;;;4816:23;;4812:32;;;4777:12;;;;4856:15;;;4853:35;;;4884:1;4881;4874:12;4853:35;4920:2;4912:6;4908:15;4932:217;4948:6;4943:3;4940:15;4932:217;;;5028:3;5015:17;5045:31;5070:5;5045:31;:::i;:::-;5089:18;;5127:12;;;;4965;;4932:217;;;-1:-1:-1;5167:5:1;4441:737;-1:-1:-1;;;;;;4441:737:1:o;5183:662::-;5237:5;5290:3;5283:4;5275:6;5271:17;5267:27;5257:55;;5308:1;5305;5298:12;5257:55;5344:6;5331:20;5370:4;5394:60;5410:43;5450:2;5410:43;:::i;5394:60::-;5488:15;;;5574:1;5570:10;;;;5558:23;;5554:32;;;5519:12;;;;5598:15;;;5595:35;;;5626:1;5623;5616:12;5595:35;5662:2;5654:6;5650:15;5674:142;5690:6;5685:3;5682:15;5674:142;;;5756:17;;5744:30;;5794:12;;;;5707;;5674:142;;5850:595;5968:6;5976;6029:2;6017:9;6008:7;6004:23;6000:32;5997:52;;;6045:1;6042;6035:12;5997:52;6085:9;6072:23;6114:18;6155:2;6147:6;6144:14;6141:34;;;6171:1;6168;6161:12;6141:34;6194:61;6247:7;6238:6;6227:9;6223:22;6194:61;:::i;:::-;6184:71;;6308:2;6297:9;6293:18;6280:32;6264:48;;6337:2;6327:8;6324:16;6321:36;;;6353:1;6350;6343:12;6321:36;;6376:63;6431:7;6420:8;6409:9;6405:24;6376:63;:::i;:::-;6366:73;;;5850:595;;;;;:::o;6450:118::-;6536:5;6529:13;6522:21;6515:5;6512:32;6502:60;;6558:1;6555;6548:12;6573:647;6647:6;6655;6663;6671;6724:3;6712:9;6703:7;6699:23;6695:33;6692:53;;;6741:1;6738;6731:12;6692:53;6780:9;6767:23;6799:28;6821:5;6799:28;:::i;:::-;6846:5;-1:-1:-1;6903:2:1;6888:18;;6875:32;6916:30;6875:32;6916:30;:::i;:::-;6965:7;-1:-1:-1;7024:2:1;7009:18;;6996:32;7037:30;6996:32;7037:30;:::i;:::-;7086:7;-1:-1:-1;7145:2:1;7130:18;;7117:32;7158:30;7117:32;7158:30;:::i;:::-;6573:647;;;;-1:-1:-1;6573:647:1;;-1:-1:-1;;6573:647:1:o;7414:159::-;7481:20;;7541:6;7530:18;;7520:29;;7510:57;;7563:1;7560;7553:12;7510:57;7414:159;;;:::o;7578:328::-;7652:6;7660;7668;7721:2;7709:9;7700:7;7696:23;7692:32;7689:52;;;7737:1;7734;7727:12;7689:52;7760:28;7778:9;7760:28;:::i;:::-;7750:38;;7807:37;7840:2;7829:9;7825:18;7807:37;:::i;:::-;7797:47;;7863:37;7896:2;7885:9;7881:18;7863:37;:::i;:::-;7853:47;;7578:328;;;;;:::o;7911:247::-;7970:6;8023:2;8011:9;8002:7;7998:23;7994:32;7991:52;;;8039:1;8036;8029:12;7991:52;8078:9;8065:23;8097:31;8122:5;8097:31;:::i;8163:382::-;8228:6;8236;8289:2;8277:9;8268:7;8264:23;8260:32;8257:52;;;8305:1;8302;8295:12;8257:52;8344:9;8331:23;8363:31;8388:5;8363:31;:::i;:::-;8413:5;-1:-1:-1;8470:2:1;8455:18;;8442:32;8483:30;8442:32;8483:30;:::i;:::-;8532:7;8522:17;;;8163:382;;;;;:::o;8550:241::-;8606:6;8659:2;8647:9;8638:7;8634:23;8630:32;8627:52;;;8675:1;8672;8665:12;8627:52;8714:9;8701:23;8733:28;8755:5;8733:28;:::i;8796:404::-;8880:6;8888;8941:2;8929:9;8920:7;8916:23;8912:32;8909:52;;;8957:1;8954;8947:12;8909:52;8996:9;8983:23;9015:31;9040:5;9015:31;:::i;:::-;9065:5;-1:-1:-1;9122:2:1;9107:18;;9094:32;9135:33;9094:32;9135:33;:::i;9598:821::-;9750:6;9758;9766;9819:2;9807:9;9798:7;9794:23;9790:32;9787:52;;;9835:1;9832;9825:12;9787:52;9875:9;9862:23;9904:18;9945:2;9937:6;9934:14;9931:34;;;9961:1;9958;9951:12;9931:34;9984:61;10037:7;10028:6;10017:9;10013:22;9984:61;:::i;:::-;9974:71;;10098:2;10087:9;10083:18;10070:32;10054:48;;10127:2;10117:8;10114:16;10111:36;;;10143:1;10140;10133:12;10111:36;10166:63;10221:7;10210:8;10199:9;10195:24;10166:63;:::i;:::-;10156:73;;10282:2;10271:9;10267:18;10254:32;10238:48;;10311:2;10301:8;10298:16;10295:36;;;10327:1;10324;10317:12;10295:36;;10350:63;10405:7;10394:8;10383:9;10379:24;10350:63;:::i;:::-;10340:73;;;9598:821;;;;;:::o;10788:385::-;10874:6;10882;10890;10898;10951:3;10939:9;10930:7;10926:23;10922:33;10919:53;;;10968:1;10965;10958:12;10919:53;-1:-1:-1;;10991:23:1;;;11061:2;11046:18;;11033:32;;-1:-1:-1;11112:2:1;11097:18;;11084:32;;11163:2;11148:18;11135:32;;-1:-1:-1;10788:385:1;-1:-1:-1;10788:385:1:o;11860:184::-;11912:77;11909:1;11902:88;12009:4;12006:1;11999:15;12033:4;12030:1;12023:15;12049:482;12138:1;12181:5;12138:1;12195:330;12216:7;12206:8;12203:21;12195:330;;;12335:4;-1:-1:-1;;12263:77:1;12257:4;12254:87;12251:113;;;12344:18;;:::i;:::-;12394:7;12384:8;12380:22;12377:55;;;12414:16;;;;12377:55;12493:22;;;;12453:15;;;;12195:330;;;12199:3;12049:482;;;;;:::o;12536:866::-;12585:5;12615:8;12605:80;;-1:-1:-1;12656:1:1;12670:5;;12605:80;12704:4;12694:76;;-1:-1:-1;12741:1:1;12755:5;;12694:76;12786:4;12804:1;12799:59;;;;12872:1;12867:130;;;;12779:218;;12799:59;12829:1;12820:10;;12843:5;;;12867:130;12904:3;12894:8;12891:17;12888:43;;;12911:18;;:::i;:::-;-1:-1:-1;;12967:1:1;12953:16;;12982:5;;12779:218;;13081:2;13071:8;13068:16;13062:3;13056:4;13053:13;13049:36;13043:2;13033:8;13030:16;13025:2;13019:4;13016:12;13012:35;13009:77;13006:159;;;-1:-1:-1;13118:19:1;;;13150:5;;13006:159;13197:34;13222:8;13216:4;13197:34;:::i;:::-;13327:6;-1:-1:-1;;13255:79:1;13246:7;13243:92;13240:118;;;13338:18;;:::i;:::-;13376:20;;12536:866;-1:-1:-1;;;12536:866:1:o;13407:140::-;13465:5;13494:47;13535:4;13525:8;13521:19;13515:4;13494:47;:::i;13552:274::-;13592:1;13618;13608:189;;13653:77;13650:1;13643:88;13754:4;13751:1;13744:15;13782:4;13779:1;13772:15;13608:189;-1:-1:-1;13811:9:1;;13552:274::o;13831:125::-;13871:4;13899:1;13896;13893:8;13890:34;;;13904:18;;:::i;:::-;-1:-1:-1;13941:9:1;;13831:125::o;13961:228::-;14001:7;14127:1;-1:-1:-1;;14055:74:1;14052:1;14049:81;14044:1;14037:9;14030:17;14026:105;14023:131;;;14134:18;;:::i;:::-;-1:-1:-1;14174:9:1;;13961:228::o;14963:184::-;15015:77;15012:1;15005:88;15112:4;15109:1;15102:15;15136:4;15133:1;15126:15;15152:175;15189:3;15233:4;15226:5;15222:16;15262:4;15253:7;15250:17;15247:43;;;15270:18;;:::i;:::-;15319:1;15306:15;;15152:175;-1:-1:-1;;15152:175:1:o;16120:128::-;16160:3;16191:1;16187:6;16184:1;16181:13;16178:39;;;16197:18;;:::i;:::-;-1:-1:-1;16233:9:1;;16120:128::o;17107:184::-;17177:6;17230:2;17218:9;17209:7;17205:23;17201:32;17198:52;;;17246:1;17243;17236:12;17198:52;-1:-1:-1;17269:16:1;;17107:184;-1:-1:-1;17107:184:1:o;19845:224::-;19884:3;19912:6;19945:2;19942:1;19938:10;19975:2;19972:1;19968:10;20006:3;20002:2;19998:12;19993:3;19990:21;19987:47;;;20014:18;;:::i;:::-;20050:13;;19845:224;-1:-1:-1;;;;19845:224:1:o;20074:251::-;20144:6;20197:2;20185:9;20176:7;20172:23;20168:32;20165:52;;;20213:1;20210;20203:12;20165:52;20245:9;20239:16;20264:31;20289:5;20264:31;:::i;21019:245::-;21086:6;21139:2;21127:9;21118:7;21114:23;21110:32;21107:52;;;21155:1;21152;21145:12;21107:52;21187:9;21181:16;21206:28;21228:5;21206:28;:::i;24010:1026::-;24272:4;24320:3;24309:9;24305:19;24351:6;24340:9;24333:25;24377:2;24415:6;24410:2;24399:9;24395:18;24388:34;24458:3;24453:2;24442:9;24438:18;24431:31;24482:6;24517;24511:13;24548:6;24540;24533:22;24586:3;24575:9;24571:19;24564:26;;24625:2;24617:6;24613:15;24599:29;;24646:1;24656:218;24670:6;24667:1;24664:13;24656:218;;;24735:13;;-1:-1:-1;;;;;24731:62:1;24719:75;;24849:15;;;;24814:12;;;;24692:1;24685:9;24656:218;;;-1:-1:-1;;;;;;;24930:55:1;;;;24925:2;24910:18;;24903:83;-1:-1:-1;;;25017:3:1;25002:19;24995:35;24891:3;24010:1026;-1:-1:-1;;;24010:1026:1:o;25676:306::-;25764:6;25772;25780;25833:2;25821:9;25812:7;25808:23;25804:32;25801:52;;;25849:1;25846;25839:12;25801:52;25878:9;25872:16;25862:26;;25928:2;25917:9;25913:18;25907:25;25897:35;;25972:2;25961:9;25957:18;25951:25;25941:35;;25676:306;;;;;:::o;26311:217::-;26350:4;26379:6;26435:10;;;;26405;;26457:12;;;26454:38;;;26472:18;;:::i;:::-;26509:13;;26311:217;-1:-1:-1;;;26311:217:1:o

Swarm Source

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