ETH Price: $2,822.35 (+7.60%)
 

Overview

Max Total Supply

10,000,000,000,000 FAI

Holders

57

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
170,000,000,000 FAI

Value
$0.00
0xedc349ffd9d8f752fe9ad1bd3bf3fc47046f52d4
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:
FAITH

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

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

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

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

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

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

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

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

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

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;

    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 10_000_000_000_000;
    string constant private _name = "FAITH TOKEN";
    string constant private _symbol = "FAI";
    uint8 constant private _decimals = 9;

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

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

    struct Ratios {
        uint16 liquidity;
        uint16 marketing;
        uint16 buyback;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        liquidity: 1600,
        marketing: 2100,
        buyback: 1300,
        totalSwap: 1600 + 2100 + 1300
        });

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

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

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

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0xB9625294aC54Ac7F7661965700D85c1f4b965504),
        buyback: payable(0xf6Ec18a039e9e4C6728a2506A28ce89ED00de7dd)
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public contractSwapTimer = 0 seconds;
    uint256 private lastSwap;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    
    uint256 private _maxTxAmount = (_tTotal * 5) / 1000;
    uint256 private _maxWalletSize = (_tTotal * 2) / 100;

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

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

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

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

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

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

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

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

    receive() external payable {}

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

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        amtBalance -= liquidityBalance;
        ratios.totalSwap -= ratios.liquidity;
        uint256 buybackBalance = (amtBalance * ratios.buyback) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - buybackBalance;
        if (ratios.marketing > 0) {
            _taxWallets.marketing.transfer(marketingBalance);
        }
        if (ratios.buyback > 0) {
            _taxWallets.buyback.transfer(buybackBalance);
        }
    }

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

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

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

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

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

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

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

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

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

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

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;

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

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

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

60006003819055600a8054600160ff199091161781556105dc6080819052610bb860a05260c052600b805465ffffffffffff19166505dc0bb805dc17905561064060e052610834610100526105146101205261138861014052600c80546001600160401b0319166713880514083406401790556101a060405273b9625294ac54ac7f7661965700d85c1f4b96550461016081905273f6ec18a039e9e4c6728a2506a28ce89ed00de7dd610180819052600f80546001600160a01b03199081169093179055601080549092161790556011805461ff00191690556012919091556103e890620000f0906009906200079f565b62000102906509184e72a000620007b7565b6200010f906005620007b7565b6200011b9190620007d9565b60165560646200012e6009600a6200079f565b62000140906509184e72a000620007b7565b6200014d906002620007b7565b620001599190620007d9565b6017556018805461ffff19169055620001756009600a6200079f565b62000187906509184e72a000620007b7565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001ca6009600a6200079f565b620001dc906509184e72a000620007b7565b60405190815260200160405180910390a3600080546001600160a01b03191633179055466038036200023457600d80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e17905562000327565b466061036200026957600d80546001600160a01b03191673d99d1c33f9fc3444f8101754abc46c52416550d117905562000327565b4660011480620002795750466004145b80620002855750466003145b15620002b757600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905562000327565b4661a86a03620002ed57600d80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d417905562000327565b4660fa036200032257600d80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c2917905562000327565b600080fd5b600d60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200037b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a19190620007fc565b6001600160a01b031663c9c65396600d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000403573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004299190620007fc565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000476573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049c9190620007fc565b600e80546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260408120805460ff1916600117905554600d54620004eb92918216911660001962000589565b600d54620005079030906001600160a01b031660001962000589565b600080546001600160a01b0390811682526007602090815260408084208054600160ff19918216811790925530865282862080548216831790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548216831790558554909416855260059092529092208054909116909117905562000827565b6001600160a01b038316620005db5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620006295760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620005d2565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006e1578160001904821115620006c557620006c56200068a565b80851615620006d357918102915b93841c9390800290620006a5565b509250929050565b600082620006fa5750600162000799565b81620007095750600062000799565b81600181146200072257600281146200072d576200074d565b600191505062000799565b60ff8411156200074157620007416200068a565b50506001821b62000799565b5060208310610133831016604e8410600b841016171562000772575081810a62000799565b6200077e8383620006a0565b80600019048211156200079557620007956200068a565b0290505b92915050565b6000620007b060ff841683620006e9565b9392505050565b6000816000190483118215151615620007d457620007d46200068a565b500290565b600082620007f757634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200080f57600080fd5b81516001600160a01b0381168114620007b057600080fd5b61414780620008376000396000f3fe6080604052600436106103645760003560e01c806350a8e016116101c6578063b1b08f71116100f7578063eafb5a3c11610095578063f94aa1b41161006f578063f94aa1b414610aa9578063fdb78c0e14610af0578063fe575a8714610b0f578063feadde9c14610b2f57600080fd5b8063eafb5a3c14610a54578063ee5d9c2d14610a74578063eec2744e14610a8957600080fd5b8063cf847706116100d1578063cf8477061461096d578063d3f6a157146109d8578063dd62ed3e146109f8578063e4fcfd1814610a3e57600080fd5b8063b1b08f71146105e1578063b3d514fb146105e1578063cab5ebea1461094d57600080fd5b806380c581d1116101645780638a8c523c1161013e5780638a8c523c146108b257806395d89b41146108c7578063a9059cbb1461090d578063aa22b1721461092d57600080fd5b806380c581d11461085f578063893d20e81461087f5780638a63bd9b1461089d57600080fd5b80635cce86cd116101a05780635cce86cd146107c65780636ebd0078146107ff57806370a0823114610814578063715018a61461084a57600080fd5b806350a8e01614610767578063590ffdce146107865780635c24b074146107a657600080fd5b80632610eaca116102a057806334cd82601161023e578063452ed4f111610218578063452ed4f1146106d45780634ada218b146106f45780634fb2e45d1461070e5780634fbee1931461072e57600080fd5b806334cd82601461067457806336fddb04146106945780633f3cf56c146106b457600080fd5b80632e8fa8211161027a5780632e8fa821146105f7578063313ce5671461060d57806332cde6641461063457806333251a0b1461065457600080fd5b80632610eaca146105a157806329dd8798146105c15780632b28fc7a146105e157600080fd5b8063092316021161030d5780630fa604e4116102e75780630fa604e41461053757806318160ddd1461054c57806323b872dd14610561578063260039571461058157600080fd5b806309231602146104ae578063095ea7b3146104ce5780630dcbcf1c146104fe57600080fd5b8063069d955f1161033e578063069d955f146103e957806306fdde031461043f5780630758d9241461048e57600080fd5b806303fd2a45146103705780630445b667146103a357806305bbedb6146103c757600080fd5b3661036b57005b600080fd5b34801561037c57600080fd5b5061038661dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103af57600080fd5b506103b960145481565b60405190815260200161039a565b3480156103d357600080fd5b506103e76103e2366004613a32565b610b4f565b005b3480156103f557600080fd5b50600b5461041a9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161039a565b34801561044b57600080fd5b5060408051808201909152600b81527f464149544820544f4b454e00000000000000000000000000000000000000000060208201525b60405161039a9190613a84565b34801561049a57600080fd5b50600d54610386906001600160a01b031681565b3480156104ba57600080fd5b506103e76104c9366004613ad9565b610c28565b3480156104da57600080fd5b506104ee6104e9366004613af2565b610d47565b604051901515815260200161039a565b34801561050a57600080fd5b506104ee610519366004613b1e565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561054357600080fd5b506103b9610d5e565b34801561055857600080fd5b506103b9610d7e565b34801561056d57600080fd5b506104ee61057c366004613b3b565b610dc4565b34801561058d57600080fd5b506103e761059c366004613b7c565b610e3c565b3480156105ad57600080fd5b506103e76105bc366004613b9e565b610f91565b3480156105cd57600080fd5b506103e76105dc366004613c59565b611100565b3480156105ed57600080fd5b506103b96107d081565b34801561060357600080fd5b506103b960155481565b34801561061957600080fd5b506106226111e9565b60405160ff909116815260200161039a565b34801561064057600080fd5b506103e761064f366004613ccc565b611219565b34801561066057600080fd5b506103e761066f366004613b1e565b611354565b34801561068057600080fd5b506103e761068f366004613d0f565b6113f4565b3480156106a057600080fd5b506103e76106af366004613d4a565b6114b5565b3480156106c057600080fd5b506103e76106cf366004613b7c565b61152e565b3480156106e057600080fd5b50600e54610386906001600160a01b031681565b34801561070057600080fd5b506018546104ee9060ff1681565b34801561071a57600080fd5b506103e7610729366004613b1e565b611684565b34801561073a57600080fd5b506104ee610749366004613b1e565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561077357600080fd5b506018546104ee90610100900460ff1681565b34801561079257600080fd5b506103e76107a1366004613d4a565b6118ba565b3480156107b257600080fd5b506103e76107c1366004613b1e565b611933565b3480156107d257600080fd5b506104ee6107e1366004613b1e565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561080b57600080fd5b506103b9611a29565b34801561082057600080fd5b506103b961082f366004613b1e565b6001600160a01b031660009081526001602052604090205490565b34801561085657600080fd5b506103e7611a44565b34801561086b57600080fd5b506103e761087a366004613d4a565b611aff565b34801561088b57600080fd5b506000546001600160a01b0316610386565b3480156108a957600080fd5b506104ee611cae565b3480156108be57600080fd5b506103e7611d1d565b3480156108d357600080fd5b5060408051808201909152600381527f46414900000000000000000000000000000000000000000000000000000000006020820152610481565b34801561091957600080fd5b506104ee610928366004613af2565b611f83565b34801561093957600080fd5b506103e7610948366004613ccc565b611f9a565b34801561095957600080fd5b506103e7610968366004613d78565b61214c565b34801561097957600080fd5b50600c546109aa9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161039a565b3480156109e457600080fd5b506103e76109f3366004613d95565b6121ee565b348015610a0457600080fd5b506103b9610a13366004613d95565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a4a57600080fd5b506103b960125481565b348015610a6057600080fd5b506103e7610a6f366004613b1e565b612282565b348015610a8057600080fd5b506103e7612652565b348015610a9557600080fd5b506103e7610aa4366004613d4a565b612735565b348015610ab557600080fd5b50600f54601054610ad0916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161039a565b348015610afc57600080fd5b506011546104ee90610100900460ff1681565b348015610b1b57600080fd5b506104ee610b2a366004613b1e565b6127dd565b348015610b3b57600080fd5b506103e7610b4a366004613d4a565b61286b565b6000546001600160a01b03163314610ba25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6018546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610bf29085908590600401613e07565b600060405180830381600087803b158015610c0c57600080fd5b505af1158015610c20573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610c765760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b60c8811015610cc75760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610b99565b6018546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610d2c57600080fd5b505af1158015610d40573d6000803e3d6000fd5b5050505050565b6000610d543384846128e4565b5060015b92915050565b6000610d6c6009600a613f3e565b601754610d799190613f4d565b905090565b6000610d8c6009600a613f3e565b610d9c906509184e72a000613f88565b600003610da857600080fd5b610db46009600a613f3e565b610d79906509184e72a000613f88565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610e29576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610e23908490613fa7565b90915550505b610e348484846129f1565b949350505050565b6000546001600160a01b03163314610e8a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6064610e986009600a613f3e565b610ea8906509184e72a000613f88565b610eb29190613f4d565b8183610ec06009600a613f3e565b610ed0906509184e72a000613f88565b610eda9190613f88565b610ee49190613f4d565b1015610f585760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610b99565b8082610f666009600a613f3e565b610f76906509184e72a000613f88565b610f809190613f88565b610f8a9190613f4d565b6017555050565b6000546001600160a01b03163314610fdf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b80518251146110305760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b99565b60005b82518160ff1610156110fb57818160ff168151811061105457611054613fbe565b602002602001015161107b336001600160a01b031660009081526001602052604090205490565b101561108657600080fd5b6110e833848360ff168151811061109f5761109f613fbe565b60200260200101516009600a6110b59190613f3e565b858560ff16815181106110ca576110ca613fbe565b60200260200101516110dc9190613f88565b60008060006001612eef565b50806110f381613fed565b915050611033565b505050565b6000546001600160a01b0316331461114e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6018546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b1580156111cb57600080fd5b505af11580156111df573d6000803e3d6000fd5b5050505050505050565b60006111f76009600a613f3e565b611207906509184e72a000613f88565b60000361121357600080fd5b50600990565b6000546001600160a01b031633146112675760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6107d08361ffff161115801561128357506107d08261ffff1611155b801561129557506107d08161ffff1611155b6112e15760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b99565b600b805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146113a25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6018546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610d12565b6000546001600160a01b031633146114425760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b83856114506009600a613f3e565b611460906509184e72a000613f88565b61146a9190613f88565b6114749190613f4d565b60145581836114856009600a613f3e565b611495906509184e72a000613f88565b61149f9190613f88565b6114a99190613f4d565b60155560125550505050565b6000546001600160a01b031633146115035760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461157c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6103e861158b6009600a613f3e565b61159b906509184e72a000613f88565b6115a59190613f4d565b81836115b36009600a613f3e565b6115c3906509184e72a000613f88565b6115cd9190613f88565b6115d79190613f4d565b101561164b5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b99565b80826116596009600a613f3e565b611669906509184e72a000613f88565b6116739190613f88565b61167d9190613f4d565b6016555050565b6000546001600160a01b031633146116d25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6001600160a01b03811661174e5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b99565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b038216016117ec5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b99565b60008054611805916001600160a01b03909116906118ba565b6118108160016118ba565b600080546001600160a01b03168152600160205260409020541561185757600080546001600160a01b03168082526001602052604090912054611855919083906110dc565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146119085760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119815760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b60185460ff161561199157600080fd5b306001600160a01b038216036119e95760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b99565b601880546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611a376009600a613f3e565b601654610d799190613f4d565b6000546001600160a01b03163314611a925760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b60008054611aab916001600160a01b03909116906118ba565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314611b4d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b801515600003611bc9576001600160a01b03828116600081815260026020526040808220805460ff1916905560185490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610bf2565b60035415611c30576203f48060035442611be39190613fa7565b11611c305760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610b99565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560185491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610bf2565b5050565b600080546001600160a01b03163314611cfd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b600d54611d179030906001600160a01b03166000196128e4565b50600190565b6000546001600160a01b03163314611d6b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b60185460ff1615611dbe5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b99565b601854610100900460ff16611e155760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b99565b6018546201000090046001600160a01b0316611e5b57601880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601854600e546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611ee657600080fd5b505af1925050508015611ef7575060015b5060188054600160ff199182168117909255600a80549091169055600e546001600160a01b03166000908152602091909152604090205461271090611f3d90600a613f88565b611f479190613f4d565b601455600e546001600160a01b031660009081526001602052604090205461271090611f74906019613f88565b611f7e9190613f4d565b601555565b6000611f903384846129f1565b5060019392505050565b6000546001600160a01b03163314611fe85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b600c805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090941692881692909217929092171617905580612060838561400c565b61206a919061400c565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16660100000000000061ffff93841602179055600b546000916120bb916201000081048216911661400c565b600c5461ffff918216925066010000000000009004168110156121465760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610b99565b50505050565b6000546001600160a01b0316331461219a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b601180548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906121e390831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461223c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b600f80546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560108054929093169116179055565b6000546001600160a01b031633146122d05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123399190614032565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123aa9190614032565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561240d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124319190614032565b90506001600160a01b0381166125da57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561247f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a39190614032565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125149190614032565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259d9190614032565b600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905561260e565b600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556110fb9030906000196128e4565b6000546001600160a01b031633146126a05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b601854610100900460ff16156126f85760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b99565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612732573d6000803e3d6000fd5b50565b6000546001600160a01b031633146127835760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6018546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610bf2565b6018546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612847573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d58919061404f565b6000546001600160a01b031633146128b95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b03831661293a5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b99565b6001600160a01b0382166129905760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b99565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612a6f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b99565b6001600160a01b038316612aeb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610b99565b60008211612b615760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610b99565b6001600160a01b0384166000908152600260205260408120548190819060ff1615612b8f5760019250612bbd565b6001600160a01b03861660009081526002602052604090205460ff1615612bb95760019150612bbd565b5060015b612bc78787613183565b15612dcd5760185460ff16612c1e5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b99565b8280612c275750815b15612ceb576001600160a01b03871660009081526008602052604090205460ff16158015612c6e57506001600160a01b03861660009081526008602052604090205460ff16155b15612ceb57601654851115612ceb5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610b99565b600d546001600160a01b03878116911614801590612d07575081155b15612dcd576001600160a01b03861660009081526008602052604090205460ff16612dcd5760175485612d4f886001600160a01b031660009081526001602052604090205490565b612d59919061406c565b1115612dcd5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610b99565b6001600160a01b03871660009081526007602052604090205460019060ff1680612e0f57506001600160a01b03871660009081526007602052604090205460ff165b15612e18575060005b8215612ed45760115460ff16158015612e385750601154610100900460ff165b8015612e5d57506001600160a01b03871660009081526009602052604090205460ff16155b8015612e8257506001600160a01b03881660009081526009602052604090205460ff16155b15612ed45742601254601354612e98919061406c565b11612ed457306000908152600160205260409020546014548110612ed2576015548110612ec457506015545b612ecd81613258565b426013555b505b612ee388888884888888612eef565b98975050505050505050565b601854600090610100900460ff16612fef57612f0b88886136e2565b601854610100900460ff16158015612f285750612f288888613183565b8015612f4d57506001600160a01b03881660009081526006602052604090205460ff16155b8015612f7257506001600160a01b03871660009081526006602052604090205460ff16155b8015612f7c575081155b15612fef5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610b99565b612ff98888613183565b156130ac576018546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613095575060408051601f3d908101601f191682019092526130929181019061404f565b60015b61309e57600080fd5b9050806130aa57600080fd5b505b6001600160a01b038816600090815260016020526040812080548892906130d4908490613fa7565b9091555060009050856130e757866130f3565b6130f38986868a613840565b6001600160a01b03891660009081526001602052604081208054929350839290919061312090849061406c565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161316c91815260200190565b60405180910390a350600198975050505050505050565b600080546001600160a01b038481169116148015906131b057506000546001600160a01b03838116911614155b80156131c757506000546001600160a01b03163214155b80156131ec57506001600160a01b03821660009081526005602052604090205460ff16155b801561321157506001600160a01b03831660009081526005602052604090205460ff16155b801561322857506001600160a01b03821661dead14155b801561323c57506001600160a01b03821615155b801561325157506001600160a01b0383163014155b9392505050565b6011805460ff1916600117905560408051608081018252600c5461ffff808216835262010000820481166020840152640100000000820481169383019390935266010000000000009004909116606082018190526000036132b957506136d5565b306000908152600460209081526040808320600d546001600160a01b031684529091529020546000191461331257306000908152600460209081526040808320600d546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff16856133339190613f88565b61333d9190613f4d565b6133479190613f4d565b905060006133558285613fa7565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061338f5761338f613fbe565b6001600160a01b03928316602091820292909201810191909152600d54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613401573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134259190614032565b8160018151811061343857613438613fbe565b6001600160a01b039283166020918202929092010152600d546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613497908590600090869030904290600401614084565b600060405180830381600087803b1580156134b157600080fd5b505af11580156134c5573d6000803e3d6000fd5b50479250600091508490506134da8684613f88565b6134e49190613f4d565b905084156135d557600d546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015613573573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061359891906140c0565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6135df8183613fa7565b91508560000151866060018181516135f791906140ee565b61ffff90811690915260608801516040890151600093509082169161361d911685613f88565b6136279190613f4d565b905060006136358285613fa7565b602089015190915061ffff161561368257600f546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613680573d6000803e3d6000fd5b505b604088015161ffff16156136cc576010546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156136ca573d6000803e3d6000fd5b505b50505050505050505b506011805460ff19169055565b601854610100900460ff16156137605760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610b99565b61376a8282613183565b1580156137845750600e546001600160a01b038281169116145b15611caa576001600160a01b038083166000908152600560205260409020805460ff191660011790556018805461ff0019166101001790819055620100009004166137f957601880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6011805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b60008084156138565750600b5461ffff16613880565b831561386f5750600b5462010000900461ffff16613880565b50600b54640100000000900461ffff165b600061271061388f8386613f88565b6138999190613f4d565b306000908152600160205260408120805492935083929091906138bd90849061406c565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361390c8185613fa7565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561396f5761396f613917565b604052919050565b600067ffffffffffffffff82111561399157613991613917565b5060051b60200190565b6001600160a01b038116811461273257600080fd5b600082601f8301126139c157600080fd5b813560206139d66139d183613977565b613946565b82815260059290921b840181019181810190868411156139f557600080fd5b8286015b84811015613a19578035613a0c8161399b565b83529183019183016139f9565b509695505050505050565b801515811461273257600080fd5b60008060408385031215613a4557600080fd5b823567ffffffffffffffff811115613a5c57600080fd5b613a68858286016139b0565b9250506020830135613a7981613a24565b809150509250929050565b600060208083528351808285015260005b81811015613ab157858101830151858201604001528201613a95565b81811115613ac3576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215613aeb57600080fd5b5035919050565b60008060408385031215613b0557600080fd5b8235613b108161399b565b946020939093013593505050565b600060208284031215613b3057600080fd5b81356132518161399b565b600080600060608486031215613b5057600080fd5b8335613b5b8161399b565b92506020840135613b6b8161399b565b929592945050506040919091013590565b60008060408385031215613b8f57600080fd5b50508035926020909101359150565b60008060408385031215613bb157600080fd5b823567ffffffffffffffff80821115613bc957600080fd5b613bd5868387016139b0565b9350602091508185013581811115613bec57600080fd5b85019050601f81018613613bff57600080fd5b8035613c0d6139d182613977565b81815260059190911b82018301908381019088831115613c2c57600080fd5b928401925b82841015613c4a57833582529284019290840190613c31565b80955050505050509250929050565b60008060008060808587031215613c6f57600080fd5b8435613c7a81613a24565b93506020850135613c8a81613a24565b92506040850135613c9a81613a24565b91506060850135613caa81613a24565b939692955090935050565b803561ffff81168114613cc757600080fd5b919050565b600080600060608486031215613ce157600080fd5b613cea84613cb5565b9250613cf860208501613cb5565b9150613d0660408501613cb5565b90509250925092565b600080600080600060a08688031215613d2757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215613d5d57600080fd5b8235613d688161399b565b91506020830135613a7981613a24565b600060208284031215613d8a57600080fd5b813561325181613a24565b60008060408385031215613da857600080fd5b8235613db38161399b565b91506020830135613a798161399b565b600081518084526020808501945080840160005b83811015613dfc5781516001600160a01b031687529582019590820190600101613dd7565b509495945050505050565b604081526000613e1a6040830185613dc3565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613e95578160001904821115613e7b57613e7b613e2b565b80851615613e8857918102915b93841c9390800290613e5f565b509250929050565b600082613eac57506001610d58565b81613eb957506000610d58565b8160018114613ecf5760028114613ed957613ef5565b6001915050610d58565b60ff841115613eea57613eea613e2b565b50506001821b610d58565b5060208310610133831016604e8410600b8410161715613f18575081810a610d58565b613f228383613e5a565b8060001904821115613f3657613f36613e2b565b029392505050565b600061325160ff841683613e9d565b600082613f83577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000816000190483118215151615613fa257613fa2613e2b565b500290565b600082821015613fb957613fb9613e2b565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff810361400357614003613e2b565b60010192915050565b600061ffff80831681851680830382111561402957614029613e2b565b01949350505050565b60006020828403121561404457600080fd5b81516132518161399b565b60006020828403121561406157600080fd5b815161325181613a24565b6000821982111561407f5761407f613e2b565b500190565b85815284602082015260a0604082015260006140a360a0830186613dc3565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156140d557600080fd5b8351925060208401519150604084015190509250925092565b600061ffff8381169083168181101561410957614109613e2b565b03939250505056fea264697066735822122048a0863d8044ce5e31c62386c9f45d821f187faf04ec36fc72367ca8d553110564736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106103645760003560e01c806350a8e016116101c6578063b1b08f71116100f7578063eafb5a3c11610095578063f94aa1b41161006f578063f94aa1b414610aa9578063fdb78c0e14610af0578063fe575a8714610b0f578063feadde9c14610b2f57600080fd5b8063eafb5a3c14610a54578063ee5d9c2d14610a74578063eec2744e14610a8957600080fd5b8063cf847706116100d1578063cf8477061461096d578063d3f6a157146109d8578063dd62ed3e146109f8578063e4fcfd1814610a3e57600080fd5b8063b1b08f71146105e1578063b3d514fb146105e1578063cab5ebea1461094d57600080fd5b806380c581d1116101645780638a8c523c1161013e5780638a8c523c146108b257806395d89b41146108c7578063a9059cbb1461090d578063aa22b1721461092d57600080fd5b806380c581d11461085f578063893d20e81461087f5780638a63bd9b1461089d57600080fd5b80635cce86cd116101a05780635cce86cd146107c65780636ebd0078146107ff57806370a0823114610814578063715018a61461084a57600080fd5b806350a8e01614610767578063590ffdce146107865780635c24b074146107a657600080fd5b80632610eaca116102a057806334cd82601161023e578063452ed4f111610218578063452ed4f1146106d45780634ada218b146106f45780634fb2e45d1461070e5780634fbee1931461072e57600080fd5b806334cd82601461067457806336fddb04146106945780633f3cf56c146106b457600080fd5b80632e8fa8211161027a5780632e8fa821146105f7578063313ce5671461060d57806332cde6641461063457806333251a0b1461065457600080fd5b80632610eaca146105a157806329dd8798146105c15780632b28fc7a146105e157600080fd5b8063092316021161030d5780630fa604e4116102e75780630fa604e41461053757806318160ddd1461054c57806323b872dd14610561578063260039571461058157600080fd5b806309231602146104ae578063095ea7b3146104ce5780630dcbcf1c146104fe57600080fd5b8063069d955f1161033e578063069d955f146103e957806306fdde031461043f5780630758d9241461048e57600080fd5b806303fd2a45146103705780630445b667146103a357806305bbedb6146103c757600080fd5b3661036b57005b600080fd5b34801561037c57600080fd5b5061038661dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103af57600080fd5b506103b960145481565b60405190815260200161039a565b3480156103d357600080fd5b506103e76103e2366004613a32565b610b4f565b005b3480156103f557600080fd5b50600b5461041a9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161039a565b34801561044b57600080fd5b5060408051808201909152600b81527f464149544820544f4b454e00000000000000000000000000000000000000000060208201525b60405161039a9190613a84565b34801561049a57600080fd5b50600d54610386906001600160a01b031681565b3480156104ba57600080fd5b506103e76104c9366004613ad9565b610c28565b3480156104da57600080fd5b506104ee6104e9366004613af2565b610d47565b604051901515815260200161039a565b34801561050a57600080fd5b506104ee610519366004613b1e565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561054357600080fd5b506103b9610d5e565b34801561055857600080fd5b506103b9610d7e565b34801561056d57600080fd5b506104ee61057c366004613b3b565b610dc4565b34801561058d57600080fd5b506103e761059c366004613b7c565b610e3c565b3480156105ad57600080fd5b506103e76105bc366004613b9e565b610f91565b3480156105cd57600080fd5b506103e76105dc366004613c59565b611100565b3480156105ed57600080fd5b506103b96107d081565b34801561060357600080fd5b506103b960155481565b34801561061957600080fd5b506106226111e9565b60405160ff909116815260200161039a565b34801561064057600080fd5b506103e761064f366004613ccc565b611219565b34801561066057600080fd5b506103e761066f366004613b1e565b611354565b34801561068057600080fd5b506103e761068f366004613d0f565b6113f4565b3480156106a057600080fd5b506103e76106af366004613d4a565b6114b5565b3480156106c057600080fd5b506103e76106cf366004613b7c565b61152e565b3480156106e057600080fd5b50600e54610386906001600160a01b031681565b34801561070057600080fd5b506018546104ee9060ff1681565b34801561071a57600080fd5b506103e7610729366004613b1e565b611684565b34801561073a57600080fd5b506104ee610749366004613b1e565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561077357600080fd5b506018546104ee90610100900460ff1681565b34801561079257600080fd5b506103e76107a1366004613d4a565b6118ba565b3480156107b257600080fd5b506103e76107c1366004613b1e565b611933565b3480156107d257600080fd5b506104ee6107e1366004613b1e565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561080b57600080fd5b506103b9611a29565b34801561082057600080fd5b506103b961082f366004613b1e565b6001600160a01b031660009081526001602052604090205490565b34801561085657600080fd5b506103e7611a44565b34801561086b57600080fd5b506103e761087a366004613d4a565b611aff565b34801561088b57600080fd5b506000546001600160a01b0316610386565b3480156108a957600080fd5b506104ee611cae565b3480156108be57600080fd5b506103e7611d1d565b3480156108d357600080fd5b5060408051808201909152600381527f46414900000000000000000000000000000000000000000000000000000000006020820152610481565b34801561091957600080fd5b506104ee610928366004613af2565b611f83565b34801561093957600080fd5b506103e7610948366004613ccc565b611f9a565b34801561095957600080fd5b506103e7610968366004613d78565b61214c565b34801561097957600080fd5b50600c546109aa9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161039a565b3480156109e457600080fd5b506103e76109f3366004613d95565b6121ee565b348015610a0457600080fd5b506103b9610a13366004613d95565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a4a57600080fd5b506103b960125481565b348015610a6057600080fd5b506103e7610a6f366004613b1e565b612282565b348015610a8057600080fd5b506103e7612652565b348015610a9557600080fd5b506103e7610aa4366004613d4a565b612735565b348015610ab557600080fd5b50600f54601054610ad0916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161039a565b348015610afc57600080fd5b506011546104ee90610100900460ff1681565b348015610b1b57600080fd5b506104ee610b2a366004613b1e565b6127dd565b348015610b3b57600080fd5b506103e7610b4a366004613d4a565b61286b565b6000546001600160a01b03163314610ba25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6018546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610bf29085908590600401613e07565b600060405180830381600087803b158015610c0c57600080fd5b505af1158015610c20573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610c765760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b60c8811015610cc75760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610b99565b6018546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610d2c57600080fd5b505af1158015610d40573d6000803e3d6000fd5b5050505050565b6000610d543384846128e4565b5060015b92915050565b6000610d6c6009600a613f3e565b601754610d799190613f4d565b905090565b6000610d8c6009600a613f3e565b610d9c906509184e72a000613f88565b600003610da857600080fd5b610db46009600a613f3e565b610d79906509184e72a000613f88565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610e29576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610e23908490613fa7565b90915550505b610e348484846129f1565b949350505050565b6000546001600160a01b03163314610e8a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6064610e986009600a613f3e565b610ea8906509184e72a000613f88565b610eb29190613f4d565b8183610ec06009600a613f3e565b610ed0906509184e72a000613f88565b610eda9190613f88565b610ee49190613f4d565b1015610f585760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610b99565b8082610f666009600a613f3e565b610f76906509184e72a000613f88565b610f809190613f88565b610f8a9190613f4d565b6017555050565b6000546001600160a01b03163314610fdf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b80518251146110305760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b99565b60005b82518160ff1610156110fb57818160ff168151811061105457611054613fbe565b602002602001015161107b336001600160a01b031660009081526001602052604090205490565b101561108657600080fd5b6110e833848360ff168151811061109f5761109f613fbe565b60200260200101516009600a6110b59190613f3e565b858560ff16815181106110ca576110ca613fbe565b60200260200101516110dc9190613f88565b60008060006001612eef565b50806110f381613fed565b915050611033565b505050565b6000546001600160a01b0316331461114e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6018546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b1580156111cb57600080fd5b505af11580156111df573d6000803e3d6000fd5b5050505050505050565b60006111f76009600a613f3e565b611207906509184e72a000613f88565b60000361121357600080fd5b50600990565b6000546001600160a01b031633146112675760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6107d08361ffff161115801561128357506107d08261ffff1611155b801561129557506107d08161ffff1611155b6112e15760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b99565b600b805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146113a25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6018546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610d12565b6000546001600160a01b031633146114425760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b83856114506009600a613f3e565b611460906509184e72a000613f88565b61146a9190613f88565b6114749190613f4d565b60145581836114856009600a613f3e565b611495906509184e72a000613f88565b61149f9190613f88565b6114a99190613f4d565b60155560125550505050565b6000546001600160a01b031633146115035760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461157c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6103e861158b6009600a613f3e565b61159b906509184e72a000613f88565b6115a59190613f4d565b81836115b36009600a613f3e565b6115c3906509184e72a000613f88565b6115cd9190613f88565b6115d79190613f4d565b101561164b5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b99565b80826116596009600a613f3e565b611669906509184e72a000613f88565b6116739190613f88565b61167d9190613f4d565b6016555050565b6000546001600160a01b031633146116d25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6001600160a01b03811661174e5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b99565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b038216016117ec5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b99565b60008054611805916001600160a01b03909116906118ba565b6118108160016118ba565b600080546001600160a01b03168152600160205260409020541561185757600080546001600160a01b03168082526001602052604090912054611855919083906110dc565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146119085760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119815760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b60185460ff161561199157600080fd5b306001600160a01b038216036119e95760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b99565b601880546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611a376009600a613f3e565b601654610d799190613f4d565b6000546001600160a01b03163314611a925760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b60008054611aab916001600160a01b03909116906118ba565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314611b4d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b801515600003611bc9576001600160a01b03828116600081815260026020526040808220805460ff1916905560185490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610bf2565b60035415611c30576203f48060035442611be39190613fa7565b11611c305760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610b99565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560185491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610bf2565b5050565b600080546001600160a01b03163314611cfd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b600d54611d179030906001600160a01b03166000196128e4565b50600190565b6000546001600160a01b03163314611d6b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b60185460ff1615611dbe5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b99565b601854610100900460ff16611e155760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b99565b6018546201000090046001600160a01b0316611e5b57601880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601854600e546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611ee657600080fd5b505af1925050508015611ef7575060015b5060188054600160ff199182168117909255600a80549091169055600e546001600160a01b03166000908152602091909152604090205461271090611f3d90600a613f88565b611f479190613f4d565b601455600e546001600160a01b031660009081526001602052604090205461271090611f74906019613f88565b611f7e9190613f4d565b601555565b6000611f903384846129f1565b5060019392505050565b6000546001600160a01b03163314611fe85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b600c805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090941692881692909217929092171617905580612060838561400c565b61206a919061400c565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16660100000000000061ffff93841602179055600b546000916120bb916201000081048216911661400c565b600c5461ffff918216925066010000000000009004168110156121465760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610b99565b50505050565b6000546001600160a01b0316331461219a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b601180548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906121e390831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461223c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b600f80546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560108054929093169116179055565b6000546001600160a01b031633146122d05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123399190614032565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123aa9190614032565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561240d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124319190614032565b90506001600160a01b0381166125da57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561247f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a39190614032565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125149190614032565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259d9190614032565b600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905561260e565b600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384169081179091556110fb9030906000196128e4565b6000546001600160a01b031633146126a05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b601854610100900460ff16156126f85760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b99565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612732573d6000803e3d6000fd5b50565b6000546001600160a01b031633146127835760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6018546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610bf2565b6018546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612847573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d58919061404f565b6000546001600160a01b031633146128b95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b99565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b03831661293a5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b99565b6001600160a01b0382166129905760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b99565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612a6f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b99565b6001600160a01b038316612aeb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610b99565b60008211612b615760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610b99565b6001600160a01b0384166000908152600260205260408120548190819060ff1615612b8f5760019250612bbd565b6001600160a01b03861660009081526002602052604090205460ff1615612bb95760019150612bbd565b5060015b612bc78787613183565b15612dcd5760185460ff16612c1e5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b99565b8280612c275750815b15612ceb576001600160a01b03871660009081526008602052604090205460ff16158015612c6e57506001600160a01b03861660009081526008602052604090205460ff16155b15612ceb57601654851115612ceb5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610b99565b600d546001600160a01b03878116911614801590612d07575081155b15612dcd576001600160a01b03861660009081526008602052604090205460ff16612dcd5760175485612d4f886001600160a01b031660009081526001602052604090205490565b612d59919061406c565b1115612dcd5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610b99565b6001600160a01b03871660009081526007602052604090205460019060ff1680612e0f57506001600160a01b03871660009081526007602052604090205460ff165b15612e18575060005b8215612ed45760115460ff16158015612e385750601154610100900460ff165b8015612e5d57506001600160a01b03871660009081526009602052604090205460ff16155b8015612e8257506001600160a01b03881660009081526009602052604090205460ff16155b15612ed45742601254601354612e98919061406c565b11612ed457306000908152600160205260409020546014548110612ed2576015548110612ec457506015545b612ecd81613258565b426013555b505b612ee388888884888888612eef565b98975050505050505050565b601854600090610100900460ff16612fef57612f0b88886136e2565b601854610100900460ff16158015612f285750612f288888613183565b8015612f4d57506001600160a01b03881660009081526006602052604090205460ff16155b8015612f7257506001600160a01b03871660009081526006602052604090205460ff16155b8015612f7c575081155b15612fef5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610b99565b612ff98888613183565b156130ac576018546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613095575060408051601f3d908101601f191682019092526130929181019061404f565b60015b61309e57600080fd5b9050806130aa57600080fd5b505b6001600160a01b038816600090815260016020526040812080548892906130d4908490613fa7565b9091555060009050856130e757866130f3565b6130f38986868a613840565b6001600160a01b03891660009081526001602052604081208054929350839290919061312090849061406c565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161316c91815260200190565b60405180910390a350600198975050505050505050565b600080546001600160a01b038481169116148015906131b057506000546001600160a01b03838116911614155b80156131c757506000546001600160a01b03163214155b80156131ec57506001600160a01b03821660009081526005602052604090205460ff16155b801561321157506001600160a01b03831660009081526005602052604090205460ff16155b801561322857506001600160a01b03821661dead14155b801561323c57506001600160a01b03821615155b801561325157506001600160a01b0383163014155b9392505050565b6011805460ff1916600117905560408051608081018252600c5461ffff808216835262010000820481166020840152640100000000820481169383019390935266010000000000009004909116606082018190526000036132b957506136d5565b306000908152600460209081526040808320600d546001600160a01b031684529091529020546000191461331257306000908152600460209081526040808320600d546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff16856133339190613f88565b61333d9190613f4d565b6133479190613f4d565b905060006133558285613fa7565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061338f5761338f613fbe565b6001600160a01b03928316602091820292909201810191909152600d54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613401573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134259190614032565b8160018151811061343857613438613fbe565b6001600160a01b039283166020918202929092010152600d546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613497908590600090869030904290600401614084565b600060405180830381600087803b1580156134b157600080fd5b505af11580156134c5573d6000803e3d6000fd5b50479250600091508490506134da8684613f88565b6134e49190613f4d565b905084156135d557600d546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015613573573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061359891906140c0565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6135df8183613fa7565b91508560000151866060018181516135f791906140ee565b61ffff90811690915260608801516040890151600093509082169161361d911685613f88565b6136279190613f4d565b905060006136358285613fa7565b602089015190915061ffff161561368257600f546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613680573d6000803e3d6000fd5b505b604088015161ffff16156136cc576010546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156136ca573d6000803e3d6000fd5b505b50505050505050505b506011805460ff19169055565b601854610100900460ff16156137605760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610b99565b61376a8282613183565b1580156137845750600e546001600160a01b038281169116145b15611caa576001600160a01b038083166000908152600560205260409020805460ff191660011790556018805461ff0019166101001790819055620100009004166137f957601880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6011805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b60008084156138565750600b5461ffff16613880565b831561386f5750600b5462010000900461ffff16613880565b50600b54640100000000900461ffff165b600061271061388f8386613f88565b6138999190613f4d565b306000908152600160205260408120805492935083929091906138bd90849061406c565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361390c8185613fa7565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561396f5761396f613917565b604052919050565b600067ffffffffffffffff82111561399157613991613917565b5060051b60200190565b6001600160a01b038116811461273257600080fd5b600082601f8301126139c157600080fd5b813560206139d66139d183613977565b613946565b82815260059290921b840181019181810190868411156139f557600080fd5b8286015b84811015613a19578035613a0c8161399b565b83529183019183016139f9565b509695505050505050565b801515811461273257600080fd5b60008060408385031215613a4557600080fd5b823567ffffffffffffffff811115613a5c57600080fd5b613a68858286016139b0565b9250506020830135613a7981613a24565b809150509250929050565b600060208083528351808285015260005b81811015613ab157858101830151858201604001528201613a95565b81811115613ac3576000604083870101525b50601f01601f1916929092016040019392505050565b600060208284031215613aeb57600080fd5b5035919050565b60008060408385031215613b0557600080fd5b8235613b108161399b565b946020939093013593505050565b600060208284031215613b3057600080fd5b81356132518161399b565b600080600060608486031215613b5057600080fd5b8335613b5b8161399b565b92506020840135613b6b8161399b565b929592945050506040919091013590565b60008060408385031215613b8f57600080fd5b50508035926020909101359150565b60008060408385031215613bb157600080fd5b823567ffffffffffffffff80821115613bc957600080fd5b613bd5868387016139b0565b9350602091508185013581811115613bec57600080fd5b85019050601f81018613613bff57600080fd5b8035613c0d6139d182613977565b81815260059190911b82018301908381019088831115613c2c57600080fd5b928401925b82841015613c4a57833582529284019290840190613c31565b80955050505050509250929050565b60008060008060808587031215613c6f57600080fd5b8435613c7a81613a24565b93506020850135613c8a81613a24565b92506040850135613c9a81613a24565b91506060850135613caa81613a24565b939692955090935050565b803561ffff81168114613cc757600080fd5b919050565b600080600060608486031215613ce157600080fd5b613cea84613cb5565b9250613cf860208501613cb5565b9150613d0660408501613cb5565b90509250925092565b600080600080600060a08688031215613d2757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215613d5d57600080fd5b8235613d688161399b565b91506020830135613a7981613a24565b600060208284031215613d8a57600080fd5b813561325181613a24565b60008060408385031215613da857600080fd5b8235613db38161399b565b91506020830135613a798161399b565b600081518084526020808501945080840160005b83811015613dfc5781516001600160a01b031687529582019590820190600101613dd7565b509495945050505050565b604081526000613e1a6040830185613dc3565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613e95578160001904821115613e7b57613e7b613e2b565b80851615613e8857918102915b93841c9390800290613e5f565b509250929050565b600082613eac57506001610d58565b81613eb957506000610d58565b8160018114613ecf5760028114613ed957613ef5565b6001915050610d58565b60ff841115613eea57613eea613e2b565b50506001821b610d58565b5060208310610133831016604e8410600b8410161715613f18575081810a610d58565b613f228383613e5a565b8060001904821115613f3657613f36613e2b565b029392505050565b600061325160ff841683613e9d565b600082613f83577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000816000190483118215151615613fa257613fa2613e2b565b500290565b600082821015613fb957613fb9613e2b565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff810361400357614003613e2b565b60010192915050565b600061ffff80831681851680830382111561402957614029613e2b565b01949350505050565b60006020828403121561404457600080fd5b81516132518161399b565b60006020828403121561406157600080fd5b815161325181613a24565b6000821982111561407f5761407f613e2b565b500190565b85815284602082015260a0604082015260006140a360a0830186613dc3565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156140d557600080fd5b8351925060208401519150604084015190509250925092565b600061ffff8381169083168181101561410957614109613e2b565b03939250505056fea264697066735822122048a0863d8044ce5e31c62386c9f45d821f187faf04ec36fc72367ca8d553110564736f6c634300080d0033

Deployed Bytecode Sourcemap

4352:21173:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6131:73;;;;;;;;;;;;6162:42;6131:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;6131:73:0;;;;;;;;6675:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6675:28:0;245:177:1;14749:172:0;;;;;;;;;;-1:-1:-1;14749:172:0;;;;;:::i;:::-;;:::i;:::-;;5574:116;;;;;;;;;;-1:-1:-1;5574:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;2855:6:1;2888:15;;;2870:34;;2940:15;;;2935:2;2920:18;;2913:43;2992:15;;2972:18;;;2965:43;;;;2833:2;2818:18;5574:116:0;2649:365:1;10857:80:0;;;;;;;;;;-1:-1:-1;10929:5:0;;;;;;;;;;;;;;;;;10857:80;;;;;;;:::i;6070:26::-;;;;;;;;;;-1:-1:-1;6070:26:0;;;;-1:-1:-1;;;;;6070:26:0;;;15381:150;;;;;;;;;;-1:-1:-1;15381:150:0;;;;;:::i;:::-;;:::i;11465:159::-;;;;;;;;;;-1:-1:-1;11465:159:0;;;;;:::i;:::-;;:::i;:::-;;;4598:14:1;;4591:22;4573:41;;4561:2;4546:18;11465:159:0;4433:187:1;14002:140:0;;;;;;;;;;-1:-1:-1;14002:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14100:34:0;14076:4;14100:34;;;:25;:34;;;;;;;;;14002:140;17252:112;;;;;;;;;;;;;:::i;10528:115::-;;;;;;;;;;;;;:::i;12131:306::-;;;;;;;;;;-1:-1:-1;12131:306:0;;;;;:::i;:::-;;:::i;16866:264::-;;;;;;;;;;-1:-1:-1;16866:264:0;;;;;:::i;:::-;;:::i;23503:418::-;;;;;;;;;;-1:-1:-1;23503:418:0;;;;;:::i;:::-;;:::i;15178:195::-;;;;;;;;;;-1:-1:-1;15178:195:0;;;;;:::i;:::-;;:::i;5867:42::-;;;;;;;;;;;;5905:4;5867:42;;6710:25;;;;;;;;;;;;;;;;10649:112;;;;;;;;;;;;;:::i;:::-;;;7558:4:1;7546:17;;;7528:36;;7516:2;7501:18;10649:112:0;7386:184:1;15539:397:0;;;;;;;;;;-1:-1:-1;15539:397:0;;;;;:::i;:::-;;:::i;15062:108::-;;;;;;;;;;-1:-1:-1;15062:108:0;;;;;:::i;:::-;;:::i;17372:338::-;;;;;;;;;;-1:-1:-1;17372:338:0;;;;;:::i;:::-;;:::i;14150:140::-;;;;;;;;;;-1:-1:-1;14150:140:0;;;;;:::i;:::-;;:::i;16589:269::-;;;;;;;;;;-1:-1:-1;16589:269:0;;;;;:::i;:::-;;:::i;6103:21::-;;;;;;;;;;-1:-1:-1;6103:21:0;;;;-1:-1:-1;;;;;6103:21:0;;;6867:34;;;;;;;;;;-1:-1:-1;6867:34:0;;;;;;;;9351:623;;;;;;;;;;-1:-1:-1;9351:623:0;;;;;:::i;:::-;;:::i;13867:127::-;;;;;;;;;;-1:-1:-1;13867:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13958:28:0;13934:4;13958:28;;;:19;:28;;;;;;;;;13867:127;6908:36;;;;;;;;;;-1:-1:-1;6908:36:0;;;;;;;;;;;14298:134;;;;;;;;;;-1:-1:-1;14298:134:0;;;;;:::i;:::-;;:::i;13501:218::-;;;;;;;;;;-1:-1:-1;13501:218:0;;;;;:::i;:::-;;:::i;13727:132::-;;;;;;;;;;-1:-1:-1;13727:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;13821:30:0;13797:4;13821:30;;;:21;:30;;;;;;;;;13727:132;17138:106;;;;;;;;;;;;;:::i;11167:117::-;;;;;;;;;;-1:-1:-1;11167:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;11260:16:0;11233:7;11260:16;;;:7;:16;;;;;;;11167:117;9982:193;;;;;;;;;;;;;:::i;12993:500::-;;;;;;;;;;-1:-1:-1;12993:500:0;;;;;:::i;:::-;;:::i;10943:79::-;;;;;;;;;;-1:-1:-1;10995:7:0;11013:6;-1:-1:-1;;;;;11013:6:0;10943:79;;11950:173;;;;;;;;;;;;;:::i;22719:586::-;;;;;;;;;;;;;:::i;10767:84::-;;;;;;;;;;-1:-1:-1;10841:7:0;;;;;;;;;;;;;;;;;10767:84;;11292:165;;;;;;;;;;-1:-1:-1;11292:165:0;;;;;:::i;:::-;;:::i;15944:428::-;;;;;;;;;;-1:-1:-1;15944:428:0;;;;;:::i;:::-;;:::i;17718:164::-;;;;;;;;;;-1:-1:-1;17718:164:0;;;;;:::i;:::-;;:::i;5699:159::-;;;;;;;;;;-1:-1:-1;5699:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9397:6:1;9430:15;;;9412:34;;9482:15;;;9477:2;9462:18;;9455:43;9534:15;;;9514:18;;;9507:43;;;;9586:15;;;9581:2;9566:18;;9559:43;9374:3;9359:19;5699:159:0;9164:444:1;16380:201:0;;;;;;;;;;-1:-1:-1;16380:201:0;;;;;:::i;:::-;;:::i;11028:133::-;;;;;;;;;;-1:-1:-1;11028:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11130:19:0;;;11112:7;11130:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11028:133;6593:44;;;;;;;;;;;;;;;;12445:540;;;;;;;;;;-1:-1:-1;12445:540:0;;;;;:::i;:::-;;:::i;23313:182::-;;;;;;;;;;;;;:::i;14596:145::-;;;;;;;;;;-1:-1:-1;14596:145:0;;;;;:::i;:::-;;:::i;6317:199::-;;;;;;;;;;-1:-1:-1;6317:199:0;;;;;;-1:-1:-1;;;;;6317:199:0;;;;;;;;;;;-1:-1:-1;;;;;10700:15:1;;;10682:34;;10752:15;;;;10747:2;10732:18;;10725:43;10594:18;6317:199:0;10415:359:1;6547:39:0;;;;;;;;;;-1:-1:-1;6547:39:0;;;;;;;;;;;14929:125;;;;;;;;;;-1:-1:-1;14929:125:0;;;;;:::i;:::-;;:::i;14440:148::-;;;;;;;;;;-1:-1:-1;14440:148:0;;;;;:::i;:::-;;:::i;14749:172::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;;;;;;;;;14857:9:::1;::::0;:56:::1;::::0;;;;:9;;;::::1;-1:-1:-1::0;;;;;14857:9:0::1;::::0;:37:::1;::::0;:56:::1;::::0;14895:8;;14905:7;;14857:56:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14749:172:::0;;:::o;15381:150::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;15465:3:::1;15458;:10;;15450:31;;;::::0;-1:-1:-1;;;15450:31:0;;12163:2:1;15450:31:0::1;::::0;::::1;12145:21:1::0;12202:1;12182:18;;;12175:29;12240:10;12220:18;;;12213:38;12268:18;;15450:31:0::1;11961:331:1::0;15450:31:0::1;15492:9;::::0;:31:::1;::::0;;;;::::1;::::0;::::1;391:25:1::0;;;15492:9:0;;;::::1;-1:-1:-1::0;;;;;15492:9:0::1;::::0;:26:::1;::::0;364:18:1;;15492:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15381:150:::0;:::o;11465:159::-;11540:4;11557:37;11566:10;11578:7;11587:6;11557:8;:37::i;:::-;-1:-1:-1;11612:4:0;11465:159;;;;;:::o;17252:112::-;17297:7;17342:13;5248:1;17342:2;:13;:::i;:::-;17324:14;;:32;;;;:::i;:::-;17317:39;;17252:112;:::o;10528:115::-;10583:7;5310:13;5248:1;5310:2;:13;:::i;:::-;5293:30;;5090:18;5293:30;:::i;:::-;10609:1;10598:12;10594:31;;10614:8;;;10594:31;5310:13;5248:1;5310:2;:13;:::i;:::-;5293:30;;5090:18;5293:30;:::i;12131:306::-;-1:-1:-1;;;;;12252:19:0;;12231:4;12252:19;;;:11;:19;;;;;;;;12272:10;12252:31;;;;;;;;-1:-1:-1;;12252:52:0;12248:126;;-1:-1:-1;;;;;12321:19:0;;;;;;:11;:19;;;;;;;;12341:10;12321:31;;;;;;;:41;;12356:6;;12321:19;:41;;12356:6;;12321:41;:::i;:::-;;;;-1:-1:-1;;12248:126:0;12393:36;12403:6;12411:9;12422:6;12393:9;:36::i;:::-;12386:43;12131:306;-1:-1:-1;;;;12131:306:0:o;16866:264::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;17008:3:::1;5310:13;5248:1;5310:2;:13;:::i;:::-;5293:30;::::0;5090:18:::1;5293:30;:::i;:::-;16998:13;;;;:::i;:::-;16986:7:::0;16975;5310:13:::1;5248:1;5310:2;:13;:::i;:::-;5293:30;::::0;5090:18:::1;5293:30;:::i;:::-;16965:17;;;;:::i;:::-;16964:29;;;;:::i;:::-;:48;;16956:109;;;::::0;-1:-1:-1;;;16956:109:0;;14833:2:1;16956:109:0::1;::::0;::::1;14815:21:1::0;14872:2;14852:18;;;14845:30;14911:34;14891:18;;;14884:62;14982:18;14962;;;14955:46;15018:19;;16956:109:0::1;14631:412:1::0;16956:109:0::1;17115:7:::0;17104;5310:13:::1;5248:1;5310:2;:13;:::i;:::-;5293:30;::::0;5090:18:::1;5293:30;:::i;:::-;17094:17;;;;:::i;:::-;17093:29;;;;:::i;:::-;17076:14;:46:::0;-1:-1:-1;;16866:264:0:o;23503:418::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;23638:7:::1;:14;23619:8;:15;:33;23611:67;;;::::0;-1:-1:-1;;;23611:67:0;;15250:2:1;23611:67:0::1;::::0;::::1;15232:21:1::0;15289:2;15269:18;;;15262:30;15328:23;15308:18;;;15301:51;15369:18;;23611:67:0::1;15048:345:1::0;23611:67:0::1;23694:7;23689:225;23711:8;:15;23707:1;:19;;;23689:225;;;23781:7;23789:1;23781:10;;;;;;;;;;:::i;:::-;;;;;;;23756:21;23766:10;-1:-1:-1::0;;;;;11260:16:0;11233:7;11260:16;;;:7;:16;;;;;;;11167:117;23756:21:::1;:35;;23748:44;;;::::0;::::1;;23807:95;23825:10;23837:8;23846:1;23837:11;;;;;;;;;;:::i;:::-;;;;;;;5248:1;23861:2;:13;;;;:::i;:::-;23850:7;23858:1;23850:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23876:5;23883::::0;23890::::1;23897:4;23807:17;:95::i;:::-;-1:-1:-1::0;23728:3:0;::::1;::::0;::::1;:::i;:::-;;;;23689:225;;;;23503:418:::0;;:::o;15178:195::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;15300:9:::1;::::0;:65:::1;::::0;;;;15999:14:1;;15992:22;15300:65:0::1;::::0;::::1;15974:41:1::0;16058:14;;16051:22;16031:18;;;16024:50;16117:14;;16110:22;16090:18;;;16083:50;16176:14;;16169:22;16149:18;;;16142:50;15300:9:0;;;::::1;-1:-1:-1::0;;;;;15300:9:0::1;::::0;:24:::1;::::0;15946:19:1;;15300:65:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15178:195:::0;;;;:::o;10649:112::-;10701:5;5310:13;5248:1;5310:2;:13;:::i;:::-;5293:30;;5090:18;5293:30;:::i;:::-;10725:1;10714:12;10710:31;;10730:8;;;10710:31;-1:-1:-1;5248:1:0;;10649:112::o;15539:397::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;5905:4:::1;15646:6;:21;;;;:65;;;;;5955:4;15688:7;:23;;;;15646:65;:117;;;;;6009:4;15732:11;:31;;;;15646:117;15638:170;;;::::0;-1:-1:-1;;;15638:170:0;;16405:2:1;15638:170:0::1;::::0;::::1;16387:21:1::0;16444:2;16424:18;;;16417:30;16483:25;16463:18;;;16456:53;16526:18;;15638:170:0::1;16203:347:1::0;15638:170:0::1;15819:9;:25:::0;;::::1;::::0;;::::1;15855:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;15893:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;15539:397::o;15062:108::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;15131:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;15131:31:0::1;::::0;::::1;160:74:1::0;15131:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;15131:31:0::1;14:226:1::0;17372:338:0;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;17586:16;17566;5310:13:::1;5248:1;5310:2;:13;:::i;:::-;5293:30;::::0;5090:18:::1;5293:30;:::i;:::-;17556:26;;;;:::i;:::-;17555:47;;;;:::i;:::-;17539:13;:63:::0;17654:13;17637;5310::::1;5248:1;5310:2;:13;:::i;:::-;5293:30;::::0;5090:18:::1;5293:30;:::i;:::-;17627:23;;;;:::i;:::-;17626:41;;;;:::i;:::-;17613:10;:54:::0;17678:17:::1;:24:::0;-1:-1:-1;;;;17372:338:0:o;14150:140::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;-1:-1:-1;;;;;14242:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;14242:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14150:140::o;16589:269::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;16730:4:::1;5310:13;5248:1;5310:2;:13;:::i;:::-;5293:30;::::0;5090:18:::1;5293:30;:::i;:::-;16720:14;;;;:::i;:::-;16708:7:::0;16697;5310:13:::1;5248:1;5310:2;:13;:::i;:::-;5293:30;::::0;5090:18:::1;5293:30;:::i;:::-;16687:17;;;;:::i;:::-;16686:29;;;;:::i;:::-;:49;;16678:117;;;::::0;-1:-1:-1;;;16678:117:0;;16757:2:1;16678:117:0::1;::::0;::::1;16739:21:1::0;16796:2;16776:18;;;16769:30;16835:34;16815:18;;;16808:62;16906:25;16886:18;;;16879:53;16949:19;;16678:117:0::1;16555:419:1::0;16678:117:0::1;16843:7:::0;16832;5310:13:::1;5248:1;5310:2;:13;:::i;:::-;5293:30;::::0;5090:18:::1;5293:30;:::i;:::-;16822:17;;;;:::i;:::-;16821:29;;;;:::i;:::-;16806:12;:44:::0;-1:-1:-1;;16589:269:0:o;9351:623::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;-1:-1:-1;;;;;9430:22:0;::::1;9422:96;;;::::0;-1:-1:-1;;;9422:96:0;;17181:2:1;9422:96:0::1;::::0;::::1;17163:21:1::0;17220:2;17200:18;;;17193:30;17259:34;17239:18;;;17232:62;17330:31;17310:18;;;17303:59;17379:19;;9422:96:0::1;16979:425:1::0;9422:96:0::1;9537:16:::0;-1:-1:-1;;;;;9537:16:0;::::1;::::0;9529:90:::1;;;::::0;-1:-1:-1;;;9529:90:0;;17181:2:1;9529:90:0::1;::::0;::::1;17163:21:1::0;17220:2;17200:18;;;17193:30;17259:34;17239:18;;;17232:62;17330:31;17310:18;;;17303:59;17379:19;;9529:90:0::1;16979:425:1::0;9529:90:0::1;9650:6;::::0;;9630:34:::1;::::0;-1:-1:-1;;;;;9650:6:0;;::::1;::::0;9630:19:::1;:34::i;:::-;9675:35;9695:8;9705:4;9675:19;:35::i;:::-;9754:1;9744:6:::0;;-1:-1:-1;;;;;9744:6:0::1;11260:16:::0;;:7;:16;;;;;;9734:21;9731:134:::1;;9790:6;::::0;;-1:-1:-1;;;;;9790:6:0::1;11260:16:::0;;;:7;:16;;;;;;;9772:81:::1;::::0;9790:6;9798:8;;9808:17:::1;11167:117:::0;9772:81:::1;;9731:134;9885:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;9885:17:0;::::1;::::0;;::::1;::::0;;9918:38:::1;::::0;9885:17;;;;9918:38:::1;::::0;9885:6;9918:38:::1;9351:623:::0;:::o;14298:134::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;-1:-1:-1;;;;;14386:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14386:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14298:134::o;13501:218::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;13585:14:::1;::::0;::::1;;13584:15;13576:24;;;::::0;::::1;;13642:4;-1:-1:-1::0;;;;;13619:28:0;::::1;::::0;13611:55:::1;;;::::0;-1:-1:-1;;;13611:55:0;;17611:2:1;13611:55:0::1;::::0;::::1;17593:21:1::0;17650:2;17630:18;;;17623:30;17689:16;17669:18;;;17662:44;17723:18;;13611:55:0::1;17409:338:1::0;13611:55:0::1;13677:9;:34:::0;;-1:-1:-1;;;;;13677:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;13501:218::o;17138:106::-;17179:7;17222:13;5248:1;17222:2;:13;:::i;:::-;17206:12;;:30;;;;:::i;9982:193::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;10067:6:::1;::::0;;10047:34:::1;::::0;-1:-1:-1;;;;;10067:6:0;;::::1;::::0;10047:19:::1;:34::i;:::-;10109:1;10092:19:::0;;;::::1;::::0;;10127:40:::1;::::0;10109:1;;10127:40:::1;::::0;10109:1;;10127:40:::1;9982:193::o:0;12993:500::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;13074:16;::::1;;13085:5;13074:16:::0;13070:416:::1;;-1:-1:-1::0;;;;;13107:13:0;;::::1;13123:5;13107:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;13107:21:0::1;::::0;;13143:9:::1;::::0;:32;;;;;::::1;::::0;::::1;17920:74:1::0;;;;18010:18;;;18003:50;;;;13143:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;17893:18:1;;13143:32:0::1;17752:307:1::0;13070:416:0::1;13212:17;::::0;:22;13208:136:::1;;13301:6;13281:17;;13263:15;:35;;;;:::i;:::-;:44;13255:73;;;::::0;-1:-1:-1;;;13255:73:0;;18266:2:1;13255:73:0::1;::::0;::::1;18248:21:1::0;18305:2;18285:18;;;18278:30;18344:18;18324;;;18317:46;18380:18;;13255:73:0::1;18064:340:1::0;13255:73:0::1;-1:-1:-1::0;;;;;13358:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;13358:20:0::1;13374:4;13358:20:::0;;::::1;::::0;;;13413:15:::1;13393:17;:35:::0;13443:9:::1;::::0;:31;;;;;::::1;::::0;::::1;17920:74:1::0;;;;18010:18;;;18003:50;13443:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;17893:18:1;;13443:31:0::1;17752:307:1::0;13070:416:0::1;12993:500:::0;;:::o;11950:173::-;12014:4;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;12063:9:::1;::::0;12031:62:::1;::::0;12048:4:::1;::::0;-1:-1:-1;;;;;12063:9:0::1;-1:-1:-1::0;;12031:8:0::1;:62::i;:::-;-1:-1:-1::0;12111:4:0::1;11950:173:::0;:::o;22719:586::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;22781:14:::1;::::0;::::1;;22780:15;22772:52;;;::::0;-1:-1:-1;;;22772:52:0;;18611:2:1;22772:52:0::1;::::0;::::1;18593:21:1::0;18650:2;18630:18;;;18623:30;18689:26;18669:18;;;18662:54;18733:18;;22772:52:0::1;18409:348:1::0;22772:52:0::1;22843:16;::::0;::::1;::::0;::::1;;;22835:53;;;::::0;-1:-1:-1;;;22835:53:0;;18964:2:1;22835:53:0::1;::::0;::::1;18946:21:1::0;19003:2;18983:18;;;18976:30;19042:26;19022:18;;;19015:54;19086:18;;22835:53:0::1;18762:348:1::0;22835:53:0::1;22910:9;::::0;;;::::1;-1:-1:-1::0;;;;;22910:9:0::1;22899:99;;22950:9;:36:::0;;;::::1;22980:4;22950:36:::0;::::1;;::::0;;22899:99:::1;23012:9;::::0;23032:6:::1;::::0;23012:85:::1;::::0;;;;-1:-1:-1;;;;;23032:6:0;;::::1;23012:85;::::0;::::1;19338:74:1::0;19460:10;23047:12:0::1;19448:23:1::0;19428:18;;;19421:51;19520:18;23069:15:0::1;19508:31:1::0;19488:18;;;19481:59;5248:1:0::1;19556:18:1::0;;;19549:45;23012:9:0;;;::::1;;::::0;:19:::1;::::0;19310::1;;23012:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23008:101:::0;23119:14:::1;:21:::0;;23136:4:::1;-1:-1:-1::0;;23119:21:0;;::::1;::::0;::::1;::::0;;;23151:23:::1;:31:::0;;;;::::1;::::0;;-1:-1:-1;23220:6:0;-1:-1:-1;;;;;23220:6:0::1;-1:-1:-1::0;11260:16:0;;;;;;;;;;;;23236:5:::1;::::0;23210:22:::1;::::0;23230:2:::1;23210:22;:::i;:::-;23209:32;;;;:::i;:::-;23193:13;:48:::0;23276:6:::1;::::0;-1:-1:-1;;;;;23276:6:0::1;11233:7:::0;11260:16;;;:7;:16;;;;;;23292:5:::1;::::0;23266:22:::1;::::0;23286:2:::1;23266:22;:::i;:::-;23265:32;;;;:::i;:::-;23252:10;:45:::0;22719:586::o;11292:165::-;11370:4;11387:40;11397:10;11409:9;11420:6;11387:9;:40::i;:::-;-1:-1:-1;11445:4:0;;11292:165;-1:-1:-1;;;11292:165:0:o;15944:428::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;16045:7:::1;:29:::0;;::::1;16125:25:::0;;::::1;::::0;::::1;::::0;16085:29;;::::1;::::0;::::1;::::0;;;;16045;;::::1;16085::::0;;;;;;;::::1;16125:25;;::::0;;16143:7;16181:21:::1;16105:9:::0;16065;16181:21:::1;:::i;:::-;:31;;;;:::i;:::-;16161:7;:51:::0;;;::::1;::::0;::::1;::::0;;::::1;;;::::0;;16258:9:::1;:17:::0;-1:-1:-1;;16239:36:0::1;::::0;16258:17;;::::1;::::0;::::1;::::0;16239:16:::1;:36;:::i;:::-;16294:7;:17:::0;16223:52:::1;::::0;;::::1;::::0;-1:-1:-1;16294:17:0;;::::1;;:26:::0;-1:-1:-1;16294:26:0::1;16286:78;;;::::0;-1:-1:-1;;;16286:78:0;;20036:2:1;16286:78:0::1;::::0;::::1;20018:21:1::0;20075:2;20055:18;;;20048:30;20114:34;20094:18;;;20087:62;20185:9;20165:18;;;20158:37;20212:19;;16286:78:0::1;19834:403:1::0;16286:78:0::1;16034:338;15944:428:::0;;;:::o;17718:164::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;17794:19:::1;:29:::0;;;::::1;;;;-1:-1:-1::0;;17794:29:0;;::::1;;::::0;;17839:35:::1;::::0;::::1;::::0;::::1;::::0;17816:7;4598:14:1;4591:22;4573:41;;4561:2;4546:18;;4433:187;17839:35:0::1;;;;;;;;17718:164:::0;:::o;16380:201::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;16482:11:::1;:42:::0;;-1:-1:-1;;;;;16482:42:0;;::::1;::::0;;;::::1;;::::0;;;16535:19;:38;;;;;::::1;::::0;::::1;;::::0;;16380:201::o;12445:540::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;12514:20:::1;12547:9;12514:43;;12568:16;12598:10;-1:-1:-1::0;;;;;12598:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12587:40:0::1;;12636:4;12643:10;-1:-1:-1::0;;;;;12643:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12587:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;10700:15:1;;;12587:74:0::1;::::0;::::1;10682:34:1::0;10752:15;;10732:18;;;10725:43;10594:18;;12587:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12568:93:::0;-1:-1:-1;;;;;;12676:22:0;::::1;12672:200;;12735:10;-1:-1:-1::0;;;;;12735:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12724:43:0::1;;12776:4;12783:10;-1:-1:-1::0;;;;;12783:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12724:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;10700:15:1;;;12724:77:0::1;::::0;::::1;10682:34:1::0;10752:15;;10732:18;;;10725:43;10594:18;;12724:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12715:6;:86:::0;;;::::1;-1:-1:-1::0;;;;;12715:86:0;;;::::1;::::0;;;::::1;::::0;;12672:200:::1;;;12843:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;12843:17:0;::::1;;::::0;;12672:200:::1;12882:9;:22:::0;;;::::1;-1:-1:-1::0;;;;;12882:22:0;::::1;::::0;;::::1;::::0;;;12915:62:::1;::::0;12932:4:::1;::::0;-1:-1:-1;;12915:8:0::1;:62::i;23313:182::-:0;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;23380:16:::1;::::0;::::1;::::0;::::1;;;23379:17;23371:58;;;::::0;-1:-1:-1;;;23371:58:0;;21032:2:1;23371:58:0::1;::::0;::::1;21014:21:1::0;21071:2;21051:18;;;21044:30;21110;21090:18;;;21083:58;21158:18;;23371:58:0::1;20830:352:1::0;23371:58:0::1;23448:6;::::0;;23440:47:::1;::::0;-1:-1:-1;;;;;23448:6:0;;::::1;::::0;23465:21:::1;23440:47:::0;::::1;;;::::0;23465:21;;23440:47;23448:6;23440:47;23465:21;23448:6;23440:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23313:182::o:0;14596:145::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;14686:9:::1;::::0;:47:::1;::::0;;;;-1:-1:-1;;;;;17938:55:1;;;14686:47:0::1;::::0;::::1;17920:74:1::0;18037:14;;18030:22;18010:18;;;18003:50;14686:9:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;17893:18:1;;14686:47:0::1;17752:307:1::0;14929:125:0;15014:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;15014:32:0;;;160:74:1;14990:4:0;;15014:9;;;;;:23;;133:18:1;;15014:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14440:148::-;7336:6;;-1:-1:-1;;;;;7336:6:0;7346:10;7336:20;7328:50;;;;-1:-1:-1;;;7328:50:0;;10981:2:1;7328:50:0;;;10963:21:1;11020:2;11000:18;;;10993:30;-1:-1:-1;;;11039:18:1;;;11032:47;11096:18;;7328:50:0;10779:341:1;7328:50:0;-1:-1:-1;;;;;14536:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;14536:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14440:148::o;11632:310::-;-1:-1:-1;;;;;11727:20:0;;11719:52;;;;-1:-1:-1;;;11719:52:0;;21639:2:1;11719:52:0;;;21621:21:1;21678:2;21658:18;;;21651:30;21717:21;21697:18;;;21690:49;21756:18;;11719:52:0;21437:343:1;11719:52:0;-1:-1:-1;;;;;11790:21:0;;11782:53;;;;-1:-1:-1;;;11782:53:0;;21639:2:1;11782:53:0;;;21621:21:1;21678:2;21658:18;;;21651:30;21717:21;21697:18;;;21690:49;21756:18;;11782:53:0;21437:343:1;11782:53:0;-1:-1:-1;;;;;11848:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11901:33;;391:25:1;;;11901:33:0;;364:18:1;11901:33:0;;;;;;;11632:310;;;:::o;18256:2148::-;18335:4;-1:-1:-1;;;;;18360:18:0;;18352:68;;;;-1:-1:-1;;;18352:68:0;;21987:2:1;18352:68:0;;;21969:21:1;22026:2;22006:18;;;21999:30;22065:34;22045:18;;;22038:62;22136:7;22116:18;;;22109:35;22161:19;;18352:68:0;21785:401:1;18352:68:0;-1:-1:-1;;;;;18439:16:0;;18431:64;;;;-1:-1:-1;;;18431:64:0;;22393:2:1;18431:64:0;;;22375:21:1;22432:2;22412:18;;;22405:30;22471:34;22451:18;;;22444:62;22542:5;22522:18;;;22515:33;22565:19;;18431:64:0;22191:399:1;18431:64:0;18523:1;18514:6;:10;18506:64;;;;-1:-1:-1;;;18506:64:0;;22797:2:1;18506:64:0;;;22779:21:1;22836:2;22816:18;;;22809:30;22875:34;22855:18;;;22848:62;22946:11;22926:18;;;22919:39;22975:19;;18506:64:0;22595:405:1;18506:64:0;-1:-1:-1;;;;;18669:13:0;;18581:8;18669:13;;;:7;:13;;;;;;18581:8;;;;18669:13;;18665:162;;;18705:4;18699:10;;18665:162;;;-1:-1:-1;;;;;18731:11:0;;;;;;:7;:11;;;;;;;;18727:100;;;18766:4;18759:11;;18727:100;;;-1:-1:-1;18811:4:0;18727:100;18840:20;18851:4;18857:2;18840:10;:20::i;:::-;18837:641;;;18881:14;;;;18877:89;;18916:34;;-1:-1:-1;;;18916:34:0;;23207:2:1;18916:34:0;;;23189:21:1;23246:2;23226:18;;;23219:30;23285:26;23265:18;;;23258:54;23329:18;;18916:34:0;23005:348:1;18877:89:0;18983:3;:11;;;;18990:4;18983:11;18980:231;;;-1:-1:-1;;;;;19019:27:0;;;;;;:21;:27;;;;;;;;19018:28;:58;;;;-1:-1:-1;;;;;;19051:25:0;;;;;;:21;:25;;;;;;;;19050:26;19018:58;19014:182;;;19119:12;;19109:6;:22;;19101:75;;;;-1:-1:-1;;;19101:75:0;;23560:2:1;19101:75:0;;;23542:21:1;23599:2;23579:18;;;23572:30;23638:34;23618:18;;;23611:62;23709:10;23689:18;;;23682:38;23737:19;;19101:75:0;23358:404:1;19101:75:0;19242:9;;-1:-1:-1;;;;;19228:24:0;;;19242:9;;19228:24;;;;:33;;;19257:4;19256:5;19228:33;19225:242;;;-1:-1:-1;;;;;19287:25:0;;;;;;:21;:25;;;;;;;;19282:170;;19371:14;;19361:6;19345:13;19355:2;-1:-1:-1;;;;;11260:16:0;11233:7;11260:16;;;:7;:16;;;;;;;11167:117;19345:13;:22;;;;:::i;:::-;:40;;19337:95;;;;-1:-1:-1;;;19337:95:0;;24102:2:1;19337:95:0;;;24084:21:1;24141:2;24121:18;;;24114:30;24180:34;24160:18;;;24153:62;24251:12;24231:18;;;24224:40;24281:19;;19337:95:0;23900:406:1;19337:95:0;-1:-1:-1;;;;;19523:25:0;;19490:12;19523:25;;;:19;:25;;;;;;19505:4;;19523:25;;;:52;;-1:-1:-1;;;;;;19552:23:0;;;;;;:19;:23;;;;;;;;19523:52;19520:98;;;-1:-1:-1;19601:5:0;19520:98;19634:4;19630:686;;;19660:6;;;;19659:7;:47;;;;-1:-1:-1;19687:19:0;;;;;;;19659:47;:89;;;;-1:-1:-1;;;;;;19728:20:0;;;;;;:16;:20;;;;;;;;19727:21;19659:89;:133;;;;-1:-1:-1;;;;;;19770:22:0;;;;;;:16;:22;;;;;;;;19769:23;19659:133;19655:644;;;19863:15;19842:17;;19831:8;;:28;;;;:::i;:::-;:47;19827:457;;19952:4;19903:28;11260:16;;;:7;:16;;;;;;20009:13;;19985:37;;19981:284;;20078:10;;20054:20;:34;20051:77;;-1:-1:-1;20115:10:0;;20051:77;20154:34;20167:20;20154:12;:34::i;:::-;20226:15;20215:8;:26;19981:284;19880:404;19827:457;20334:62;20352:4;20358:2;20362:6;20370:7;20379:3;20384:4;20390:5;20334:17;:62::i;:::-;20327:69;18256:2148;-1:-1:-1;;;;;;;;18256:2148:0:o;23929:1023::-;24085:16;;24063:4;;24085:16;;;;;24080:298;;24118:28;24137:4;24143:2;24118:18;:28::i;:::-;24166:16;;;;;;;24165:17;:41;;;;;24186:20;24197:4;24203:2;24186:10;:20::i;:::-;24165:77;;;;-1:-1:-1;;;;;;24211:31:0;;;;;;:25;:31;;;;;;;;24210:32;24165:77;:111;;;;-1:-1:-1;;;;;;24247:29:0;;;;;;:25;:29;;;;;;;;24246:30;24165:111;:121;;;;;24281:5;24280:6;24165:121;24161:206;;;24307:44;;-1:-1:-1;;;24307:44:0;;24513:2:1;24307:44:0;;;24495:21:1;24552:2;24532:18;;;24525:30;24591:34;24571:18;;;24564:62;24662:4;24642:18;;;24635:32;24684:19;;24307:44:0;24311:398:1;24161:206:0;24394:20;24405:4;24411:2;24394:10;:20::i;:::-;24390:314;;;24462:9;;:37;;;;;-1:-1:-1;;;;;24995:15:1;;;24462:37:0;;;24977:34:1;25047:15;;;25027:18;;;25020:43;25079:18;;;25072:34;;;24431:12:0;;24462:9;;;;;:19;;24889:18:1;;24462:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;24462:37:0;;;;;;;;-1:-1:-1;;24462:37:0;;;;;;;;;;;;:::i;:::-;;;24458:163;;24597:8;;;24458:163;24550:5;-1:-1:-1;24641:7:0;24637:56;;24669:8;;;24637:56;24416:288;24390:314;-1:-1:-1;;;;;24716:13:0;;;;;;:7;:13;;;;;:23;;24733:6;;24716:13;:23;;24733:6;;24716:23;:::i;:::-;;;;-1:-1:-1;24750:22:0;;-1:-1:-1;24776:7:0;24775:55;;24824:6;24775:55;;;24787:34;24797:4;24803:3;24808:4;24814:6;24787:9;:34::i;:::-;-1:-1:-1;;;;;24841:11:0;;;;;;:7;:11;;;;;:29;;24750:80;;-1:-1:-1;24750:80:0;;24841:11;;;:29;;24750:80;;24841:29;:::i;:::-;;;;;;;;24903:2;-1:-1:-1;;;;;24888:34:0;24897:4;-1:-1:-1;;;;;24888:34:0;;24907:14;24888:34;;;;391:25:1;;379:2;364:18;;245:177;24888:34:0;;;;;;;;-1:-1:-1;24940:4:0;;23929:1023;-1:-1:-1;;;;;;;;23929:1023:0:o;17890:358::-;17959:4;17991:6;;-1:-1:-1;;;;;17983:14:0;;;17991:6;;17983:14;;;;:43;;-1:-1:-1;18020:6:0;;-1:-1:-1;;;;;18014:12:0;;;18020:6;;18014:12;;17983:43;:79;;;;-1:-1:-1;18056:6:0;;-1:-1:-1;;;;;18056:6:0;18043:9;:19;;17983:79;:118;;;;-1:-1:-1;;;;;;18080:21:0;;;;;;:17;:21;;;;;;;;18079:22;17983:118;:159;;;;-1:-1:-1;;;;;;18119:23:0;;;;;;:17;:23;;;;;;;;18118:24;17983:159;:186;;;;-1:-1:-1;;;;;;18159:10:0;;6162:42;18159:10;;17983:186;:219;;;;-1:-1:-1;;;;;;18186:16:0;;;;17983:219;:257;;;;-1:-1:-1;;;;;;18219:21:0;;18235:4;18219:21;;17983:257;17976:264;17890:358;-1:-1:-1;;;17890:358:0:o;20412:1782::-;7230:6;:13;;-1:-1:-1;;7230:13:0;7239:4;7230:13;;;20496:30:::1;::::0;;::::1;::::0;::::1;::::0;;20519:7:::1;20496:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;7230:6;20541:21;20537:60:::1;;20579:7;;;20537:60;20632:4;20612:26;::::0;;;:11:::1;:26;::::0;;;;;;;20647:9:::1;::::0;-1:-1:-1;;;;;20647:9:0::1;20612:46:::0;;;;;;;;-1:-1:-1;;20612:67:0::1;20609:165;;20716:4;20696:26;::::0;;;:11:::1;:26;::::0;;;;;;;20731:9:::1;::::0;-1:-1:-1;;;;;20731:9:0::1;20696:46:::0;;;;;;;-1:-1:-1;;20696:66:0;;20609:165:::1;20786:17;20871:1;20851:6;:16;;;20807:60;;20831:6;:16;;;20808:39;;:20;:39;;;;:::i;:::-;20807:60;;;;:::i;:::-;20806:66;;;;:::i;:::-;20786:86:::0;-1:-1:-1;20883:15:0::1;20901:32;20786:86:::0;20901:20;:32:::1;:::i;:::-;20978:16;::::0;;20992:1:::1;20978:16:::0;;;;;::::1;::::0;;20883:50;;-1:-1:-1;20954:21:0::1;::::0;20978:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20978:16:0::1;20954:40;;21023:4;21005;21010:1;21005:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21005:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;21049:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;21005:7;;21049:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21039:4;21044:1;21039:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21039:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21078:9:::1;::::0;:186:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:186:::1;::::0;21153:7;;21078:9:::1;::::0;21191:4;;21218::::1;::::0;21238:15:::1;::::0;21078:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;21298:21:0::1;::::0;-1:-1:-1;21277:18:0::1;::::0;-1:-1:-1;21384:7:0;;-1:-1:-1;21358:22:0::1;21371:9:::0;21298:21;21358:22:::1;:::i;:::-;21357:34;;;;:::i;:::-;21330:61:::0;-1:-1:-1;21408:13:0;;21404:328:::1;;21438:9;::::0;:222:::1;::::0;;;;21515:4:::1;21438:222;::::0;::::1;26091:34:1::0;26141:18;;;26134:34;;;21438:9:0::1;26184:18:1::0;;;26177:34;;;26227:18;;;26220:34;6162:42:0::1;26270:19:1::0;;;26263:44;21630:15:0::1;26323:19:1::0;;;26316:35;-1:-1:-1;;;;;21438:9:0;;::::1;::::0;:25:::1;::::0;21471:16;;26002:19:1;;21438:222:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;21680:40:0::1;::::0;;26847:25:1;;;26903:2;26888:18;;26881:34;;;21680:40:0::1;::::0;-1:-1:-1;26820:18:1;21680:40:0::1;;;;;;;21404:328;21744:30;21758:16:::0;21744:30;::::1;:::i;:::-;;;21805:6;:16;;;21785:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;21889:16:::1;::::0;::::1;::::0;21871:14:::1;::::0;::::1;::::0;21832:22:::1;::::0;-1:-1:-1;21857:48:0;;::::1;::::0;21858:27:::1;::::0;::::1;:10:::0;:27:::1;:::i;:::-;21857:48;;;;:::i;:::-;21832:73:::0;-1:-1:-1;21916:24:0::1;21943:27;21832:73:::0;21943:10;:27:::1;:::i;:::-;21985:16;::::0;::::1;::::0;21916:54;;-1:-1:-1;21985:20:0::1;;::::0;21981:101:::1;;22022:11;:21:::0;:48:::1;::::0;-1:-1:-1;;;;;22022:21:0;;::::1;::::0;:48;::::1;;;::::0;22053:16;;22022:21:::1;:48:::0;:21;:48;22053:16;22022:21;:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21981:101;22096:14;::::0;::::1;::::0;:18:::1;;::::0;22092:95:::1;;22131:19:::0;;:44:::1;::::0;-1:-1:-1;;;;;22131:19:0;;::::1;::::0;:44;::::1;;;::::0;22160:14;;22131:19:::1;:44:::0;:19;:44;22160:14;22131:19;:44;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22092:95;20485:1709;;;;;;;;7254:1;-1:-1:-1::0;7266:6:0;:14;;-1:-1:-1;;7266:14:0;;;20412:1782::o;22202:509::-;22285:16;;;;;;;22284:17;22276:65;;;;-1:-1:-1;;;22276:65:0;;27350:2:1;22276:65:0;;;27332:21:1;27389:2;27369:18;;;27362:30;27428:34;27408:18;;;27401:62;27499:5;27479:18;;;27472:33;27522:19;;22276:65:0;27148:399:1;22276:65:0;22357:20;22368:4;22374:2;22357:10;:20::i;:::-;22356:21;:37;;;;-1:-1:-1;22387:6:0;;-1:-1:-1;;;;;22381:12:0;;;22387:6;;22381:12;22356:37;22352:352;;;-1:-1:-1;;;;;22410:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;22410:30:0;22436:4;22410:30;;;22455:16;:23;;-1:-1:-1;;22455:23:0;22410:30;22455:23;;;;;22504:9;;;;22493:107;;22548:9;:36;;;;22578:4;22548:36;;;;;22493:107;22614:19;:26;;-1:-1:-1;;22614:26:0;;;;;22660:32;;-1:-1:-1;4573:41:1;;22660:32:0;;4561:2:1;4546:18;22660:32:0;;;;;;;22202:509;;:::o;24960:562::-;25048:7;25068:18;25101:3;25097:205;;;-1:-1:-1;25134:9:0;:16;;;25097:205;;;25172:4;25168:134;;;-1:-1:-1;25206:9:0;:17;;;;;;25168:134;;;-1:-1:-1;25269:9:0;:21;;;;;;25168:134;25314:17;6056:5;25334:19;25343:10;25334:6;:19;:::i;:::-;:38;;;;:::i;:::-;25401:4;25385:22;;;;:7;:22;;;;;:35;;25314:58;;-1:-1:-1;25314:58:0;;25385:22;;;:35;;25314:58;;25385:35;:::i;:::-;;;;-1:-1:-1;;25436:40:0;;391:25:1;;;25459:4:0;;-1:-1:-1;;;;;25436:40:0;;;;;379:2:1;364:18;25436:40:0;;;;;;;25496:18;25505:9;25496:6;:18;:::i;:::-;25489:25;24960:562;-1:-1:-1;;;;;;;24960:562:0:o;427:184:1:-;479:77;476:1;469:88;576:4;573:1;566:15;600:4;597:1;590:15;616:334;687:2;681:9;743:2;733:13;;-1:-1:-1;;729:86:1;717:99;;846:18;831:34;;867:22;;;828:62;825:88;;;893:18;;:::i;:::-;929:2;922:22;616:334;;-1:-1:-1;616:334:1:o;955:183::-;1015:4;1048:18;1040:6;1037:30;1034:56;;;1070:18;;:::i;:::-;-1:-1:-1;1115:1:1;1111:14;1127:4;1107:25;;955:183::o;1143:154::-;-1:-1:-1;;;;;1222:5:1;1218:54;1211:5;1208:65;1198:93;;1287:1;1284;1277:12;1302:737;1356:5;1409:3;1402:4;1394:6;1390:17;1386:27;1376:55;;1427:1;1424;1417:12;1376:55;1463:6;1450:20;1489:4;1513:60;1529:43;1569:2;1529:43;:::i;:::-;1513:60;:::i;:::-;1607:15;;;1693:1;1689:10;;;;1677:23;;1673:32;;;1638:12;;;;1717:15;;;1714:35;;;1745:1;1742;1735:12;1714:35;1781:2;1773:6;1769:15;1793:217;1809:6;1804:3;1801:15;1793:217;;;1889:3;1876:17;1906:31;1931:5;1906:31;:::i;:::-;1950:18;;1988:12;;;;1826;;1793:217;;;-1:-1:-1;2028:5:1;1302:737;-1:-1:-1;;;;;;1302:737:1:o;2044:118::-;2130:5;2123:13;2116:21;2109:5;2106:32;2096:60;;2152:1;2149;2142:12;2167:477;2257:6;2265;2318:2;2306:9;2297:7;2293:23;2289:32;2286:52;;;2334:1;2331;2324:12;2286:52;2374:9;2361:23;2407:18;2399:6;2396:30;2393:50;;;2439:1;2436;2429:12;2393:50;2462:61;2515:7;2506:6;2495:9;2491:22;2462:61;:::i;:::-;2452:71;;;2573:2;2562:9;2558:18;2545:32;2586:28;2608:5;2586:28;:::i;:::-;2633:5;2623:15;;;2167:477;;;;;:::o;3019:656::-;3131:4;3160:2;3189;3178:9;3171:21;3221:6;3215:13;3264:6;3259:2;3248:9;3244:18;3237:34;3289:1;3299:140;3313:6;3310:1;3307:13;3299:140;;;3408:14;;;3404:23;;3398:30;3374:17;;;3393:2;3370:26;3363:66;3328:10;;3299:140;;;3457:6;3454:1;3451:13;3448:91;;;3527:1;3522:2;3513:6;3502:9;3498:22;3494:31;3487:42;3448:91;-1:-1:-1;3591:2:1;3579:15;-1:-1:-1;;3575:88:1;3560:104;;;;3666:2;3556:113;;3019:656;-1:-1:-1;;;3019:656:1:o;3928:180::-;3987:6;4040:2;4028:9;4019:7;4015:23;4011:32;4008:52;;;4056:1;4053;4046:12;4008:52;-1:-1:-1;4079:23:1;;3928:180;-1:-1:-1;3928:180:1:o;4113:315::-;4181:6;4189;4242:2;4230:9;4221:7;4217:23;4213:32;4210:52;;;4258:1;4255;4248:12;4210:52;4297:9;4284:23;4316:31;4341:5;4316:31;:::i;:::-;4366:5;4418:2;4403:18;;;;4390:32;;-1:-1:-1;;;4113:315:1:o;4625:247::-;4684:6;4737:2;4725:9;4716:7;4712:23;4708:32;4705:52;;;4753:1;4750;4743:12;4705:52;4792:9;4779:23;4811:31;4836:5;4811:31;:::i;4877:456::-;4954:6;4962;4970;5023:2;5011:9;5002:7;4998:23;4994:32;4991:52;;;5039:1;5036;5029:12;4991:52;5078:9;5065:23;5097:31;5122:5;5097:31;:::i;:::-;5147:5;-1:-1:-1;5204:2:1;5189:18;;5176:32;5217:33;5176:32;5217:33;:::i;:::-;4877:456;;5269:7;;-1:-1:-1;;;5323:2:1;5308:18;;;;5295:32;;4877:456::o;5338:248::-;5406:6;5414;5467:2;5455:9;5446:7;5442:23;5438:32;5435:52;;;5483:1;5480;5473:12;5435:52;-1:-1:-1;;5506:23:1;;;5576:2;5561:18;;;5548:32;;-1:-1:-1;5338:248:1:o;5591:1138::-;5709:6;5717;5770:2;5758:9;5749:7;5745:23;5741:32;5738:52;;;5786:1;5783;5776:12;5738:52;5826:9;5813:23;5855:18;5896:2;5888:6;5885:14;5882:34;;;5912:1;5909;5902:12;5882:34;5935:61;5988:7;5979:6;5968:9;5964:22;5935:61;:::i;:::-;5925:71;;6015:2;6005:12;;6070:2;6059:9;6055:18;6042:32;6099:2;6089:8;6086:16;6083:36;;;6115:1;6112;6105:12;6083:36;6138:24;;;-1:-1:-1;6193:4:1;6185:13;;6181:27;-1:-1:-1;6171:55:1;;6222:1;6219;6212:12;6171:55;6258:2;6245:16;6281:60;6297:43;6337:2;6297:43;:::i;6281:60::-;6375:15;;;6457:1;6453:10;;;;6445:19;;6441:28;;;6406:12;;;;6481:19;;;6478:39;;;6513:1;6510;6503:12;6478:39;6537:11;;;;6557:142;6573:6;6568:3;6565:15;6557:142;;;6639:17;;6627:30;;6590:12;;;;6677;;;;6557:142;;;6718:5;6708:15;;;;;;;5591:1138;;;;;:::o;6734:647::-;6808:6;6816;6824;6832;6885:3;6873:9;6864:7;6860:23;6856:33;6853:53;;;6902:1;6899;6892:12;6853:53;6941:9;6928:23;6960:28;6982:5;6960:28;:::i;:::-;7007:5;-1:-1:-1;7064:2:1;7049:18;;7036:32;7077:30;7036:32;7077:30;:::i;:::-;7126:7;-1:-1:-1;7185:2:1;7170:18;;7157:32;7198:30;7157:32;7198:30;:::i;:::-;7247:7;-1:-1:-1;7306:2:1;7291:18;;7278:32;7319:30;7278:32;7319:30;:::i;:::-;6734:647;;;;-1:-1:-1;6734:647:1;;-1:-1:-1;;6734:647:1:o;7575:159::-;7642:20;;7702:6;7691:18;;7681:29;;7671:57;;7724:1;7721;7714:12;7671:57;7575:159;;;:::o;7739:328::-;7813:6;7821;7829;7882:2;7870:9;7861:7;7857:23;7853:32;7850:52;;;7898:1;7895;7888:12;7850:52;7921:28;7939:9;7921:28;:::i;:::-;7911:38;;7968:37;8001:2;7990:9;7986:18;7968:37;:::i;:::-;7958:47;;8024:37;8057:2;8046:9;8042:18;8024:37;:::i;:::-;8014:47;;7739:328;;;;;:::o;8072:454::-;8167:6;8175;8183;8191;8199;8252:3;8240:9;8231:7;8227:23;8223:33;8220:53;;;8269:1;8266;8259:12;8220:53;-1:-1:-1;;8292:23:1;;;8362:2;8347:18;;8334:32;;-1:-1:-1;8413:2:1;8398:18;;8385:32;;8464:2;8449:18;;8436:32;;-1:-1:-1;8515:3:1;8500:19;8487:33;;-1:-1:-1;8072:454:1;-1:-1:-1;8072:454:1:o;8531:382::-;8596:6;8604;8657:2;8645:9;8636:7;8632:23;8628:32;8625:52;;;8673:1;8670;8663:12;8625:52;8712:9;8699:23;8731:31;8756:5;8731:31;:::i;:::-;8781:5;-1:-1:-1;8838:2:1;8823:18;;8810:32;8851:30;8810:32;8851:30;:::i;8918:241::-;8974:6;9027:2;9015:9;9006:7;9002:23;8998:32;8995:52;;;9043:1;9040;9033:12;8995:52;9082:9;9069:23;9101:28;9123:5;9101:28;:::i;9613:404::-;9697:6;9705;9758:2;9746:9;9737:7;9733:23;9729:32;9726:52;;;9774:1;9771;9764:12;9726:52;9813:9;9800:23;9832:31;9857:5;9832:31;:::i;:::-;9882:5;-1:-1:-1;9939:2:1;9924:18;;9911:32;9952:33;9911:32;9952:33;:::i;11125:484::-;11178:3;11216:5;11210:12;11243:6;11238:3;11231:19;11269:4;11298:2;11293:3;11289:12;11282:19;;11335:2;11328:5;11324:14;11356:1;11366:218;11380:6;11377:1;11374:13;11366:218;;;11445:13;;-1:-1:-1;;;;;11441:62:1;11429:75;;11524:12;;;;11559:15;;;;11402:1;11395:9;11366:218;;;-1:-1:-1;11600:3:1;;11125:484;-1:-1:-1;;;;;11125:484:1:o;11614:342::-;11815:2;11804:9;11797:21;11778:4;11835:56;11887:2;11876:9;11872:18;11864:6;11835:56;:::i;:::-;11827:64;;11941:6;11934:14;11927:22;11922:2;11911:9;11907:18;11900:50;11614:342;;;;;:::o;12297:184::-;12349:77;12346:1;12339:88;12446:4;12443:1;12436:15;12470:4;12467:1;12460:15;12486:482;12575:1;12618:5;12575:1;12632:330;12653:7;12643:8;12640:21;12632:330;;;12772:4;-1:-1:-1;;12700:77:1;12694:4;12691:87;12688:113;;;12781:18;;:::i;:::-;12831:7;12821:8;12817:22;12814:55;;;12851:16;;;;12814:55;12930:22;;;;12890:15;;;;12632:330;;;12636:3;12486:482;;;;;:::o;12973:866::-;13022:5;13052:8;13042:80;;-1:-1:-1;13093:1:1;13107:5;;13042:80;13141:4;13131:76;;-1:-1:-1;13178:1:1;13192:5;;13131:76;13223:4;13241:1;13236:59;;;;13309:1;13304:130;;;;13216:218;;13236:59;13266:1;13257:10;;13280:5;;;13304:130;13341:3;13331:8;13328:17;13325:43;;;13348:18;;:::i;:::-;-1:-1:-1;;13404:1:1;13390:16;;13419:5;;13216:218;;13518:2;13508:8;13505:16;13499:3;13493:4;13490:13;13486:36;13480:2;13470:8;13467:16;13462:2;13456:4;13453:12;13449:35;13446:77;13443:159;;;-1:-1:-1;13555:19:1;;;13587:5;;13443:159;13634:34;13659:8;13653:4;13634:34;:::i;:::-;13764:6;-1:-1:-1;;13692:79:1;13683:7;13680:92;13677:118;;;13775:18;;:::i;:::-;13813:20;;12973:866;-1:-1:-1;;;12973:866:1:o;13844:140::-;13902:5;13931:47;13972:4;13962:8;13958:19;13952:4;13931:47;:::i;13989:274::-;14029:1;14055;14045:189;;14090:77;14087:1;14080:88;14191:4;14188:1;14181:15;14219:4;14216:1;14209:15;14045:189;-1:-1:-1;14248:9:1;;13989:274::o;14268:228::-;14308:7;14434:1;-1:-1:-1;;14362:74:1;14359:1;14356:81;14351:1;14344:9;14337:17;14333:105;14330:131;;;14441:18;;:::i;:::-;-1:-1:-1;14481:9:1;;14268:228::o;14501:125::-;14541:4;14569:1;14566;14563:8;14560:34;;;14574:18;;:::i;:::-;-1:-1:-1;14611:9:1;;14501:125::o;15398:184::-;15450:77;15447:1;15440:88;15547:4;15544:1;15537:15;15571:4;15568:1;15561:15;15587:175;15624:3;15668:4;15661:5;15657:16;15697:4;15688:7;15685:17;15682:43;;15705:18;;:::i;:::-;15754:1;15741:15;;15587:175;-1:-1:-1;;15587:175:1:o;19605:224::-;19644:3;19672:6;19705:2;19702:1;19698:10;19735:2;19732:1;19728:10;19766:3;19762:2;19758:12;19753:3;19750:21;19747:47;;;19774:18;;:::i;:::-;19810:13;;19605:224;-1:-1:-1;;;;19605:224:1:o;20242:251::-;20312:6;20365:2;20353:9;20344:7;20340:23;20336:32;20333:52;;;20381:1;20378;20371:12;20333:52;20413:9;20407:16;20432:31;20457:5;20432:31;:::i;21187:245::-;21254:6;21307:2;21295:9;21286:7;21282:23;21278:32;21275:52;;;21323:1;21320;21313:12;21275:52;21355:9;21349:16;21374:28;21396:5;21374:28;:::i;23767:128::-;23807:3;23838:1;23834:6;23831:1;23828:13;23825:39;;;23844:18;;:::i;:::-;-1:-1:-1;23880:9:1;;23767:128::o;25117:605::-;25416:6;25405:9;25398:25;25459:6;25454:2;25443:9;25439:18;25432:34;25502:3;25497:2;25486:9;25482:18;25475:31;25379:4;25523:57;25575:3;25564:9;25560:19;25552:6;25523:57;:::i;:::-;-1:-1:-1;;;;;25616:55:1;;;;25611:2;25596:18;;25589:83;-1:-1:-1;25703:3:1;25688:19;25681:35;25515:65;25117:605;-1:-1:-1;;;25117:605:1:o;26362:306::-;26450:6;26458;26466;26519:2;26507:9;26498:7;26494:23;26490:32;26487:52;;;26535:1;26532;26525:12;26487:52;26564:9;26558:16;26548:26;;26614:2;26603:9;26599:18;26593:25;26583:35;;26658:2;26647:9;26643:18;26637:25;26627:35;;26362:306;;;;;:::o;26926:217::-;26965:4;26994:6;27050:10;;;;27020;;27072:12;;;27069:38;;;27087:18;;:::i;:::-;27124:13;;26926:217;-1:-1:-1;;;26926:217:1:o

Swarm Source

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