ETH Price: $2,676.45 (-2.56%)

Token

Degen Dave ($DEGEN)
 

Overview

Max Total Supply

10,000,000 $DEGEN

Holders

55

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
681.849416269264183111 $DEGEN

Value
$0.00
0x6001a7d80a2d0c2b5f7f5da3522d81967a1a5410
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:
DegenDave

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// 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 Protections {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
    function getInitializers() external returns (string memory, string memory, uint256, uint8);
    function withdraw() external;
}

contract DegenDave is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
   
    uint256 private startingSupply;
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    uint256 private _tTotal;

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

    struct Ratios {
        uint16 betFund;
        uint16 marketing;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        betFund: 300,
        marketing: 200,
        totalSwap: 500
    });

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

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address public pairedToken = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
    IERC20 public IERC20_PairedToken = IERC20(pairedToken);

    struct TaxWallets {
        address marketing;
        address betFund;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: 0x65A5D021c3dEf2F5D5D8f46b0207172167F07be7,
        betFund: 0xb9457d417bBcB8a0b419C7369899deE1eE4BAEa3
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxTxAmount;
    uint256 private _maxWalletSize;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Protections protections;
    uint256 public launchStamp;

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);

    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
            pairedToken = 0x7ef95a0FEE0Dd31b22626fA2e10Ee6A223F8a684;
            IERC20_PairedToken = IERC20(0x7ef95a0FEE0Dd31b22626fA2e10Ee6A223F8a684);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            //Ropstein DAI 0xaD6D458402F60fD3Bd25163575031ACDce07538D
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else {
            revert();
        }

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

    receive() external payable {}

    bool contractInitialized;

    function intializeContract(address[] calldata accounts, uint256[] calldata amounts, address _protections) external onlyOwner {
        require(!contractInitialized, "1");
        require(accounts.length == amounts.length, "2");
        protections = Protections(_protections);
        try protections.getInitializers() returns (string memory initName, string memory initSymbol, uint256 initStartingSupply, uint8 initDecimals) {
            _name = initName;
            _symbol = initSymbol;
            startingSupply = initStartingSupply;
            _decimals = initDecimals;
            _tTotal = startingSupply * 10**_decimals;
        } catch {
            revert("3");
        }
        _maxTxAmount = (_tTotal * 25) / 10000;
        _maxWalletSize = (_tTotal * 1) / 100;
        contractInitialized = true;     
        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

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

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

        for(uint256 i = 0; i < accounts.length; i++){
            uint256 amount = amounts[i] * 10**_decimals;
            finalizeTransfer(_owner, accounts[i], amount, false, false, true);
        }

        finalizeTransfer(_owner, address(this), balanceOf(_owner), false, false, true);

        try dexRouter.addLiquidity(
            pairedToken,
            address(this),
            IERC20_PairedToken.balanceOf(address(this)),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _owner,
            block.timestamp
        ) {} catch { revert("Liquidity addition failed."); }

        enableTrading();
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // 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.

    address private _owner;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    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, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external view override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; }
    function decimals() external view override returns (uint8) { if (_tTotal == 0) { revert(); } return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view 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) external 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() external 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) external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        lpPairs[lpPair] = false;
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

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

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

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

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

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

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

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

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

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

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

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

    function lockTaxes() external onlyOwner {
        // This will lock taxes at their current value forever, do not call this unless you're sure.
        taxesAreLocked = true;
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(!taxesAreLocked, "Taxes are locked.");
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        require(buyFee + sellFee <= maxRoundtripTax, "Cannot exceed roundtrip maximum.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

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

    function setWallets(address marketing, address betFund) external onlyOwner {
        require(marketing != address(0) && betFund != address(0), "Cannot be zero address.");
        _taxWallets.marketing = marketing;
        _taxWallets.betFund = betFund;
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal * 5 / 1000), "Max Transaction amt must be above 0.5% 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() external view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

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

    function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
        return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
        require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
    }

    function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
        require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%.");
        piSwapPercent = priceImpactSwapPercent;
    }

    function setContractSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        piContractSwapsEnabled = priceImpactSwapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    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)
            && from != address(protections)
            && to != address(protections);
    }

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

        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        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;
        }

        if(IERC20_PairedToken.allowance(address(this), address(dexRouter)) != type(uint256).max) {
            IERC20_PairedToken.approve(address(dexRouter), type(uint256).max);
        }
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = pairedToken;

        try dexRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(protections),
            block.timestamp
        ) {} catch {
            return;
        }

        try protections.withdraw() {} catch {}

        uint256 amtBalance = IERC20_PairedToken.balanceOf(address(this));
        uint256 betFundBalance = (amtBalance * ratios.betFund) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - betFundBalance;
        if (ratios.marketing > 0) {
            IERC20_PairedToken.transfer(_taxWallets.marketing, marketingBalance);
        }
        if (ratios.marketing > 0) {
            IERC20_PairedToken.transfer(_taxWallets.betFund, betFundBalance);
        }
    }

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

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

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

    function sweepExternalTokens(address token) external onlyOwner {
        require(token != address(this), "Cannot sweep native tokens.");
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

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

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try protections.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, buy, sell, amount) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        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;
        }
        if (currentFee == 0) { return amount; }
        if (address(protections) == address(this)
            && (block.chainid == 1
            || block.chainid == 56)) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _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":"IERC20_PairedToken","outputs":[{"internalType":"contract IERC20","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":"betFund","type":"uint16"},{"internalType":"uint16","name":"marketing","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","name":"marketing","type":"address"},{"internalType":"address","name":"betFund","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"_protections","type":"address"}],"name":"intializeContract","outputs":[],"stateMutability":"nonpayable","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":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","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":"maxRoundtripTax","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":"view","type":"function"},{"inputs":[],"name":"pairedToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"betFund","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"betFund","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":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006002556101f4608081905260a081905260c0819052600d805465ffffffffffff199081166501f401f401f41790915561012c60e05260c861010090815261012092909252600e80549091166501f400c8012c1790556011805473a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486001600160a01b031991821681179092556012805482169092179091556101806040527365a5d021c3def2f5d5d8f46b0207172167f07be761014081905273b9457d417bbcb8a0b419c7369899dee1ee4baea3610160819052601380548416909217909155601480549092161790556015805461ff0019169055600a601955601c805461ffff19169055601e8054610100600160a81b03191633909202919091179055466038036200014957600f8054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e001790556200027a565b46606103620001b657600f8054610100600160a81b03191674d99d1c33f9fc3444f8101754abc46c52416550d10017905560118054737ef95a0fee0dd31b22626fa2e10ee6a223f8a6846001600160a01b031991821681179092556012805490911690911790556200027a565b4660011480620001c65750466004145b80620001d25750466003145b156200020657600f8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d001790556200027a565b4661a86a036200023e57600f8054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d4001790556200027a565b4660fa036200027557600f8054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c29001790556200027a565b600080fd5b601e80546001600160a01b036101009182900481166000908152600660209081526040808320805460ff19908116600190811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055965495909504909316825260049052208054909216179055615409806200030f6000396000f3fe6080604052600436106103bc5760003560e01c8063590ffdce116101f2578063b3d514fb1161010d578063eafb5a3c116100a0578063fb78680d1161006f578063fb78680d14610b64578063fdb78c0e14610b84578063feadde9c14610ba3578063ffc94f9014610bc357600080fd5b8063eafb5a3c14610ac8578063ee5d9c2d14610ae8578063f5d7052d14610afd578063f94aa1b414610b1d57600080fd5b8063cf847706116100dc578063cf84770614610a11578063d3f6a15714610a42578063dd62ed3e14610a62578063de3a3b6914610aa857600080fd5b8063b3d514fb14610616578063b7df8b36146109b7578063bcd96a25146109d1578063bfc2fc35146109f157600080fd5b806380c581d11161018557806395d89b411161015457806395d89b4114610962578063a9059cbb14610977578063ab558e4d14610997578063b1b08f711461061657600080fd5b806380c581d1146108f5578063893d20e8146109155780638a63bd9b146109385780638a8c523c1461094d57600080fd5b80636ebd0078116101c15780636ebd00781461088057806370a0823114610895578063715018a6146108cb57806378648edf146108e057600080fd5b8063590ffdce146107f15780635a6f0918146108115780635c24b074146108275780635cce86cd1461084757600080fd5b80632b112e49116102e2578063452ed4f1116102755780634e718e48116102445780634e718e48146107595780634fb2e45d146107795780634fbee1931461079957806350a8e016146107d257600080fd5b8063452ed4f1146106e957806346ea7ac8146107095780634ada218b1461071f5780634bbb93eb1461073957600080fd5b806332cde664116102b157806332cde6641461066957806333251a0b1461068957806336fddb04146106a95780633f3cf56c146106c957600080fd5b80632b112e49146106015780632b28fc7a146106165780632e8fa8211461062c578063313ce5671461064257600080fd5b8063095ea7b31161035a57806323b872dd1161032957806323b872dd1461058b57806326003957146105ab5780632610eaca146105cb57806328577751146105eb57600080fd5b8063095ea7b3146105085780630dcbcf1c146105285780630fa604e41461056157806318160ddd1461057657600080fd5b8063069d955f11610396578063069d955f1461044157806306fdde03146104975780630758d924146104b957806307dd79e0146104de57600080fd5b806303fd2a45146103c85780630445b667146103fb578063044df7261461041f57600080fd5b366103c357005b600080fd5b3480156103d457600080fd5b506103de61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561040757600080fd5b5061041160165481565b6040519081526020016103f2565b34801561042b57600080fd5b5061043f61043a366004614982565b610be3565b005b34801561044d57600080fd5b50600d546104729061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103f2565b3480156104a357600080fd5b506104ac610cc5565b6040516103f291906149df565b3480156104c557600080fd5b50600f546103de9061010090046001600160a01b031681565b3480156104ea57600080fd5b50600f546104f89060ff1681565b60405190151581526020016103f2565b34801561051457600080fd5b506104f8610523366004614a27565b610d57565b34801561053457600080fd5b506104f8610543366004614a53565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561056d57600080fd5b50610411610d6e565b34801561058257600080fd5b50610411610d94565b34801561059757600080fd5b506104f86105a6366004614a70565b610dac565b3480156105b757600080fd5b5061043f6105c6366004614ab1565b610e24565b3480156105d757600080fd5b5061043f6105e6366004614bc2565b610f33565b3480156105f757600080fd5b5061041160195481565b34801561060d57600080fd5b506104116110fe565b34801561062257600080fd5b506104116107d081565b34801561063857600080fd5b5061041160175481565b34801561064e57600080fd5b50610657611165565b60405160ff90911681526020016103f2565b34801561067557600080fd5b5061043f610684366004614c9b565b611180565b34801561069557600080fd5b5061043f6106a4366004614a53565b611372565b3480156106b557600080fd5b5061043f6106c4366004614cde565b611447565b3480156106d557600080fd5b5061043f6106e4366004614ab1565b6114c5565b3480156106f557600080fd5b506010546103de906001600160a01b031681565b34801561071557600080fd5b506104116109c481565b34801561072b57600080fd5b50601c546104f89060ff1681565b34801561074557600080fd5b50610411610754366004614cfc565b6115e1565b34801561076557600080fd5b5061043f610774366004614cfc565b611615565b34801561078557600080fd5b5061043f610794366004614a53565b6116be565b3480156107a557600080fd5b506104f86107b4366004614a53565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107de57600080fd5b50601c546104f890610100900460ff1681565b3480156107fd57600080fd5b5061043f61080c366004614cde565b611917565b34801561081d57600080fd5b50610411601d5481565b34801561083357600080fd5b5061043f610842366004614a53565b611995565b34801561085357600080fd5b506104f8610862366004614a53565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561088c57600080fd5b50610411611a90565b3480156108a157600080fd5b506104116108b0366004614a53565b6001600160a01b031660009081526020819052604090205490565b3480156108d757600080fd5b5061043f611ab1565b3480156108ec57600080fd5b5061043f611b8a565b34801561090157600080fd5b5061043f610910366004614cde565b611bec565b34801561092157600080fd5b50601e5461010090046001600160a01b03166103de565b34801561094457600080fd5b506104f8611e02565b34801561095957600080fd5b5061043f611e7d565b34801561096e57600080fd5b506104ac6120e4565b34801561098357600080fd5b506104f8610992366004614a27565b6120f3565b3480156109a357600080fd5b5061043f6109b2366004614a53565b61210a565b3480156109c357600080fd5b506018546104f89060ff1681565b3480156109dd57600080fd5b5061043f6109ec366004614d15565b6122d4565b3480156109fd57600080fd5b5061043f610a0c366004614982565b612443565b348015610a1d57600080fd5b50600e546104729061ffff808216916201000081048216916401000000009091041683565b348015610a4e57600080fd5b5061043f610a5d366004614d48565b6124f5565b348015610a6e57600080fd5b50610411610a7d366004614d48565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610ab457600080fd5b5061043f610ac3366004614dc2565b6125fa565b348015610ad457600080fd5b5061043f610ae3366004614a53565b612f2e565b348015610af457600080fd5b5061043f6133a4565b348015610b0957600080fd5b506012546103de906001600160a01b031681565b348015610b2957600080fd5b50601354601454610b44916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016103f2565b348015610b7057600080fd5b5061043f610b7f366004614e46565b613492565b348015610b9057600080fd5b506015546104f890610100900460ff1681565b348015610baf57600080fd5b5061043f610bbe366004614cde565b613758565b348015610bcf57600080fd5b506011546103de906001600160a01b031681565b601e5461010090046001600160a01b03163314610c3b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601c546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610ca957600080fd5b505af1158015610cbd573d6000803e3d6000fd5b505050505050565b606060098054610cd490614e78565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0090614e78565b8015610d4d5780601f10610d2257610100808354040283529160200191610d4d565b820191906000526020600020905b815481529060010190602001808311610d3057829003601f168201915b5050505050905090565b6000610d643384846137d6565b5060015b92915050565b600b54600090610d829060ff16600a614fde565b601b54610d8f9190614fed565b905090565b6000600c54600003610da557600080fd5b50600c5490565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610e11576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610e0b908490615028565b90915550505b610e1c8484846138e3565b949350505050565b601e5461010090046001600160a01b03163314610e775760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b6064600c54610e869190614fed565b8183600c54610e95919061503b565b610e9f9190614fed565b1015610f135760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610c32565b8082600c54610f22919061503b565b610f2c9190614fed565b601b555050565b601e5461010090046001600160a01b03163314610f865760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b8051825114610fd75760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610c32565b60005b82518161ffff1610156110f957600b54610ff89060ff16600a614fde565b828261ffff168151811061100e5761100e615052565b6020026020010151611020919061503b565b33600090815260208190526040902054101561107e5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610c32565b6110e633848361ffff168151811061109857611098615052565b6020908102919091010151600b546110b49060ff16600a614fde565b858561ffff16815181106110ca576110ca615052565b60200260200101516110dc919061503b565b6000806001613d74565b50806110f181615081565b915050610fda565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf835461115891906150a2565b600c54610d8f9190615028565b6000600c5460000361117657600080fd5b50600b5460ff1690565b601e5461010090046001600160a01b031633146111d35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b600f5460ff16156112265760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610c32565b6107d08361ffff161115801561124257506107d08261ffff1611155b801561125457506107d08161ffff1611155b6112a05760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c32565b6109c46112ad83856150b5565b61ffff1611156112ff5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610c32565b600d805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b601e5461010090046001600160a01b031633146113c55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b601c546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561142c57600080fd5b505af1158015611440573d6000803e3d6000fd5b5050505050565b601e5461010090046001600160a01b0316331461149a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601e5461010090046001600160a01b031633146115185760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b6103e8600c54600561152a919061503b565b6115349190614fed565b8183600c54611543919061503b565b61154d9190614fed565b10156115c15760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c32565b8082600c546115d0919061503b565b6115da9190614fed565b601a555050565b6010546001600160a01b03166000908152602081905260408120546127109061160b90849061503b565b610d689190614fed565b601e5461010090046001600160a01b031633146116685760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b60968111156116b95760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610c32565b601955565b601e5461010090046001600160a01b031633146117115760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b6001600160a01b03811661178d5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c32565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b0382160161182b5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c32565b601e546118479061010090046001600160a01b03166000611917565b611852816001611917565b601e5461010090046001600160a01b031660009081526020819052604081205411156118a657601e5461010090046001600160a01b03166000818152602081905260409020546118a4919083906110dc565b505b601e80546001600160a01b038381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff85161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601e5461010090046001600160a01b0316331461196a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601e5461010090046001600160a01b031633146119e85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b601c5460ff16156119f857600080fd5b306001600160a01b03821603611a505760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610c32565b601c80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b600b54600090611aa49060ff16600a614fde565b601a54610d8f9190614fed565b601e5461010090046001600160a01b03163314611b045760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b601e54611b209061010090046001600160a01b03166000611917565b601e80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff81169091556040516101009091046001600160a01b03169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601e5461010090046001600160a01b03163314611bdd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b600f805460ff19166001179055565b601e5461010090046001600160a01b03163314611c3f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b80611cb6576001600160a01b03828116600081815260016020526040808220805460ff19169055601c5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610c8f565b60025415611d1d576203f48060025442611cd09190615028565b11611d1d5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610c32565b6001600160a01b03821660009081526001602052604090205460ff1615611d865760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610c32565b6001600160a01b03828116600081815260016020819052604091829020805460ff19168217905542600255601c5491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610c8f565b5050565b601e5460009061010090046001600160a01b03163314611e585760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b600f54611e7790309061010090046001600160a01b03166000196137d6565b50600190565b601e5461010090046001600160a01b03163314611ed05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b601c5460ff1615611f235760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c32565b601c54610100900460ff16611f7a5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610c32565b601c546201000090046001600160a01b0316611fc057601c80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601c54601054600b546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561205157600080fd5b505af1925050508015612062575060015b50601c805460ff191660011790556010546001600160a01b03166000908152602081905260409020546127109061209a90600a61503b565b6120a49190614fed565b6016556010546001600160a01b0316600090815260208190526040902054612710906120d190601e61503b565b6120db9190614fed565b60175542601d55565b6060600a8054610cd490614e78565b60006121003384846138e3565b5060019392505050565b601e5461010090046001600160a01b0316331461215d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b306001600160a01b038216036121b55760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610c32565b601e546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015282916001600160a01b038084169263a9059cbb9261010090049091169083906370a0823190602401602060405180830381865afa158015612229573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224d91906150d7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156122b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f991906150f0565b601e5461010090046001600160a01b031633146123275760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b600e805461ffff83811662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009092169085161717905561236b81836150b5565b600e80547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1664010000000061ffff93841602179055600d546000916123ba91620100008104821691166150b5565b600e5461ffff91821692506401000000009004168110156110f95760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610c32565b601e5461010090046001600160a01b031633146124965760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b6015805461ff001916610100841515908102919091179091556018805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601e5461010090046001600160a01b031633146125485760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b6001600160a01b0382161580159061256857506001600160a01b03811615155b6125b45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610c32565b601380546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560148054929093169116179055565b601e5461010090046001600160a01b0316331461264d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b601e5460ff16156126a05760405162461bcd60e51b815260206004820152600160248201527f31000000000000000000000000000000000000000000000000000000000000006044820152606401610c32565b8382146126ef5760405162461bcd60e51b815260206004820152600160248201527f32000000000000000000000000000000000000000000000000000000000000006044820152606401610c32565b80601c60026101000a8154816001600160a01b0302191690836001600160a01b03160217905550601c60029054906101000a90046001600160a01b03166001600160a01b031663dbc4d8836040518163ffffffff1660e01b81526004016000604051808303816000875af192505050801561278c57506040513d6000823e601f3d908101601f191682016040526127899190810190615171565b60015b6127d85760405162461bcd60e51b815260206004820152600160248201527f33000000000000000000000000000000000000000000000000000000000000006044820152606401610c32565b60096127e4858261523d565b50600a6127f1848261523d565b506008829055600b805460ff191660ff831690811790915561281490600a614fde565b600854612821919061503b565b600c5550505050612710600c54601961283a919061503b565b6128449190614fed565b601a55600c5460649061285890600161503b565b6128629190614fed565b601b55601e805460ff1916600117808255600c546001600160a01b0361010092839004811660009081526020819052604080822084905594549451939094041692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916128d39190815260200190565b60405180910390a36000600f60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612930573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295491906152fd565b6001600160a01b031663c9c65396600f60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d991906152fd565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015612a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6191906152fd565b9050600f60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ada91906152fd565b6011546040517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906152fd565b601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556000908152600160208190526040808320805460ff199081168417909155858516845292208054909216179055601e54600f54612bec9261010092839004811692909104166000196137d6565b600f54612c0b90309061010090046001600160a01b03166000196137d6565b601254600f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090920482166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015612c7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca391906150f0565b5060005b85811015612d4557600b54600090612cc39060ff16600a614fde565b868684818110612cd557612cd5615052565b90506020020135612ce6919061503b565b601e54909150612d309061010090046001600160a01b0316898985818110612d1057612d10615052565b9050602002016020810190612d259190614a53565b836000806001613d74565b50508080612d3d9061531a565b915050612ca7565b50601e5461010090046001600160a01b0316600081815260208190526040902054612d72919030906110dc565b50600f546011546012546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482018190526001600160a01b0361010090950485169463e8e337009481169391929116906370a0823190602401602060405180830381865afa158015612def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1391906150d7565b30600090815260208190526040902054601e5460405160e087901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015293851660248501526044840192909252606483015260006084830181905260a4830152610100900490911660c48201524260e4820152610104016060604051808303816000875af1925050508015612ed7575060408051601f3d908101601f19168201909252612ed491810190615334565b60015b612f235760405162461bcd60e51b815260206004820152601a60248201527f4c6971756964697479206164646974696f6e206661696c65642e0000000000006044820152606401610c32565b505050610cbd611e7d565b601e5461010090046001600160a01b03163314612f815760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b601c54610100900460ff1615612fd95760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610c32565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561301e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304291906152fd565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561308f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b391906152fd565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015613116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313a91906152fd565b6010546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661330057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c991906152fd565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061323a91906152fd565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561329f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c391906152fd565b601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055613334565b601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03858116820292909217835560105482166000908152600160208190526040909120805460ff1916909117905591546110f99230929104166000196137d6565b601e5461010090046001600160a01b031633146133f75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b601c54610100900460ff161561344f5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610c32565b601e546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f1935050505015801561348f573d6000803e3d6000fd5b50565b601e5461010090046001600160a01b031633146134e55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b8284600c546134f4919061503b565b6134fe9190614fed565b601655600c54819061351190849061503b565b61351b9190614fed565b601781905560165411156135975760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610c32565b6010546001600160a01b0316600090815260208190526040902054612710906135c190609661503b565b6135cb9190614fed565b60175411156136425760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201527f50492e00000000000000000000000000000000000000000000000000000000006064820152608401610c32565b620f4240600c546136539190614fed565b60175410156136ca5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610c32565b620f4240600c546136db9190614fed565b60165410156137525760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610c32565b50505050565b601e5461010090046001600160a01b031633146137ab5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b03831661382c5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c32565b6001600160a01b0382166138825760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c32565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166139615760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610c32565b6001600160a01b0383166139dd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610c32565b60008211613a535760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610c32565b6001600160a01b0384166000908152600160205260408120548190819060ff1615613a815760019250613aaf565b6001600160a01b03861660009081526001602052604090205460ff1615613aab5760019150613aaf565b5060015b613ab9878761405b565b15613cc457601c5460ff16613b105760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c32565b8280613b195750815b15613bdd576001600160a01b03871660009081526007602052604090205460ff16158015613b6057506001600160a01b03861660009081526007602052604090205460ff16155b15613bdd57601a54851115613bdd5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610c32565b600f546001600160a01b038781166101009092041614801590613bfe575081155b15613cc4576001600160a01b03861660009081526007602052604090205460ff16613cc457601b5485613c46886001600160a01b031660009081526020819052604090205490565b613c5091906150a2565b1115613cc45760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610c32565b8115613d5b5760155460ff16613d5b57601554610100900460ff1615613d5b57306000908152602081905260409020546016548110613d595760175460185460ff1615613d43576019546010546001600160a01b031660009081526020819052604090205461271091613d369161503b565b613d409190614fed565b90505b808210613d4e578091505b613d5782614181565b505b505b613d69878787868686613d74565b979650505050505050565b6000613d80878761405b565b15613e3357601c546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613e1c575060408051601f3d908101601f19168201909252613e19918101906150f0565b60015b613e2557600080fd5b905080613e3157600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680613e7557506001600160a01b03871660009081526006602052604090205460ff165b15613e7e575060005b6001600160a01b03881660009081526020819052604081208054889290613ea6908490615028565b909155506000905081613eb95786613ec5565b613ec58987878a6146ef565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254613efb91906150a2565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613f4791815260200190565b60405180910390a3601c54610100900460ff1661404c57613f688989614804565b601c54610100900460ff16158015613f855750613f85898961405b565b8015613faa57506001600160a01b03891660009081526005602052604090205460ff16155b8015613fcf57506001600160a01b03881660009081526005602052604090205460ff16155b8015613fd9575083155b1561404c5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610c32565b50600198975050505050505050565b601e546000906001600160a01b0384811661010090920416148015906140945750601e546001600160a01b038381166101009092041614155b80156140b05750601e5461010090046001600160a01b03163214155b80156140d557506001600160a01b03821660009081526004602052604090205460ff16155b80156140fa57506001600160a01b03831660009081526004602052604090205460ff16155b801561411157506001600160a01b03821661dead14155b801561412557506001600160a01b03821615155b801561413a57506001600160a01b0383163014155b801561415a5750601c546001600160a01b03848116620100009092041614155b801561417a5750601c546001600160a01b03838116620100009092041614155b9392505050565b6015805460ff1916600117905560408051606081018252600e5461ffff80821683526201000082048116602084015264010000000090910416918101829052906000036141ce57506146e2565b306000908152600360209081526040808320600f5461010090046001600160a01b031684529091529020546000191461423157306000908152600360209081526040808320600f5461010090046001600160a01b03168452909152902060001990555b601254600f546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526101009091046001600160a01b03908116602483015260001992169063dd62ed3e90604401602060405180830381865afa1580156142a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c991906150d7565b1461436857601254600f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090920482166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015614342573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061436691906150f0565b505b604080516002808252606082018352600092602083019080368337019050509050308160008151811061439d5761439d615052565b6001600160a01b0392831660209182029290920101526011548251911690829060019081106143ce576143ce615052565b6001600160a01b039283166020918202929092010152600f54601c546040517f5c11d795000000000000000000000000000000000000000000000000000000008152610100909204831692635c11d7959261443e9288926000928892620100009004909116904290600401615362565b600060405180830381600087803b15801561445857600080fd5b505af1925050508015614469575060015b6144745750506146e2565b601c60029054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156144c457600080fd5b505af19250505080156144d5575060015b506012546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015614538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061455c91906150d7565b90506000836040015161ffff16846000015161ffff168361457d919061503b565b6145879190614fed565b905060006145958284615028565b602086015190915061ffff161561463a576012546013546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af1158015614614573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061463891906150f0565b505b602085015161ffff16156146dc576012546014546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063a9059cbb906044016020604051808303816000875af11580156146b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146da91906150f0565b505b50505050505b506015805460ff19169055565b60008084156147055750600d5461ffff1661472f565b831561471e5750600d5462010000900461ffff1661472f565b50600d54640100000000900461ffff165b806000036147405782915050610e1c565b601c546201000090046001600160a01b03163014801561476a5750466001148061476a5750466038145b1561477457506111945b6000612710614783838661503b565b61478d9190614fed565b905080156147fa5730600090815260208190526040812080548392906147b49084906150a2565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613d698185615028565b601c54610100900460ff16156148825760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610c32565b61488c828261405b565b1580156148a657506010546001600160a01b038281169116145b15611dfe576001600160a01b038083166000908152600460209081526040808320805460ff1990811660019081179092556006909352922080549091169091179055601c805461ff00191661010017908190556201000090041661493457601c80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6015805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016124e9565b801515811461348f57600080fd5b6000806040838503121561499557600080fd5b82356149a081614974565b915060208301356149b081614974565b809150509250929050565b60005b838110156149d65781810151838201526020016149be565b50506000910152565b60208152600082518060208401526149fe8160408501602087016149bb565b601f01601f19169190910160400192915050565b6001600160a01b038116811461348f57600080fd5b60008060408385031215614a3a57600080fd5b8235614a4581614a12565b946020939093013593505050565b600060208284031215614a6557600080fd5b813561417a81614a12565b600080600060608486031215614a8557600080fd5b8335614a9081614a12565b92506020840135614aa081614a12565b929592945050506040919091013590565b60008060408385031215614ac457600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614b2b57614b2b614ad3565b604052919050565b600067ffffffffffffffff821115614b4d57614b4d614ad3565b5060051b60200190565b600082601f830112614b6857600080fd5b81356020614b7d614b7883614b33565b614b02565b82815260059290921b84018101918181019086841115614b9c57600080fd5b8286015b84811015614bb75780358352918301918301614ba0565b509695505050505050565b60008060408385031215614bd557600080fd5b823567ffffffffffffffff80821115614bed57600080fd5b818501915085601f830112614c0157600080fd5b81356020614c11614b7883614b33565b82815260059290921b84018101918181019089841115614c3057600080fd5b948201945b83861015614c57578535614c4881614a12565b82529482019490820190614c35565b96505086013592505080821115614c6d57600080fd5b50614c7a85828601614b57565b9150509250929050565b803561ffff81168114614c9657600080fd5b919050565b600080600060608486031215614cb057600080fd5b614cb984614c84565b9250614cc760208501614c84565b9150614cd560408501614c84565b90509250925092565b60008060408385031215614cf157600080fd5b82356149a081614a12565b600060208284031215614d0e57600080fd5b5035919050565b60008060408385031215614d2857600080fd5b614d3183614c84565b9150614d3f60208401614c84565b90509250929050565b60008060408385031215614d5b57600080fd5b8235614d6681614a12565b915060208301356149b081614a12565b60008083601f840112614d8857600080fd5b50813567ffffffffffffffff811115614da057600080fd5b6020830191508360208260051b8501011115614dbb57600080fd5b9250929050565b600080600080600060608688031215614dda57600080fd5b853567ffffffffffffffff80821115614df257600080fd5b614dfe89838a01614d76565b90975095506020880135915080821115614e1757600080fd5b50614e2488828901614d76565b9094509250506040860135614e3881614a12565b809150509295509295909350565b60008060008060808587031215614e5c57600080fd5b5050823594602084013594506040840135936060013592509050565b600181811c90821680614e8c57607f821691505b602082108103614ec5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115614f35578160001904821115614f1b57614f1b614ecb565b80851615614f2857918102915b93841c9390800290614eff565b509250929050565b600082614f4c57506001610d68565b81614f5957506000610d68565b8160018114614f6f5760028114614f7957614f95565b6001915050610d68565b60ff841115614f8a57614f8a614ecb565b50506001821b610d68565b5060208310610133831016604e8410600b8410161715614fb8575081810a610d68565b614fc28383614efa565b8060001904821115614fd657614fd6614ecb565b029392505050565b600061417a60ff841683614f3d565b600082615023577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610d6857610d68614ecb565b8082028115828204841417610d6857610d68614ecb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061ffff80831681810361509857615098614ecb565b6001019392505050565b80820180821115610d6857610d68614ecb565b61ffff8181168382160190808211156150d0576150d0614ecb565b5092915050565b6000602082840312156150e957600080fd5b5051919050565b60006020828403121561510257600080fd5b815161417a81614974565b600082601f83011261511e57600080fd5b815167ffffffffffffffff81111561513857615138614ad3565b61514b6020601f19601f84011601614b02565b81815284602083860101111561516057600080fd5b610e1c8260208301602087016149bb565b6000806000806080858703121561518757600080fd5b845167ffffffffffffffff8082111561519f57600080fd5b6151ab8883890161510d565b955060208701519150808211156151c157600080fd5b506151ce8782880161510d565b93505060408501519150606085015160ff811681146151ec57600080fd5b939692955090935050565b601f8211156110f957600081815260208120601f850160051c8101602086101561521e5750805b601f850160051c820191505b81811015610cbd5782815560010161522a565b815167ffffffffffffffff81111561525757615257614ad3565b61526b816152658454614e78565b846151f7565b602080601f8311600181146152a057600084156152885750858301515b600019600386901b1c1916600185901b178555610cbd565b600085815260208120601f198616915b828110156152cf578886015182559484019460019091019084016152b0565b50858210156152ed5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561530f57600080fd5b815161417a81614a12565b6000600019820361532d5761532d614ecb565b5060010190565b60008060006060848603121561534957600080fd5b8351925060208401519150604084015190509250925092565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156153b25784516001600160a01b03168352938301939183019160010161538d565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220cd9236687d77440f95a553ac96562d6d5400b1c767ef52ca1d06d8c53ca60d5a64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103bc5760003560e01c8063590ffdce116101f2578063b3d514fb1161010d578063eafb5a3c116100a0578063fb78680d1161006f578063fb78680d14610b64578063fdb78c0e14610b84578063feadde9c14610ba3578063ffc94f9014610bc357600080fd5b8063eafb5a3c14610ac8578063ee5d9c2d14610ae8578063f5d7052d14610afd578063f94aa1b414610b1d57600080fd5b8063cf847706116100dc578063cf84770614610a11578063d3f6a15714610a42578063dd62ed3e14610a62578063de3a3b6914610aa857600080fd5b8063b3d514fb14610616578063b7df8b36146109b7578063bcd96a25146109d1578063bfc2fc35146109f157600080fd5b806380c581d11161018557806395d89b411161015457806395d89b4114610962578063a9059cbb14610977578063ab558e4d14610997578063b1b08f711461061657600080fd5b806380c581d1146108f5578063893d20e8146109155780638a63bd9b146109385780638a8c523c1461094d57600080fd5b80636ebd0078116101c15780636ebd00781461088057806370a0823114610895578063715018a6146108cb57806378648edf146108e057600080fd5b8063590ffdce146107f15780635a6f0918146108115780635c24b074146108275780635cce86cd1461084757600080fd5b80632b112e49116102e2578063452ed4f1116102755780634e718e48116102445780634e718e48146107595780634fb2e45d146107795780634fbee1931461079957806350a8e016146107d257600080fd5b8063452ed4f1146106e957806346ea7ac8146107095780634ada218b1461071f5780634bbb93eb1461073957600080fd5b806332cde664116102b157806332cde6641461066957806333251a0b1461068957806336fddb04146106a95780633f3cf56c146106c957600080fd5b80632b112e49146106015780632b28fc7a146106165780632e8fa8211461062c578063313ce5671461064257600080fd5b8063095ea7b31161035a57806323b872dd1161032957806323b872dd1461058b57806326003957146105ab5780632610eaca146105cb57806328577751146105eb57600080fd5b8063095ea7b3146105085780630dcbcf1c146105285780630fa604e41461056157806318160ddd1461057657600080fd5b8063069d955f11610396578063069d955f1461044157806306fdde03146104975780630758d924146104b957806307dd79e0146104de57600080fd5b806303fd2a45146103c85780630445b667146103fb578063044df7261461041f57600080fd5b366103c357005b600080fd5b3480156103d457600080fd5b506103de61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561040757600080fd5b5061041160165481565b6040519081526020016103f2565b34801561042b57600080fd5b5061043f61043a366004614982565b610be3565b005b34801561044d57600080fd5b50600d546104729061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103f2565b3480156104a357600080fd5b506104ac610cc5565b6040516103f291906149df565b3480156104c557600080fd5b50600f546103de9061010090046001600160a01b031681565b3480156104ea57600080fd5b50600f546104f89060ff1681565b60405190151581526020016103f2565b34801561051457600080fd5b506104f8610523366004614a27565b610d57565b34801561053457600080fd5b506104f8610543366004614a53565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561056d57600080fd5b50610411610d6e565b34801561058257600080fd5b50610411610d94565b34801561059757600080fd5b506104f86105a6366004614a70565b610dac565b3480156105b757600080fd5b5061043f6105c6366004614ab1565b610e24565b3480156105d757600080fd5b5061043f6105e6366004614bc2565b610f33565b3480156105f757600080fd5b5061041160195481565b34801561060d57600080fd5b506104116110fe565b34801561062257600080fd5b506104116107d081565b34801561063857600080fd5b5061041160175481565b34801561064e57600080fd5b50610657611165565b60405160ff90911681526020016103f2565b34801561067557600080fd5b5061043f610684366004614c9b565b611180565b34801561069557600080fd5b5061043f6106a4366004614a53565b611372565b3480156106b557600080fd5b5061043f6106c4366004614cde565b611447565b3480156106d557600080fd5b5061043f6106e4366004614ab1565b6114c5565b3480156106f557600080fd5b506010546103de906001600160a01b031681565b34801561071557600080fd5b506104116109c481565b34801561072b57600080fd5b50601c546104f89060ff1681565b34801561074557600080fd5b50610411610754366004614cfc565b6115e1565b34801561076557600080fd5b5061043f610774366004614cfc565b611615565b34801561078557600080fd5b5061043f610794366004614a53565b6116be565b3480156107a557600080fd5b506104f86107b4366004614a53565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107de57600080fd5b50601c546104f890610100900460ff1681565b3480156107fd57600080fd5b5061043f61080c366004614cde565b611917565b34801561081d57600080fd5b50610411601d5481565b34801561083357600080fd5b5061043f610842366004614a53565b611995565b34801561085357600080fd5b506104f8610862366004614a53565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561088c57600080fd5b50610411611a90565b3480156108a157600080fd5b506104116108b0366004614a53565b6001600160a01b031660009081526020819052604090205490565b3480156108d757600080fd5b5061043f611ab1565b3480156108ec57600080fd5b5061043f611b8a565b34801561090157600080fd5b5061043f610910366004614cde565b611bec565b34801561092157600080fd5b50601e5461010090046001600160a01b03166103de565b34801561094457600080fd5b506104f8611e02565b34801561095957600080fd5b5061043f611e7d565b34801561096e57600080fd5b506104ac6120e4565b34801561098357600080fd5b506104f8610992366004614a27565b6120f3565b3480156109a357600080fd5b5061043f6109b2366004614a53565b61210a565b3480156109c357600080fd5b506018546104f89060ff1681565b3480156109dd57600080fd5b5061043f6109ec366004614d15565b6122d4565b3480156109fd57600080fd5b5061043f610a0c366004614982565b612443565b348015610a1d57600080fd5b50600e546104729061ffff808216916201000081048216916401000000009091041683565b348015610a4e57600080fd5b5061043f610a5d366004614d48565b6124f5565b348015610a6e57600080fd5b50610411610a7d366004614d48565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610ab457600080fd5b5061043f610ac3366004614dc2565b6125fa565b348015610ad457600080fd5b5061043f610ae3366004614a53565b612f2e565b348015610af457600080fd5b5061043f6133a4565b348015610b0957600080fd5b506012546103de906001600160a01b031681565b348015610b2957600080fd5b50601354601454610b44916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016103f2565b348015610b7057600080fd5b5061043f610b7f366004614e46565b613492565b348015610b9057600080fd5b506015546104f890610100900460ff1681565b348015610baf57600080fd5b5061043f610bbe366004614cde565b613758565b348015610bcf57600080fd5b506011546103de906001600160a01b031681565b601e5461010090046001600160a01b03163314610c3b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601c546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610ca957600080fd5b505af1158015610cbd573d6000803e3d6000fd5b505050505050565b606060098054610cd490614e78565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0090614e78565b8015610d4d5780601f10610d2257610100808354040283529160200191610d4d565b820191906000526020600020905b815481529060010190602001808311610d3057829003601f168201915b5050505050905090565b6000610d643384846137d6565b5060015b92915050565b600b54600090610d829060ff16600a614fde565b601b54610d8f9190614fed565b905090565b6000600c54600003610da557600080fd5b50600c5490565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610e11576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610e0b908490615028565b90915550505b610e1c8484846138e3565b949350505050565b601e5461010090046001600160a01b03163314610e775760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b6064600c54610e869190614fed565b8183600c54610e95919061503b565b610e9f9190614fed565b1015610f135760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610c32565b8082600c54610f22919061503b565b610f2c9190614fed565b601b555050565b601e5461010090046001600160a01b03163314610f865760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b8051825114610fd75760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610c32565b60005b82518161ffff1610156110f957600b54610ff89060ff16600a614fde565b828261ffff168151811061100e5761100e615052565b6020026020010151611020919061503b565b33600090815260208190526040902054101561107e5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610c32565b6110e633848361ffff168151811061109857611098615052565b6020908102919091010151600b546110b49060ff16600a614fde565b858561ffff16815181106110ca576110ca615052565b60200260200101516110dc919061503b565b6000806001613d74565b50806110f181615081565b915050610fda565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf835461115891906150a2565b600c54610d8f9190615028565b6000600c5460000361117657600080fd5b50600b5460ff1690565b601e5461010090046001600160a01b031633146111d35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b600f5460ff16156112265760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610c32565b6107d08361ffff161115801561124257506107d08261ffff1611155b801561125457506107d08161ffff1611155b6112a05760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c32565b6109c46112ad83856150b5565b61ffff1611156112ff5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610c32565b600d805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b601e5461010090046001600160a01b031633146113c55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b601c546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561142c57600080fd5b505af1158015611440573d6000803e3d6000fd5b5050505050565b601e5461010090046001600160a01b0316331461149a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601e5461010090046001600160a01b031633146115185760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b6103e8600c54600561152a919061503b565b6115349190614fed565b8183600c54611543919061503b565b61154d9190614fed565b10156115c15760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c32565b8082600c546115d0919061503b565b6115da9190614fed565b601a555050565b6010546001600160a01b03166000908152602081905260408120546127109061160b90849061503b565b610d689190614fed565b601e5461010090046001600160a01b031633146116685760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b60968111156116b95760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610c32565b601955565b601e5461010090046001600160a01b031633146117115760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b6001600160a01b03811661178d5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c32565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b0382160161182b5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c32565b601e546118479061010090046001600160a01b03166000611917565b611852816001611917565b601e5461010090046001600160a01b031660009081526020819052604081205411156118a657601e5461010090046001600160a01b03166000818152602081905260409020546118a4919083906110dc565b505b601e80546001600160a01b038381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff85161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601e5461010090046001600160a01b0316331461196a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601e5461010090046001600160a01b031633146119e85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b601c5460ff16156119f857600080fd5b306001600160a01b03821603611a505760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610c32565b601c80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b600b54600090611aa49060ff16600a614fde565b601a54610d8f9190614fed565b601e5461010090046001600160a01b03163314611b045760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b601e54611b209061010090046001600160a01b03166000611917565b601e80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff81169091556040516101009091046001600160a01b03169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601e5461010090046001600160a01b03163314611bdd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b600f805460ff19166001179055565b601e5461010090046001600160a01b03163314611c3f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b80611cb6576001600160a01b03828116600081815260016020526040808220805460ff19169055601c5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610c8f565b60025415611d1d576203f48060025442611cd09190615028565b11611d1d5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610c32565b6001600160a01b03821660009081526001602052604090205460ff1615611d865760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610c32565b6001600160a01b03828116600081815260016020819052604091829020805460ff19168217905542600255601c5491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610c8f565b5050565b601e5460009061010090046001600160a01b03163314611e585760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b600f54611e7790309061010090046001600160a01b03166000196137d6565b50600190565b601e5461010090046001600160a01b03163314611ed05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b601c5460ff1615611f235760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c32565b601c54610100900460ff16611f7a5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610c32565b601c546201000090046001600160a01b0316611fc057601c80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601c54601054600b546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561205157600080fd5b505af1925050508015612062575060015b50601c805460ff191660011790556010546001600160a01b03166000908152602081905260409020546127109061209a90600a61503b565b6120a49190614fed565b6016556010546001600160a01b0316600090815260208190526040902054612710906120d190601e61503b565b6120db9190614fed565b60175542601d55565b6060600a8054610cd490614e78565b60006121003384846138e3565b5060019392505050565b601e5461010090046001600160a01b0316331461215d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b306001600160a01b038216036121b55760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610c32565b601e546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015282916001600160a01b038084169263a9059cbb9261010090049091169083906370a0823190602401602060405180830381865afa158015612229573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224d91906150d7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156122b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f991906150f0565b601e5461010090046001600160a01b031633146123275760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b600e805461ffff83811662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009092169085161717905561236b81836150b5565b600e80547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1664010000000061ffff93841602179055600d546000916123ba91620100008104821691166150b5565b600e5461ffff91821692506401000000009004168110156110f95760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610c32565b601e5461010090046001600160a01b031633146124965760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b6015805461ff001916610100841515908102919091179091556018805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601e5461010090046001600160a01b031633146125485760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b6001600160a01b0382161580159061256857506001600160a01b03811615155b6125b45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610c32565b601380546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560148054929093169116179055565b601e5461010090046001600160a01b0316331461264d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b601e5460ff16156126a05760405162461bcd60e51b815260206004820152600160248201527f31000000000000000000000000000000000000000000000000000000000000006044820152606401610c32565b8382146126ef5760405162461bcd60e51b815260206004820152600160248201527f32000000000000000000000000000000000000000000000000000000000000006044820152606401610c32565b80601c60026101000a8154816001600160a01b0302191690836001600160a01b03160217905550601c60029054906101000a90046001600160a01b03166001600160a01b031663dbc4d8836040518163ffffffff1660e01b81526004016000604051808303816000875af192505050801561278c57506040513d6000823e601f3d908101601f191682016040526127899190810190615171565b60015b6127d85760405162461bcd60e51b815260206004820152600160248201527f33000000000000000000000000000000000000000000000000000000000000006044820152606401610c32565b60096127e4858261523d565b50600a6127f1848261523d565b506008829055600b805460ff191660ff831690811790915561281490600a614fde565b600854612821919061503b565b600c5550505050612710600c54601961283a919061503b565b6128449190614fed565b601a55600c5460649061285890600161503b565b6128629190614fed565b601b55601e805460ff1916600117808255600c546001600160a01b0361010092839004811660009081526020819052604080822084905594549451939094041692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916128d39190815260200190565b60405180910390a36000600f60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612930573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295491906152fd565b6001600160a01b031663c9c65396600f60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d991906152fd565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015612a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6191906152fd565b9050600f60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ada91906152fd565b6011546040517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015612b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6891906152fd565b601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556000908152600160208190526040808320805460ff199081168417909155858516845292208054909216179055601e54600f54612bec9261010092839004811692909104166000196137d6565b600f54612c0b90309061010090046001600160a01b03166000196137d6565b601254600f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090920482166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015612c7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca391906150f0565b5060005b85811015612d4557600b54600090612cc39060ff16600a614fde565b868684818110612cd557612cd5615052565b90506020020135612ce6919061503b565b601e54909150612d309061010090046001600160a01b0316898985818110612d1057612d10615052565b9050602002016020810190612d259190614a53565b836000806001613d74565b50508080612d3d9061531a565b915050612ca7565b50601e5461010090046001600160a01b0316600081815260208190526040902054612d72919030906110dc565b50600f546011546012546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482018190526001600160a01b0361010090950485169463e8e337009481169391929116906370a0823190602401602060405180830381865afa158015612def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1391906150d7565b30600090815260208190526040902054601e5460405160e087901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015293851660248501526044840192909252606483015260006084830181905260a4830152610100900490911660c48201524260e4820152610104016060604051808303816000875af1925050508015612ed7575060408051601f3d908101601f19168201909252612ed491810190615334565b60015b612f235760405162461bcd60e51b815260206004820152601a60248201527f4c6971756964697479206164646974696f6e206661696c65642e0000000000006044820152606401610c32565b505050610cbd611e7d565b601e5461010090046001600160a01b03163314612f815760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b601c54610100900460ff1615612fd95760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610c32565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561301e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304291906152fd565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561308f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b391906152fd565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015613116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313a91906152fd565b6010546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661330057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c991906152fd565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061323a91906152fd565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561329f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c391906152fd565b601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055613334565b601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600f80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03858116820292909217835560105482166000908152600160208190526040909120805460ff1916909117905591546110f99230929104166000196137d6565b601e5461010090046001600160a01b031633146133f75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b601c54610100900460ff161561344f5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610c32565b601e546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f1935050505015801561348f573d6000803e3d6000fd5b50565b601e5461010090046001600160a01b031633146134e55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b8284600c546134f4919061503b565b6134fe9190614fed565b601655600c54819061351190849061503b565b61351b9190614fed565b601781905560165411156135975760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610c32565b6010546001600160a01b0316600090815260208190526040902054612710906135c190609661503b565b6135cb9190614fed565b60175411156136425760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201527f50492e00000000000000000000000000000000000000000000000000000000006064820152608401610c32565b620f4240600c546136539190614fed565b60175410156136ca5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610c32565b620f4240600c546136db9190614fed565b60165410156137525760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610c32565b50505050565b601e5461010090046001600160a01b031633146137ab5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c32565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b03831661382c5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c32565b6001600160a01b0382166138825760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c32565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166139615760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610c32565b6001600160a01b0383166139dd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610c32565b60008211613a535760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610c32565b6001600160a01b0384166000908152600160205260408120548190819060ff1615613a815760019250613aaf565b6001600160a01b03861660009081526001602052604090205460ff1615613aab5760019150613aaf565b5060015b613ab9878761405b565b15613cc457601c5460ff16613b105760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c32565b8280613b195750815b15613bdd576001600160a01b03871660009081526007602052604090205460ff16158015613b6057506001600160a01b03861660009081526007602052604090205460ff16155b15613bdd57601a54851115613bdd5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610c32565b600f546001600160a01b038781166101009092041614801590613bfe575081155b15613cc4576001600160a01b03861660009081526007602052604090205460ff16613cc457601b5485613c46886001600160a01b031660009081526020819052604090205490565b613c5091906150a2565b1115613cc45760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610c32565b8115613d5b5760155460ff16613d5b57601554610100900460ff1615613d5b57306000908152602081905260409020546016548110613d595760175460185460ff1615613d43576019546010546001600160a01b031660009081526020819052604090205461271091613d369161503b565b613d409190614fed565b90505b808210613d4e578091505b613d5782614181565b505b505b613d69878787868686613d74565b979650505050505050565b6000613d80878761405b565b15613e3357601c546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613e1c575060408051601f3d908101601f19168201909252613e19918101906150f0565b60015b613e2557600080fd5b905080613e3157600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680613e7557506001600160a01b03871660009081526006602052604090205460ff165b15613e7e575060005b6001600160a01b03881660009081526020819052604081208054889290613ea6908490615028565b909155506000905081613eb95786613ec5565b613ec58987878a6146ef565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254613efb91906150a2565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613f4791815260200190565b60405180910390a3601c54610100900460ff1661404c57613f688989614804565b601c54610100900460ff16158015613f855750613f85898961405b565b8015613faa57506001600160a01b03891660009081526005602052604090205460ff16155b8015613fcf57506001600160a01b03881660009081526005602052604090205460ff16155b8015613fd9575083155b1561404c5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610c32565b50600198975050505050505050565b601e546000906001600160a01b0384811661010090920416148015906140945750601e546001600160a01b038381166101009092041614155b80156140b05750601e5461010090046001600160a01b03163214155b80156140d557506001600160a01b03821660009081526004602052604090205460ff16155b80156140fa57506001600160a01b03831660009081526004602052604090205460ff16155b801561411157506001600160a01b03821661dead14155b801561412557506001600160a01b03821615155b801561413a57506001600160a01b0383163014155b801561415a5750601c546001600160a01b03848116620100009092041614155b801561417a5750601c546001600160a01b03838116620100009092041614155b9392505050565b6015805460ff1916600117905560408051606081018252600e5461ffff80821683526201000082048116602084015264010000000090910416918101829052906000036141ce57506146e2565b306000908152600360209081526040808320600f5461010090046001600160a01b031684529091529020546000191461423157306000908152600360209081526040808320600f5461010090046001600160a01b03168452909152902060001990555b601254600f546040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526101009091046001600160a01b03908116602483015260001992169063dd62ed3e90604401602060405180830381865afa1580156142a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c991906150d7565b1461436857601254600f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0361010090920482166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015614342573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061436691906150f0565b505b604080516002808252606082018352600092602083019080368337019050509050308160008151811061439d5761439d615052565b6001600160a01b0392831660209182029290920101526011548251911690829060019081106143ce576143ce615052565b6001600160a01b039283166020918202929092010152600f54601c546040517f5c11d795000000000000000000000000000000000000000000000000000000008152610100909204831692635c11d7959261443e9288926000928892620100009004909116904290600401615362565b600060405180830381600087803b15801561445857600080fd5b505af1925050508015614469575060015b6144745750506146e2565b601c60029054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156144c457600080fd5b505af19250505080156144d5575060015b506012546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015614538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061455c91906150d7565b90506000836040015161ffff16846000015161ffff168361457d919061503b565b6145879190614fed565b905060006145958284615028565b602086015190915061ffff161561463a576012546013546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af1158015614614573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061463891906150f0565b505b602085015161ffff16156146dc576012546014546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063a9059cbb906044016020604051808303816000875af11580156146b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146da91906150f0565b505b50505050505b506015805460ff19169055565b60008084156147055750600d5461ffff1661472f565b831561471e5750600d5462010000900461ffff1661472f565b50600d54640100000000900461ffff165b806000036147405782915050610e1c565b601c546201000090046001600160a01b03163014801561476a5750466001148061476a5750466038145b1561477457506111945b6000612710614783838661503b565b61478d9190614fed565b905080156147fa5730600090815260208190526040812080548392906147b49084906150a2565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613d698185615028565b601c54610100900460ff16156148825760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610c32565b61488c828261405b565b1580156148a657506010546001600160a01b038281169116145b15611dfe576001600160a01b038083166000908152600460209081526040808320805460ff1990811660019081179092556006909352922080549091169091179055601c805461ff00191661010017908190556201000090041661493457601c80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6015805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016124e9565b801515811461348f57600080fd5b6000806040838503121561499557600080fd5b82356149a081614974565b915060208301356149b081614974565b809150509250929050565b60005b838110156149d65781810151838201526020016149be565b50506000910152565b60208152600082518060208401526149fe8160408501602087016149bb565b601f01601f19169190910160400192915050565b6001600160a01b038116811461348f57600080fd5b60008060408385031215614a3a57600080fd5b8235614a4581614a12565b946020939093013593505050565b600060208284031215614a6557600080fd5b813561417a81614a12565b600080600060608486031215614a8557600080fd5b8335614a9081614a12565b92506020840135614aa081614a12565b929592945050506040919091013590565b60008060408385031215614ac457600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614b2b57614b2b614ad3565b604052919050565b600067ffffffffffffffff821115614b4d57614b4d614ad3565b5060051b60200190565b600082601f830112614b6857600080fd5b81356020614b7d614b7883614b33565b614b02565b82815260059290921b84018101918181019086841115614b9c57600080fd5b8286015b84811015614bb75780358352918301918301614ba0565b509695505050505050565b60008060408385031215614bd557600080fd5b823567ffffffffffffffff80821115614bed57600080fd5b818501915085601f830112614c0157600080fd5b81356020614c11614b7883614b33565b82815260059290921b84018101918181019089841115614c3057600080fd5b948201945b83861015614c57578535614c4881614a12565b82529482019490820190614c35565b96505086013592505080821115614c6d57600080fd5b50614c7a85828601614b57565b9150509250929050565b803561ffff81168114614c9657600080fd5b919050565b600080600060608486031215614cb057600080fd5b614cb984614c84565b9250614cc760208501614c84565b9150614cd560408501614c84565b90509250925092565b60008060408385031215614cf157600080fd5b82356149a081614a12565b600060208284031215614d0e57600080fd5b5035919050565b60008060408385031215614d2857600080fd5b614d3183614c84565b9150614d3f60208401614c84565b90509250929050565b60008060408385031215614d5b57600080fd5b8235614d6681614a12565b915060208301356149b081614a12565b60008083601f840112614d8857600080fd5b50813567ffffffffffffffff811115614da057600080fd5b6020830191508360208260051b8501011115614dbb57600080fd5b9250929050565b600080600080600060608688031215614dda57600080fd5b853567ffffffffffffffff80821115614df257600080fd5b614dfe89838a01614d76565b90975095506020880135915080821115614e1757600080fd5b50614e2488828901614d76565b9094509250506040860135614e3881614a12565b809150509295509295909350565b60008060008060808587031215614e5c57600080fd5b5050823594602084013594506040840135936060013592509050565b600181811c90821680614e8c57607f821691505b602082108103614ec5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115614f35578160001904821115614f1b57614f1b614ecb565b80851615614f2857918102915b93841c9390800290614eff565b509250929050565b600082614f4c57506001610d68565b81614f5957506000610d68565b8160018114614f6f5760028114614f7957614f95565b6001915050610d68565b60ff841115614f8a57614f8a614ecb565b50506001821b610d68565b5060208310610133831016604e8410600b8410161715614fb8575081810a610d68565b614fc28383614efa565b8060001904821115614fd657614fd6614ecb565b029392505050565b600061417a60ff841683614f3d565b600082615023577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610d6857610d68614ecb565b8082028115828204841417610d6857610d68614ecb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061ffff80831681810361509857615098614ecb565b6001019392505050565b80820180821115610d6857610d68614ecb565b61ffff8181168382160190808211156150d0576150d0614ecb565b5092915050565b6000602082840312156150e957600080fd5b5051919050565b60006020828403121561510257600080fd5b815161417a81614974565b600082601f83011261511e57600080fd5b815167ffffffffffffffff81111561513857615138614ad3565b61514b6020601f19601f84011601614b02565b81815284602083860101111561516057600080fd5b610e1c8260208301602087016149bb565b6000806000806080858703121561518757600080fd5b845167ffffffffffffffff8082111561519f57600080fd5b6151ab8883890161510d565b955060208701519150808211156151c157600080fd5b506151ce8782880161510d565b93505060408501519150606085015160ff811681146151ec57600080fd5b939692955090935050565b601f8211156110f957600081815260208120601f850160051c8101602086101561521e5750805b601f850160051c820191505b81811015610cbd5782815560010161522a565b815167ffffffffffffffff81111561525757615257614ad3565b61526b816152658454614e78565b846151f7565b602080601f8311600181146152a057600084156152885750858301515b600019600386901b1c1916600185901b178555610cbd565b600085815260208120601f198616915b828110156152cf578886015182559484019460019091019084016152b0565b50858210156152ed5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561530f57600080fd5b815161417a81614a12565b6000600019820361532d5761532d614ecb565b5060010190565b60008060006060848603121561534957600080fd5b8351925060208401519150604084015190509250925092565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156153b25784516001600160a01b03168352938301939183019160010161538d565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220cd9236687d77440f95a553ac96562d6d5400b1c767ef52ca1d06d8c53ca60d5a64736f6c63430008110033

Deployed Bytecode Sourcemap

4083:24166:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5540:73;;;;;;;;;;;;5571:42;5540:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5540:73:0;;;;;;;;6103:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6103:28:0;245:177:1;16670:153:0;;;;;;;;;;-1:-1:-1;16670:153:0;;;;;:::i;:::-;;:::i;:::-;;4951:109;;;;;;;;;;-1:-1:-1;4951:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;1137:6:1;1170:15;;;1152:34;;1222:15;;;1217:2;1202:18;;1195:43;1274:15;;1254:18;;;1247:43;;;;1115:2;1100:18;4951:109:0;931:365:1;12452:80:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5479:26::-;;;;;;;;;;-1:-1:-1;5479:26:0;;;;;;;-1:-1:-1;;;;;5479:26:0;;;5446;;;;;;;;;;-1:-1:-1;5446:26:0;;;;;;;;;;;2429:14:1;;2422:22;2404:41;;2392:2;2377:18;5446:26:0;2264:187:1;13060:161:0;;;;;;;;;;-1:-1:-1;13060:161:0;;;;;:::i;:::-;;:::i;16099:140::-;;;;;;;;;;-1:-1:-1;16099:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;16197:34:0;16173:4;16197:34;;;:25;:34;;;;;;;;;16099:140;18878:114;;;;;;;;;;;;;:::i;12123:115::-;;;;;;;;;;;;;:::i;13730:306::-;;;;;;;;;;-1:-1:-1;13730:306:0;;;;;:::i;:::-;;:::i;18490:264::-;;;;;;;;;;-1:-1:-1;18490:264:0;;;;;:::i;:::-;;:::i;25924:447::-;;;;;;;;;;-1:-1:-1;25924:447:0;;;;;:::i;:::-;;:::i;6211:33::-;;;;;;;;;;;;;;;;16403:141;;;;;;;;;;;;;:::i;5190:42::-;;;;;;;;;;;;5228:4;5190:42;;6138:25;;;;;;;;;;;;;;;;12244:112;;;;;;;;;;;;;:::i;:::-;;;6676:4:1;6664:17;;;6646:36;;6634:2;6619:18;12244:112:0;6504:184:1;17021:544:0;;;;;;;;;;-1:-1:-1;17021:544:0;;;;;:::i;:::-;;:::i;16552:110::-;;;;;;;;;;-1:-1:-1;16552:110:0;;;;;:::i;:::-;;:::i;15674:140::-;;;;;;;;;;-1:-1:-1;15674:140:0;;;;;:::i;:::-;;:::i;18209:273::-;;;;;;;;;;-1:-1:-1;18209:273:0;;;;;:::i;:::-;;:::i;5512:21::-;;;;;;;;;;-1:-1:-1;5512:21:0;;;;-1:-1:-1;;;;;5512:21:0;;;5343:46;;;;;;;;;;;;5385:4;5343:46;;6331:34;;;;;;;;;;-1:-1:-1;6331:34:0;;;;;;;;19000:189;;;;;;;;;;-1:-1:-1;19000:189:0;;;;;:::i;:::-;;:::i;19904:217::-;;;;;;;;;;-1:-1:-1;19904:217:0;;;;;:::i;:::-;;:::i;10881:654::-;;;;;;;;;;-1:-1:-1;10881:654:0;;;;;:::i;:::-;;:::i;15822:127::-;;;;;;;;;;-1:-1:-1;15822:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;15913:28:0;15889:4;15913:28;;;:19;:28;;;;;;;;;15822:127;6372:36;;;;;;;;;;-1:-1:-1;6372:36:0;;;;;;;;;;;15957:134;;;;;;;;;;-1:-1:-1;15957:134:0;;;;;:::i;:::-;;:::i;6445:26::-;;;;;;;;;;;;;;;;15304:222;;;;;;;;;;-1:-1:-1;15304:222:0;;;;;:::i;:::-;;:::i;15534:132::-;;;;;;;;;;-1:-1:-1;15534:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;15628:30:0;15604:4;15628:30;;;:21;:30;;;;;;;;;15534:132;18762:108;;;;;;;;;;;;;:::i;12762:117::-;;;;;;;;;;-1:-1:-1;12762:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;12855:16:0;12828:7;12855:16;;;;;;;;;;;;12762:117;11543:225;;;;;;;;;;;;;:::i;16831:182::-;;;;;;;;;;;;;:::i;14732:564::-;;;;;;;;;;-1:-1:-1;14732:564:0;;;;;:::i;:::-;;:::i;12538:79::-;;;;;;;;;;-1:-1:-1;12608:6:0;;;;;-1:-1:-1;;;;;12608:6:0;12538:79;;13547:175;;;;;;;;;;;;;:::i;24877:593::-;;;;;;;;;;;;;:::i;12362:84::-;;;;;;;;;;;;;:::i;12887:165::-;;;;;;;;;;-1:-1:-1;12887:165:0;;;;;:::i;:::-;;:::i;25668:248::-;;;;;;;;;;-1:-1:-1;25668:248:0;;;;;:::i;:::-;;:::i;6170:34::-;;;;;;;;;;-1:-1:-1;6170:34:0;;;;;;;;17573:358;;;;;;;;;;-1:-1:-1;17573:358:0;;;;;:::i;:::-;;:::i;20129:263::-;;;;;;;;;;-1:-1:-1;20129:263:0;;;;;:::i;:::-;;:::i;5069:112::-;;;;;;;;;;-1:-1:-1;5069:112:0;;;;;;;;;;;;;;;;;;;;;;17939:262;;;;;;;;;;-1:-1:-1;17939:262:0;;;;;:::i;:::-;;:::i;12623:133::-;;;;;;;;;;-1:-1:-1;12623:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12725:19:0;;;12707:7;12725:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12623:133;7990:2129;;;;;;;;;;-1:-1:-1;7990:2129:0;;;;;:::i;:::-;;:::i;14044:680::-;;;;;;;;;;-1:-1:-1;14044:680:0;;;;;:::i;:::-;;:::i;25478:182::-;;;;;;;;;;;;;:::i;5698:54::-;;;;;;;;;;-1:-1:-1;5698:54:0;;;;-1:-1:-1;;;;;5698:54:0;;;5849:177;;;;;;;;;;-1:-1:-1;5849:177:0;;;;;;-1:-1:-1;;;;;5849:177:0;;;;;;;;;;;-1:-1:-1;;;;;10198:15:1;;;10180:34;;10250:15;;;;10245:2;10230:18;;10223:43;10092:18;5849:177:0;9945:327:1;19197:699:0;;;;;;;;;;-1:-1:-1;19197:699:0;;;;;:::i;:::-;;:::i;6057:39::-;;;;;;;;;;-1:-1:-1;6057:39:0;;;;;;;;;;;16247:148;;;;;;;;;;-1:-1:-1;16247:148:0;;;;;:::i;:::-;;:::i;5620:71::-;;;;;;;;;;-1:-1:-1;5620:71:0;;;;-1:-1:-1;;;;;5620:71:0;;;16670:153;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;;;;;;;;;16765:11:::1;::::0;:50:::1;::::0;;;;11200:14:1;;11193:22;16765:50:0::1;::::0;::::1;11175:41:1::0;11259:14;;11252:22;11232:18;;;11225:50;16765:11:0;;;::::1;-1:-1:-1::0;;;;;16765:11:0::1;::::0;:26:::1;::::0;11148:18:1;;16765:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16670:153:::0;;:::o;12452:80::-;12500:13;12524:5;12517:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12452:80;:::o;13060:161::-;13137:4;13154:37;13163:10;13175:7;13184:6;13154:8;:37::i;:::-;-1:-1:-1;13209:4:0;13060:161;;;;;:::o;18878:114::-;18974:9;;18925:7;;18970:13;;18974:9;;18970:2;:13;:::i;:::-;18952:14;;:32;;;;:::i;:::-;18945:39;;18878:114;:::o;12123:115::-;12178:7;12193;;12204:1;12193:12;12189:31;;12209:8;;;12189:31;-1:-1:-1;12228:7:0;;;12123:115::o;13730:306::-;-1:-1:-1;;;;;13851:19:0;;13830:4;13851:19;;;:11;:19;;;;;;;;13871:10;13851:31;;;;;;;;-1:-1:-1;;13851:52:0;13847:126;;-1:-1:-1;;;;;13920:19:0;;;;;;:11;:19;;;;;;;;13940:10;13920:31;;;;;;;:41;;13955:6;;13920:19;:41;;13955:6;;13920:41;:::i;:::-;;;;-1:-1:-1;;13847:126:0;13992:36;14002:6;14010:9;14021:6;13992:9;:36::i;:::-;13985:43;13730:306;-1:-1:-1;;;;13730:306:0:o;18490:264::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;18632:3:::1;18622:7;;:13;;;;:::i;:::-;18610:7;18599;18589;;:17;;;;:::i;:::-;18588:29;;;;:::i;:::-;:48;;18580:109;;;::::0;-1:-1:-1;;;18580:109:0;;14207:2:1;18580:109:0::1;::::0;::::1;14189:21:1::0;14246:2;14226:18;;;14219:30;14285:34;14265:18;;;14258:62;14356:18;14336;;;14329:46;14392:19;;18580:109:0::1;14005:412:1::0;18580:109:0::1;18739:7;18728;18718;;:17;;;;:::i;:::-;18717:29;;;;:::i;:::-;18700:14;:46:::0;-1:-1:-1;;18490:264:0:o;25924:447::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;26059:7:::1;:14;26040:8;:15;:33;26032:67;;;::::0;-1:-1:-1;;;26032:67:0;;14624:2:1;26032:67:0::1;::::0;::::1;14606:21:1::0;14663:2;14643:18;;;14636:30;14702:23;14682:18;;;14675:51;14743:18;;26032:67:0::1;14422:345:1::0;26032:67:0::1;26115:8;26110:254;26133:8;:15;26129:1;:19;;;26110:254;;;26218:9;::::0;26214:13:::1;::::0;26218:9:::1;;26214:2;:13;:::i;:::-;26203:7;26211:1;26203:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;26188:10;12828:7:::0;12855:16;;;;;;;;;;;26178:49:::1;;26170:80;;;::::0;-1:-1:-1;;;26170:80:0;;15163:2:1;26170:80:0::1;::::0;::::1;15145:21:1::0;15202:2;15182:18;;;15175:30;15241:20;15221:18;;;15214:48;15279:18;;26170:80:0::1;14961:342:1::0;26170:80:0::1;26265:87;26282:10;26294:8;26303:1;26294:11;;;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;26322:9:::1;::::0;26318:13:::1;::::0;26322:9:::1;;26318:2;:13;:::i;:::-;26307:7;26315:1;26307:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;26333:5;26340::::0;26347:4:::1;26265:16;:87::i;:::-;-1:-1:-1::0;26150:3:0;::::1;::::0;::::1;:::i;:::-;;;;26110:254;;;;25924:447:::0;;:::o;16403:141::-;16456:7;12855:16;;;;;;5571:42;12855:16;;;;16495:39;;12855:16;16495:39;:::i;:::-;16484:7;;:51;;;;:::i;12244:112::-;12296:5;12309:7;;12320:1;12309:12;12305:31;;12325:8;;;12305:31;-1:-1:-1;12344:9:0;;;;;12244:112::o;17021:544::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;17129:14:::1;::::0;::::1;;17128:15;17120:45;;;::::0;-1:-1:-1;;;17120:45:0;;15842:2:1;17120:45:0::1;::::0;::::1;15824:21:1::0;15881:2;15861:18;;;15854:30;15920:19;15900:18;;;15893:47;15957:18;;17120:45:0::1;15640:341:1::0;17120:45:0::1;5228:4;17184:6;:21;;;;:65;;;;;5278:4;17226:7;:23;;;;17184:65;:117;;;;;5332:4;17270:11;:31;;;;17184:117;17176:170;;;::::0;-1:-1:-1;;;17176:170:0;;16188:2:1;17176:170:0::1;::::0;::::1;16170:21:1::0;16227:2;16207:18;;;16200:30;16266:25;16246:18;;;16239:53;16309:18;;17176:170:0::1;15986:347:1::0;17176:170:0::1;5385:4;17365:16;17374:7:::0;17365:6;:16:::1;:::i;:::-;:35;;;;17357:80;;;::::0;-1:-1:-1;;;17357:80:0;;16713:2:1;17357:80:0::1;::::0;::::1;16695:21:1::0;;;16732:18;;;16725:30;16791:34;16771:18;;;16764:62;16843:18;;17357:80:0::1;16511:356:1::0;17357:80:0::1;17448:9;:25:::0;;::::1;::::0;;::::1;17484:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;17522:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;17021:544::o;16552:110::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;16621:11:::1;::::0;:33:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;16621:33:0::1;::::0;::::1;160:74:1::0;16621:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;16621:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16552:110:::0;:::o;15674:140::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;-1:-1:-1;;;;;15766:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;15766:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15674:140::o;18209:273::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;18354:4:::1;18340:7;;18350:1;18340:11;;;;:::i;:::-;:18;;;;:::i;:::-;18328:7;18317;18307;;:17;;;;:::i;:::-;18306:29;;;;:::i;:::-;:53;;18298:121;;;::::0;-1:-1:-1;;;18298:121:0;;17074:2:1;18298:121:0::1;::::0;::::1;17056:21:1::0;17113:2;17093:18;;;17086:30;17152:34;17132:18;;;17125:62;17223:25;17203:18;;;17196:53;17266:19;;18298:121:0::1;16872:419:1::0;18298:121:0::1;18467:7;18456;18446;;:17;;;;:::i;:::-;18445:29;;;;:::i;:::-;18430:12;:44:::0;-1:-1:-1;;18209:273:0:o;19000:189::-;19129:6;;-1:-1:-1;;;;;19129:6:0;19091:7;12855:16;;;;;;;;;;;5432:5;;19119:41;;19139:21;;19119:41;:::i;:::-;19118:62;;;;:::i;19904:217::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;20034:3:::1;20008:22;:29;;20000:64;;;::::0;-1:-1:-1;;;20000:64:0;;17498:2:1;20000:64:0::1;::::0;::::1;17480:21:1::0;17537:2;17517:18;;;17510:30;17576:24;17556:18;;;17549:52;17618:18;;20000:64:0::1;17296:346:1::0;20000:64:0::1;20075:13;:38:::0;19904:217::o;10881:654::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;-1:-1:-1;;;;;10960:22:0;::::1;10952:96;;;::::0;-1:-1:-1;;;10952:96:0;;17849:2:1;10952:96:0::1;::::0;::::1;17831:21:1::0;17888:2;17868:18;;;17861:30;17927:34;17907:18;;;17900:62;17998:31;17978:18;;;17971:59;18047:19;;10952:96:0::1;17647:425:1::0;10952:96:0::1;11067:16:::0;-1:-1:-1;;;;;11067:16:0;::::1;::::0;11059:90:::1;;;::::0;-1:-1:-1;;;11059:90:0;;17849:2:1;11059:90:0::1;::::0;::::1;17831:21:1::0;17888:2;17868:18;;;17861:30;17927:34;17907:18;;;17900:62;17998:31;17978:18;;;17971:59;18047:19;;11059:90:0::1;17647:425:1::0;11059:90:0::1;11180:6;::::0;11160:34:::1;::::0;11180:6:::1;::::0;::::1;-1:-1:-1::0;;;;;11180:6:0::1;11188:5;11160:19;:34::i;:::-;11205:35;11225:8;11235:4;11205:19;:35::i;:::-;11275:6;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;11275:6:0::1;11285:1;12855:16:::0;;;;;;;;;;;11265:21:::1;11261:127;;;11320:6;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;11320:6:0::1;12828:7:::0;12855:16;;;;;;;;;;;11303:73:::1;::::0;11320:6;11328:8;;11338:17:::1;12762:117:::0;11303:73:::1;;11261:127;11427:6;::::0;;-1:-1:-1;;;;;11444:17:0;;::::1;11427:6;11444:17:::0;;::::1;::::0;;::::1;;::::0;;;11477:40:::1;::::0;11427:6;;;::::1;;::::0;;;11477:40:::1;::::0;11408:16:::1;::::0;11477:40:::1;10941:594;10881:654:::0;:::o;15957:134::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;-1:-1:-1;;;;;16045:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;16045:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15957:134::o;15304:222::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;15388:14:::1;::::0;::::1;;15387:15;15379:24;;;::::0;::::1;;15445:4;-1:-1:-1::0;;;;;15422:28:0;::::1;::::0;15414:55:::1;;;::::0;-1:-1:-1;;;15414:55:0;;18279:2:1;15414:55:0::1;::::0;::::1;18261:21:1::0;18318:2;18298:18;;;18291:30;18357:16;18337:18;;;18330:44;18391:18;;15414:55:0::1;18077:338:1::0;15414:55:0::1;15480:11;:38:::0;;-1:-1:-1;;;;;15480:38:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;15304:222::o;18762:108::-;18852:9;;18805:7;;18848:13;;18852:9;;18848:2;:13;:::i;:::-;18832:12;;:30;;;;:::i;11543:225::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;11622:6:::1;::::0;11602:34:::1;::::0;11622:6:::1;::::0;::::1;-1:-1:-1::0;;;;;11622:6:0::1;11630:5;11602:19;:34::i;:::-;11666:6;::::0;;11683:19;;::::1;::::0;;;11718:42:::1;::::0;11666:6:::1;::::0;;::::1;-1:-1:-1::0;;;;;11666:6:0::1;::::0;-1:-1:-1;;11666:6:0;;11718:42:::1;::::0;-1:-1:-1;;11718:42:0::1;11591:177;11543:225::o:0;16831:182::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;16984:14:::1;:21:::0;;-1:-1:-1;;16984:21:0::1;17001:4;16984:21;::::0;;16831:182::o;14732:564::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;14814:7:::1;14809:480;;-1:-1:-1::0;;;;;14838:13:0;;::::1;14854:5;14838:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;14838:21:0::1;::::0;;14874:11:::1;::::0;:34;;;;;::::1;::::0;::::1;18588:74:1::0;;;;18678:18;;;18671:50;;;;14874:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18561:18:1;;14874:34:0::1;18420:307:1::0;14809:480:0::1;14945:17;::::0;:22;14941:135:::1;;15034:6;15014:17;;14996:15;:35;;;;:::i;:::-;:44;14988:72;;;::::0;-1:-1:-1;;;14988:72:0;;18934:2:1;14988:72:0::1;::::0;::::1;18916:21:1::0;18973:2;18953:18;;;18946:30;19012:17;18992:18;;;18985:45;19047:18;;14988:72:0::1;18732:339:1::0;14988:72:0::1;-1:-1:-1::0;;;;;15099:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;15098:14;15090:54;;;::::0;-1:-1:-1;;;15090:54:0;;19278:2:1;15090:54:0::1;::::0;::::1;19260:21:1::0;19317:2;19297:18;;;19290:30;19356:29;19336:18;;;19329:57;19403:18;;15090:54:0::1;19076:351:1::0;15090:54:0::1;-1:-1:-1::0;;;;;15159:13:0;;::::1;;::::0;;;15175:4:::1;15159:13;::::0;;;;;;;;:20;;-1:-1:-1;;15159:20:0::1;::::0;::::1;::::0;;15214:15:::1;15194:17;:35:::0;15244:11:::1;::::0;:33;;;;;::::1;::::0;::::1;18588:74:1::0;;;;18678:18;;;18671:50;15244:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18561:18:1;;15244:33:0::1;18420:307:1::0;14809:480:0::1;14732:564:::0;;:::o;13547:175::-;10735:6;;13613:4;;10735:6;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;13662:9:::1;::::0;13630:62:::1;::::0;13647:4:::1;::::0;13662:9:::1;::::0;::::1;-1:-1:-1::0;;;;;13662:9:0::1;-1:-1:-1::0;;13630:8:0::1;:62::i;:::-;-1:-1:-1::0;13710:4:0::1;13547:175:::0;:::o;24877:593::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;24939:14:::1;::::0;::::1;;24938:15;24930:52;;;::::0;-1:-1:-1;;;24930:52:0;;19634:2:1;24930:52:0::1;::::0;::::1;19616:21:1::0;19673:2;19653:18;;;19646:30;19712:26;19692:18;;;19685:54;19756:18;;24930:52:0::1;19432:348:1::0;24930:52:0::1;25001:16;::::0;::::1;::::0;::::1;;;24993:53;;;::::0;-1:-1:-1;;;24993:53:0;;19987:2:1;24993:53:0::1;::::0;::::1;19969:21:1::0;20026:2;20006:18;;;19999:30;20065:26;20045:18;;;20038:54;20109:18;;24993:53:0::1;19785:348:1::0;24993:53:0::1;25069:11;::::0;;;::::1;-1:-1:-1::0;;;;;25069:11:0::1;25057:106;;25111:11;:40:::0;;;::::1;25145:4;25111:40:::0;::::1;;::::0;;25057:106:::1;25177:11;::::0;25199:6:::1;::::0;25254:9:::1;::::0;25177:87:::1;::::0;;;;-1:-1:-1;;;;;25199:6:0;;::::1;25177:87;::::0;::::1;20361:74:1::0;20483:10;25214:12:0::1;20471:23:1::0;20451:18;;;20444:51;20543:18;25236:15:0::1;20531:31:1::0;20511:18;;;20504:59;25254:9:0::1;::::0;;::::1;20579:18:1::0;;;20572:45;25177:11:0;;;::::1;;::::0;:21:::1;::::0;20333:19:1;;25177:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;25286:14:0::1;:21:::0;;-1:-1:-1;;25286:21:0::1;25303:4;25286:21;::::0;;25345:6:::1;::::0;-1:-1:-1;;;;;25345:6:0::1;-1:-1:-1::0;12855:16:0;;;;;;;;;;;25361:5:::1;::::0;25335:22:::1;::::0;25355:2:::1;25335:22;:::i;:::-;25334:32;;;;:::i;:::-;25318:13;:48:::0;25401:6:::1;::::0;-1:-1:-1;;;;;25401:6:0::1;12828:7:::0;12855:16;;;;;;;;;;;25417:5:::1;::::0;25391:22:::1;::::0;25411:2:::1;25391:22;:::i;:::-;25390:32;;;;:::i;:::-;25377:10;:45:::0;25447:15:::1;25433:11;:29:::0;24877:593::o;12362:84::-;12412:13;12436:7;12429:14;;;;;:::i;12887:165::-;12965:4;12982:40;12992:10;13004:9;13015:6;12982:9;:40::i;:::-;-1:-1:-1;13040:4:0;;12887:165;-1:-1:-1;;;12887:165:0:o;25668:248::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;25767:4:::1;-1:-1:-1::0;;;;;25750:22:0;::::1;::::0;25742:62:::1;;;::::0;-1:-1:-1;;;25742:62:0;;20830:2:1;25742:62:0::1;::::0;::::1;20812:21:1::0;20869:2;20849:18;;;20842:30;20908:29;20888:18;;;20881:57;20955:18;;25742:62:0::1;20628:351:1::0;25742:62:0::1;25869:6;::::0;25877:30:::1;::::0;;;;25901:4:::1;25877:30;::::0;::::1;160:74:1::0;25837:5:0;;-1:-1:-1;;;;;25854:14:0;;::::1;::::0;::::1;::::0;25869:6:::1;::::0;::::1;::::0;;::::1;::::0;25854:14;;25877:15:::1;::::0;133:18:1;;25877:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25854:54;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;21365:55:1;;;25854:54:0::1;::::0;::::1;21347:74:1::0;21437:18;;;21430:34;21320:18;;25854:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17573:358::-:0;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;17656:7:::1;:25:::0;;::::1;17692:29:::0;;::::1;::::0;::::1;::::0;;;;17656:25;;::::1;17692:29:::0;::::1;::::0;;17752:19:::1;17712:9:::0;17674:7;17752:19:::1;:::i;:::-;17732:7;:39:::0;;;::::1;::::0;::::1;::::0;;::::1;;;::::0;;17817:9:::1;:17:::0;-1:-1:-1;;17798:36:0::1;::::0;17817:17;;::::1;::::0;::::1;::::0;17798:16:::1;:36;:::i;:::-;17853:7;:17:::0;17782:52:::1;::::0;;::::1;::::0;-1:-1:-1;17853:17:0;;::::1;;:26:::0;-1:-1:-1;17853:26:0::1;17845:78;;;::::0;-1:-1:-1;;;17845:78:0;;21927:2:1;17845:78:0::1;::::0;::::1;21909:21:1::0;21966:2;21946:18;;;21939:30;22005:34;21985:18;;;21978:62;22076:9;22056:18;;;22049:37;22103:19;;17845:78:0::1;21725:403:1::0;20129:263:0;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;20238:19:::1;:33:::0;;-1:-1:-1;;20238:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;20282:22:::1;:47:::0;;-1:-1:-1;;20282:47:0::1;::::0;::::1;;;::::0;;20345:39:::1;::::0;2404:41:1;;;20345:39:0::1;::::0;2392:2:1;2377:18;20345:39:0::1;;;;;;;;20129:263:::0;;:::o;17939:262::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;-1:-1:-1;;;;;18033:23:0;::::1;::::0;;::::1;::::0;:48:::1;;-1:-1:-1::0;;;;;;18060:21:0;::::1;::::0;::::1;18033:48;18025:84;;;::::0;-1:-1:-1;;;18025:84:0;;22335:2:1;18025:84:0::1;::::0;::::1;22317:21:1::0;22374:2;22354:18;;;22347:30;22413:25;22393:18;;;22386:53;22456:18;;18025:84:0::1;22133:347:1::0;18025:84:0::1;18120:11;:33:::0;;-1:-1:-1;;;;;18120:33:0;;::::1;::::0;;;::::1;;::::0;;;18164:19;:29;;;;;::::1;::::0;::::1;;::::0;;17939:262::o;7990:2129::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;8135:19:::1;::::0;::::1;;8134:20;8126:34;;;::::0;-1:-1:-1;;;8126:34:0;;22687:2:1;8126:34:0::1;::::0;::::1;22669:21:1::0;22726:1;22706:18;;;22699:29;22764:3;22744:18;;;22737:31;22785:18;;8126:34:0::1;22485:324:1::0;8126:34:0::1;8179:33:::0;;::::1;8171:47;;;::::0;-1:-1:-1;;;8171:47:0;;23016:2:1;8171:47:0::1;::::0;::::1;22998:21:1::0;23055:1;23035:18;;;23028:29;23093:3;23073:18;;;23066:31;23114:18;;8171:47:0::1;22814:324:1::0;8171:47:0::1;8255:12;8229:11;;:39;;;;;-1:-1:-1::0;;;;;8229:39:0::1;;;;;-1:-1:-1::0;;;;;8229:39:0::1;;;;;;8283:11;;;;;;;;;-1:-1:-1::0;;;;;8283:11:0::1;-1:-1:-1::0;;;;;8283:27:0::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;8283:29:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;;;8279:408;;8664:11;::::0;-1:-1:-1;;;8664:11:0;;24698:2:1;8664:11:0::1;::::0;::::1;24680:21:1::0;24737:1;24717:18;;;24710:29;24775:3;24755:18;;;24748:31;24796:18;;8664:11:0::1;24496:324:1::0;8279:408:0::1;8435:5;:16;8443:8:::0;8435:5;:16:::1;:::i;:::-;-1:-1:-1::0;8466:7:0::1;:20;8476:10:::0;8466:7;:20:::1;:::i;:::-;-1:-1:-1::0;8501:14:0::1;:35:::0;;;8551:9:::1;:24:::0;;-1:-1:-1;;8551:24:0::1;;::::0;::::1;::::0;;::::1;::::0;;;8617:13:::1;::::0;:2:::1;:13;:::i;:::-;8600:14;;:30;;;;:::i;:::-;8590:7;:40:::0;-1:-1:-1;;;;8729:5:0::1;8713:7;;8723:2;8713:12;;;;:::i;:::-;8712:22;;;;:::i;:::-;8697:12;:37:::0;8763:7:::1;::::0;8778:3:::1;::::0;8763:11:::1;::::0;8773:1:::1;8763:11;:::i;:::-;8762:19;;;;:::i;:::-;8745:14;:36:::0;8792:19:::1;:26:::0;;-1:-1:-1;;8792:26:0::1;8814:4;8792:26;::::0;;;8852:7:::1;::::0;-1:-1:-1;;;;;8792:26:0::1;8842:6:::0;;;::::1;::::0;::::1;8792:19;8834:15:::0;;;::::1;::::0;;;;;;;:25;;;8896:6;;8875:37;;8896:6;;;::::1;;::::0;8792:19;8875:37:::1;::::0;::::1;::::0;391:25:1;;;379:2;364:18;;245:177;8875:37:0::1;;;;;;;;8925:18;8957:9;;;;;;;;;-1:-1:-1::0;;;;;8957:9:0::1;-1:-1:-1::0;;;;;8957:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8946:42:0::1;;8989:9;;;;;;;;;-1:-1:-1::0;;;;;8989:9:0::1;-1:-1:-1::0;;;;;8989:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8946:75;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;10198:15:1;;;8946:75:0::1;::::0;::::1;10180:34:1::0;9015:4:0::1;10230:18:1::0;;;10223:43;10092:18;;8946:75:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8925:96;;9052:9;;;;;;;;;-1:-1:-1::0;;;;;9052:9:0::1;-1:-1:-1::0;;;;;9052:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9084:11;::::0;9041:70:::1;::::0;;;;-1:-1:-1;;;;;9084:11:0;;::::1;9041:70;::::0;::::1;10180:34:1::0;9105:4:0::1;10230:18:1::0;;;10223:43;9041:42:0;::::1;::::0;::::1;::::0;10092:18:1;;9041:70:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9032:6;:79:::0;;;::::1;-1:-1:-1::0;;;;;9032:79:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;9122:15:0;;;-1:-1:-1;9122:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;9122:22:0;;::::1;::::0;::::1;::::0;;;9155:19;;::::1;::::0;;;;:26;;;;::::1;;::::0;;9203:6:::1;::::0;9219:9:::1;::::0;9194:55:::1;::::0;9032:79:::1;9203:6:::0;;;::::1;::::0;::::1;::::0;9219:9;;::::1;;-1:-1:-1::0;;9194:8:0::1;:55::i;:::-;9292:9;::::0;9260:62:::1;::::0;9277:4:::1;::::0;9292:9:::1;::::0;::::1;-1:-1:-1::0;;;;;9292:9:0::1;-1:-1:-1::0;;9260:8:0::1;:62::i;:::-;9333:18;::::0;9368:9:::1;::::0;9333:65:::1;::::0;;;;-1:-1:-1;;;;;9333:18:0::1;9368:9:::0;;::::1;::::0;::::1;9333:65;::::0;::::1;21347:74:1::0;-1:-1:-1;;21437:18:1;;;21430:34;9333:18:0;::::1;::::0;:26:::1;::::0;21320:18:1;;9333:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9415:9;9411:194;9430:19:::0;;::::1;9411:194;;;9504:9;::::0;9470:14:::1;::::0;9500:13:::1;::::0;9504:9:::1;;9500:2;:13;:::i;:::-;9487:7;;9495:1;9487:10;;;;;;;:::i;:::-;;;;;;;:26;;;;:::i;:::-;9545:6;::::0;9470:43;;-1:-1:-1;9528:65:0::1;::::0;9545:6:::1;::::0;::::1;-1:-1:-1::0;;;;;9545:6:0::1;9553:8:::0;;9562:1;9553:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;9566:6;9574:5;9581::::0;9588:4:::1;9528:16;:65::i;:::-;;9455:150;9451:3;;;;;:::i;:::-;;;;9411:194;;;-1:-1:-1::0;9634:6:0::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;9634:6:0::1;12828:7:::0;12855:16;;;;;;;;;;;9617:78:::1;::::0;9634:6;9650:4:::1;::::0;9657:17:::1;12762:117:::0;9617:78:::1;-1:-1:-1::0;9712:9:0::1;::::0;9749:11:::1;::::0;9803:18:::1;::::0;:43:::1;::::0;;;;9783:4:::1;9803:43;::::0;::::1;160:74:1::0;;;-1:-1:-1;;;;;9712:9:0::1;::::0;;::::1;::::0;::::1;::::0;:22:::1;::::0;9749:11;::::1;::::0;9783:4;;9803:18;::::1;::::0;:28:::1;::::0;133:18:1;;9803:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9879:4;12828:7:::0;12855:16;;;;;;;;;;;9986:6:::1;::::0;9712:321:::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;;;28102:15:1;;;9712:321:0::1;::::0;::::1;28084:34:1::0;28154:15;;;28134:18;;;28127:43;28186:18;;;28179:34;;;;28229:18;;;28222:34;9900:1:0::1;28272:19:1::0;;;28265:35;;;28316:19;;;28309:35;9986:6:0::1;::::0;::::1;::::0;;::::1;28360:19:1::0;;;28353:44;10007:15:0::1;28413:19:1::0;;;28406:35;27995:19;;9712:321:0::1;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;9712:321:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;9712:321:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;9708:376;;10045:36;::::0;-1:-1:-1;;;10045:36:0;;28965:2:1;10045:36:0::1;::::0;::::1;28947:21:1::0;29004:2;28984:18;;;28977:30;29043:28;29023:18;;;29016:56;29089:18;;10045:36:0::1;28763:350:1::0;9708:376:0::1;;;;10096:15;:13;:15::i;14044:680::-:0;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;14124:16:::1;::::0;::::1;::::0;::::1;;;14123:17;14115:60;;;::::0;-1:-1:-1;;;14115:60:0;;29320:2:1;14115:60:0::1;::::0;::::1;29302:21:1::0;29359:2;29339:18;;;29332:30;29398:32;29378:18;;;29371:60;29448:18;;14115:60:0::1;29118:354:1::0;14115:60:0::1;14186:20;14219:9;14186:43;;14240:16;14270:10;-1:-1:-1::0;;;;;14270:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14259:40:0::1;;14308:4;14315:10;-1:-1:-1::0;;;;;14315:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14259:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;10198:15:1;;;14259:74:0::1;::::0;::::1;10180:34:1::0;10250:15;;10230:18;;;10223:43;10092:18;;14259:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14352:6;::::0;-1:-1:-1;;;;;14352:6:0;;::::1;14362:5;14344:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;14344:23:0::1;::::0;;14240:93;;-1:-1:-1;14382:22:0;::::1;14378:200;;14441:10;-1:-1:-1::0;;;;;14441:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14430:43:0::1;;14482:4;14489:10;-1:-1:-1::0;;;;;14489:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14430:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;10198:15:1;;;14430:77:0::1;::::0;::::1;10180:34:1::0;10250:15;;10230:18;;;10223:43;10092:18;;14430:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14421:6;:86:::0;;;::::1;-1:-1:-1::0;;;;;14421:86:0;;;::::1;::::0;;;::::1;::::0;;14378:200:::1;;;14549:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;14549:17:0;::::1;;::::0;;14378:200:::1;14588:9;:22:::0;;;::::1;;-1:-1:-1::0;;;;;14588:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;14629:6:::1;::::0;;::::1;-1:-1:-1::0;14621:15:0;;;-1:-1:-1;14621:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;14621:22:0::1;::::0;;::::1;::::0;;14686:9;;14654:62:::1;::::0;14671:4:::1;::::0;14686:9;::::1;;-1:-1:-1::0;;14654:8:0::1;:62::i;25478:182::-:0;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;25545:16:::1;::::0;::::1;::::0;::::1;;;25544:17;25536:58;;;::::0;-1:-1:-1;;;25536:58:0;;29679:2:1;25536:58:0::1;::::0;::::1;29661:21:1::0;29718:2;29698:18;;;29691:30;29757;29737:18;;;29730:58;29805:18;;25536:58:0::1;29477:352:1::0;25536:58:0::1;25613:6;::::0;25605:47:::1;::::0;-1:-1:-1;;;;;25613:6:0::1;::::0;;::::1;::::0;;;::::1;::::0;25630:21:::1;25605:47:::0;::::1;;;::::0;::::1;::::0;;;25630:21;25613:6;25605:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25478:182::o:0;19197:699::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;19397:16:::1;19377;19367:7;;:26;;;;:::i;:::-;19366:47;;;;:::i;:::-;19350:13;:63:::0;19438:7:::1;::::0;19465:13;;19438:23:::1;::::0;19448:13;;19438:23:::1;:::i;:::-;19437:41;;;;:::i;:::-;19424:10;:54:::0;;;19497:13:::1;::::0;:27:::1;;19489:73;;;::::0;-1:-1:-1;;;19489:73:0;;30036:2:1;19489:73:0::1;::::0;::::1;30018:21:1::0;30075:2;30055:18;;;30048:30;30114:34;30094:18;;;30087:62;30185:3;30165:18;;;30158:31;30206:19;;19489:73:0::1;29834:397:1::0;19489:73:0::1;19606:6;::::0;-1:-1:-1;;;;;19606:6:0::1;12828:7:::0;12855:16;;;;;;;;;;;5432:5:::1;::::0;19596:23:::1;::::0;19616:3:::1;19596:23;:::i;:::-;19595:44;;;;:::i;:::-;19581:10;;:58;;19573:106;;;::::0;-1:-1:-1;;;19573:106:0;;30438:2:1;19573:106:0::1;::::0;::::1;30420:21:1::0;30477:2;30457:18;;;30450:30;30516:34;30496:18;;;30489:62;30587:5;30567:18;;;30560:33;30610:19;;19573:106:0::1;30236:399:1::0;19573:106:0::1;19722:9;19712:7;;:19;;;;:::i;:::-;19698:10;;:33;;19690:92;;;::::0;-1:-1:-1;;;19690:92:0;;30842:2:1;19690:92:0::1;::::0;::::1;30824:21:1::0;30881:2;30861:18;;;30854:30;30920:34;30900:18;;;30893:62;30991:16;30971:18;;;30964:44;31025:19;;19690:92:0::1;30640:410:1::0;19690:92:0::1;19828:9;19818:7;;:19;;;;:::i;:::-;19801:13;;:36;;19793:95;;;::::0;-1:-1:-1;;;19793:95:0;;30842:2:1;19793:95:0::1;::::0;::::1;30824:21:1::0;30881:2;30861:18;;;30854:30;30920:34;30900:18;;;30893:62;30991:16;30971:18;;;30964:44;31025:19;;19793:95:0::1;30640:410:1::0;19793:95:0::1;19197:699:::0;;;;:::o;16247:148::-;10735:6;;;;;-1:-1:-1;;;;;10735:6:0;10745:10;10735:20;10727:50;;;;-1:-1:-1;;;10727:50:0;;10869:2:1;10727:50:0;;;10851:21:1;10908:2;10888:18;;;10881:30;-1:-1:-1;;;10927:18:1;;;10920:47;10984:18;;10727:50:0;10667:341:1;10727:50:0;-1:-1:-1;;;;;16343:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;16343:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16247:148::o;13229:310::-;-1:-1:-1;;;;;13324:20:0;;13316:52;;;;-1:-1:-1;;;13316:52:0;;31257:2:1;13316:52:0;;;31239:21:1;31296:2;31276:18;;;31269:30;31335:21;31315:18;;;31308:49;31374:18;;13316:52:0;31055:343:1;13316:52:0;-1:-1:-1;;;;;13387:21:0;;13379:53;;;;-1:-1:-1;;;13379:53:0;;31257:2:1;13379:53:0;;;31239:21:1;31296:2;31276:18;;;31269:30;31335:21;31315:18;;;31308:49;31374:18;;13379:53:0;31055:343:1;13379:53:0;-1:-1:-1;;;;;13445:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13498:33;;391:25:1;;;13498:33:0;;364:18:1;13498:33:0;;;;;;;13229:310;;;:::o;20854:1946::-;20933:4;-1:-1:-1;;;;;20958:18:0;;20950:68;;;;-1:-1:-1;;;20950:68:0;;31605:2:1;20950:68:0;;;31587:21:1;31644:2;31624:18;;;31617:30;31683:34;31663:18;;;31656:62;31754:7;31734:18;;;31727:35;31779:19;;20950:68:0;31403:401:1;20950:68:0;-1:-1:-1;;;;;21037:16:0;;21029:64;;;;-1:-1:-1;;;21029:64:0;;32011:2:1;21029:64:0;;;31993:21:1;32050:2;32030:18;;;32023:30;32089:34;32069:18;;;32062:62;32160:5;32140:18;;;32133:33;32183:19;;21029:64:0;31809:399:1;21029:64:0;21121:1;21112:6;:10;21104:64;;;;-1:-1:-1;;;21104:64:0;;32415:2:1;21104:64:0;;;32397:21:1;32454:2;32434:18;;;32427:30;32493:34;32473:18;;;32466:62;32564:11;32544:18;;;32537:39;32593:19;;21104:64:0;32213:405:1;21104:64:0;-1:-1:-1;;;;;21267:13:0;;21179:8;21267:13;;;:7;:13;;;;;;21179:8;;;;21267:13;;21263:162;;;21303:4;21297:10;;21263:162;;;-1:-1:-1;;;;;21329:11:0;;;;;;:7;:11;;;;;;;;21325:100;;;21364:4;21357:11;;21325:100;;;-1:-1:-1;21409:4:0;21325:100;21439:20;21450:4;21456:2;21439:10;:20::i;:::-;21435:644;;;21480:14;;;;21476:89;;21515:34;;-1:-1:-1;;;21515:34:0;;32825:2:1;21515:34:0;;;32807:21:1;32864:2;32844:18;;;32837:30;32903:26;32883:18;;;32876:54;32947:18;;21515:34:0;32623:348:1;21476:89:0;21583:3;:11;;;;21590:4;21583:11;21579:232;;;-1:-1:-1;;;;;21619:27:0;;;;;;:21;:27;;;;;;;;21618:28;:58;;;;-1:-1:-1;;;;;;21651:25:0;;;;;;:21;:25;;;;;;;;21650:26;21618:58;21614:182;;;21719:12;;21709:6;:22;;21701:75;;;;-1:-1:-1;;;21701:75:0;;33178:2:1;21701:75:0;;;33160:21:1;33217:2;33197:18;;;33190:30;33256:34;33236:18;;;33229:62;33327:10;33307:18;;;33300:38;33355:19;;21701:75:0;32976:404:1;21701:75:0;21843:9;;-1:-1:-1;;;;;21829:24:0;;;21843:9;;;;;21829:24;;;;:33;;;21858:4;21857:5;21829:33;21825:243;;;-1:-1:-1;;;;;21888:25:0;;;;;;:21;:25;;;;;;;;21883:170;;21972:14;;21962:6;21946:13;21956:2;-1:-1:-1;;;;;12855:16:0;12828:7;12855:16;;;;;;;;;;;;12762:117;21946:13;:22;;;;:::i;:::-;:40;;21938:95;;;;-1:-1:-1;;;21938:95:0;;33587:2:1;21938:95:0;;;33569:21:1;33626:2;33606:18;;;33599:30;33665:34;33645:18;;;33638:62;33736:12;33716:18;;;33709:40;33766:19;;21938:95:0;33385:406:1;21938:95:0;22095:4;22091:632;;;22121:6;;;;22116:596;;22152:19;;;;;;;22148:549;;;22245:4;22196:28;12855:16;;;;;;;;;;;22302:13;;22278:37;;22274:404;;22362:10;;22403:22;;;;22399:97;;;22460:13;;22450:6;;-1:-1:-1;;;;;22450:6:0;12828:7;12855:16;;;;;;;;;;;5432:5;;22440:33;;;:::i;:::-;22439:54;;;;:::i;:::-;22429:64;;22399:97;22550:7;22526:20;:31;22522:72;;22584:7;22561:30;;22522:72;22620:34;22633:20;22620:12;:34::i;:::-;22317:361;22274:404;22173:524;22148:549;22740:52;22757:4;22763:2;22767:6;22775:3;22780:4;22786:5;22740:16;:52::i;:::-;22733:59;20854:1946;-1:-1:-1;;;;;;;20854:1946:0:o;26379:1055::-;26498:4;26519:20;26530:4;26536:2;26519:10;:20::i;:::-;26515:228;;;26574:11;;:39;;;;;-1:-1:-1;;;;;34077:15:1;;;26574:39:0;;;34059:34:1;34129:15;;;34109:18;;;34102:43;34161:18;;;34154:34;;;26543:12:0;;26574:11;;;;;:21;;33971:18:1;;26574:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;26574:39:0;;;;;;;;-1:-1:-1;;26574:39:0;;;;;;;;;;;;:::i;:::-;;;26570:122;;26681:8;;;26570:122;26664:5;-1:-1:-1;26710:7:0;26706:26;;26721:8;;;26706:26;26541:202;26515:228;-1:-1:-1;;;;;26787:25:0;;26753:12;26787:25;;;:19;:25;;;;;;26768:4;;26787:25;;;:52;;-1:-1:-1;;;;;;26816:23:0;;;;;;:19;:23;;;;;;;;26787:52;26783:99;;;-1:-1:-1;26865:5:0;26783:99;-1:-1:-1;;;;;26892:13:0;;:7;:13;;;;;;;;;;:23;;26909:6;;26892:7;:23;;26909:6;;26892:23;:::i;:::-;;;;-1:-1:-1;26926:22:0;;-1:-1:-1;26952:7:0;26951:55;;27000:6;26951:55;;;26963:34;26973:4;26979:3;26984:4;26990:6;26963:9;:34::i;:::-;26926:80;;27032:14;27017:7;:11;27025:2;-1:-1:-1;;;;;27017:11:0;-1:-1:-1;;;;;27017:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;27077:2;-1:-1:-1;;;;;27062:34:0;27071:4;-1:-1:-1;;;;;27062:34:0;;27081:14;27062:34;;;;391:25:1;;379:2;364:18;;245:177;27062:34:0;;;;;;;;27112:16;;;;;;;27107:298;;27145:28;27164:4;27170:2;27145:18;:28::i;:::-;27193:16;;;;;;;27192:17;:41;;;;;27213:20;27224:4;27230:2;27213:10;:20::i;:::-;27192:77;;;;-1:-1:-1;;;;;;27238:31:0;;;;;;:25;:31;;;;;;;;27237:32;27192:77;:111;;;;-1:-1:-1;;;;;;27274:29:0;;;;;;:25;:29;;;;;;;;27273:30;27192:111;:121;;;;;27308:5;27307:6;27192:121;27188:206;;;27334:44;;-1:-1:-1;;;27334:44:0;;34401:2:1;27334:44:0;;;34383:21:1;34440:2;34420:18;;;34413:30;34479:34;34459:18;;;34452:62;34550:4;34530:18;;;34523:32;34572:19;;27334:44:0;34199:398:1;27188:206:0;-1:-1:-1;27422:4:0;;26379:1055;-1:-1:-1;;;;;;;;26379:1055:0:o;20400:446::-;20501:6;;20469:4;;-1:-1:-1;;;;;20493:14:0;;;20501:6;;;;;20493:14;;;;:43;;-1:-1:-1;20530:6:0;;-1:-1:-1;;;;;20524:12:0;;;20530:6;;;;;20524:12;;20493:43;:79;;;;-1:-1:-1;20566:6:0;;;;;-1:-1:-1;;;;;20566:6:0;20553:9;:19;;20493:79;:118;;;;-1:-1:-1;;;;;;20590:21:0;;;;;;:17;:21;;;;;;;;20589:22;20493:118;:159;;;;-1:-1:-1;;;;;;20629:23:0;;;;;;:17;:23;;;;;;;;20628:24;20493:159;:186;;;;-1:-1:-1;;;;;;20669:10:0;;5571:42;20669:10;;20493:186;:219;;;;-1:-1:-1;;;;;;20696:16:0;;;;20493:219;:257;;;;-1:-1:-1;;;;;;20729:21:0;;20745:4;20729:21;;20493:257;:302;;;;-1:-1:-1;20783:11:0;;-1:-1:-1;;;;;20767:28:0;;;20783:11;;;;;20767:28;;20493:302;:345;;;;-1:-1:-1;20826:11:0;;-1:-1:-1;;;;;20812:26:0;;;20826:11;;;;;20812:26;;20493:345;20486:352;20400:446;-1:-1:-1;;;20400:446:0:o;22808:1490::-;6636:6;:13;;-1:-1:-1;;6636:13:0;6645:4;6636:13;;;22891:30:::1;::::0;;::::1;::::0;::::1;::::0;;22914:7:::1;22891:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;;::::1;;::::0;;;;;;;6636:6;22936:21;22932:60:::1;;22974:7;;;22932:60;23027:4;23007:26;::::0;;;:11:::1;:26;::::0;;;;;;;23042:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;23042:9:0::1;23007:46:::0;;;;;;;;-1:-1:-1;;23007:67:0::1;23004:165;;23111:4;23091:26;::::0;;;:11:::1;:26;::::0;;;;;;;23126:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;23126:9:0::1;23091:46:::0;;;;;;;-1:-1:-1;;23091:66:0;;23004:165:::1;23184:18;::::0;23236:9:::1;::::0;23184:63:::1;::::0;;;;23221:4:::1;23184:63;::::0;::::1;10180:34:1::0;23184:18:0::1;23236:9:::0;;::::1;-1:-1:-1::0;;;;;23236:9:0;;::::1;10230:18:1::0;;;10223:43;-1:-1:-1;;23251:17:0;23184:18:::1;::::0;:28:::1;::::0;10092:18:1;;23184:63:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:84;23181:181;;23285:18;::::0;23320:9:::1;::::0;23285:65:::1;::::0;;;;-1:-1:-1;;;;;23285:18:0::1;23320:9:::0;;::::1;::::0;::::1;23285:65;::::0;::::1;21347:74:1::0;-1:-1:-1;;21437:18:1;;;21430:34;23285:18:0;::::1;::::0;:26:::1;::::0;21320:18:1;;23285:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23181:181;23406:16;::::0;;23420:1:::1;23406:16:::0;;;;;::::1;::::0;;23382:21:::1;::::0;23406:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23406:16:0::1;23382:40;;23451:4;23433;23438:1;23433:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23433:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;23477:11:::1;::::0;23467:7;;23477:11;::::1;::::0;23467:4;;23477:11;;23467:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;23467:21:0;;::::1;:7;::::0;;::::1;::::0;;;;;:21;23505:9:::1;::::0;23661:11:::1;::::0;23505:209:::1;::::0;;;;:9:::1;::::0;;::::1;::::0;::::1;::::0;:63:::1;::::0;:209:::1;::::0;23583:20;;23618:1:::1;::::0;23634:4;;23661:11;;::::1;::::0;;::::1;::::0;23688:15:::1;::::0;23505:209:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23501:256;;23739:7;;;;23501:256;23773:11;;;;;;;;;-1:-1:-1::0;;;;;23773:11:0::1;-1:-1:-1::0;;;;;23773:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23769:38:::0;23840:18:::1;::::0;:43:::1;::::0;;;;23877:4:::1;23840:43;::::0;::::1;160:74:1::0;23819:18:0::1;::::0;-1:-1:-1;;;;;23840:18:0::1;::::0;:28:::1;::::0;133:18:1;;23840:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23819:64;;23894:22;23951:6;:16;;;23919:48;;23933:6;:14;;;23920:27;;:10;:27;;;;:::i;:::-;23919:48;;;;:::i;:::-;23894:73:::0;-1:-1:-1;23978:24:0::1;24005:27;23894:73:::0;24005:10;:27:::1;:::i;:::-;24047:16;::::0;::::1;::::0;23978:54;;-1:-1:-1;24047:20:0::1;;::::0;24043:121:::1;;24084:18;::::0;24112:11:::1;:21:::0;24084:68:::1;::::0;;;;-1:-1:-1;;;;;24112:21:0;;::::1;24084:68;::::0;::::1;21347:74:1::0;21437:18;;;21430:34;;;24084:18:0;::::1;::::0;:27:::1;::::0;21320:18:1;;24084:68:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24043:121;24178:16;::::0;::::1;::::0;:20:::1;;::::0;24174:117:::1;;24215:18;::::0;24243:19;;24215:64:::1;::::0;;;;-1:-1:-1;;;;;24243:19:0;;::::1;24215:64;::::0;::::1;21347:74:1::0;21437:18;;;21430:34;;;24215:18:0;::::1;::::0;:27:::1;::::0;21320:18:1;;24215:64:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24174:117;22880:1418;;;;;6660:1;-1:-1:-1::0;6672:6:0;:14;;-1:-1:-1;;6672:14:0;;;22808:1490::o;27442:804::-;27530:7;27550:18;27583:3;27579:205;;;-1:-1:-1;27616:9:0;:16;;;27579:205;;;27654:4;27650:134;;;-1:-1:-1;27688:9:0;:17;;;;;;27650:134;;;-1:-1:-1;27751:9:0;:21;;;;;;27650:134;27798:10;27812:1;27798:15;27794:39;;27824:6;27817:13;;;;;27794:39;27855:11;;;;;-1:-1:-1;;;;;27855:11:0;27879:4;27847:37;:110;;;;;27902:13;27919:1;27902:18;:54;;;;27937:13;27954:2;27937:19;27902:54;27843:138;;;-1:-1:-1;27974:4:0;27843:138;27991:17;5432:5;28011:19;28020:10;28011:6;:19;:::i;:::-;:38;;;;:::i;:::-;27991:58;-1:-1:-1;28064:13:0;;28060:141;;28110:4;28094:7;:22;;;;;;;;;;:35;;28120:9;;28094:7;:35;;28120:9;;28094:35;:::i;:::-;;;;-1:-1:-1;;28149:40:0;;391:25:1;;;28172:4:0;;-1:-1:-1;;;;;28149:40:0;;;;;379:2:1;364:18;28149:40:0;;;;;;;28060:141;28220:18;28229:9;28220:6;:18;:::i;24306:563::-;24389:16;;;;;;;24388:17;24380:65;;;;-1:-1:-1;;;24380:65:0;;35835:2:1;24380:65:0;;;35817:21:1;35874:2;35854:18;;;35847:30;35913:34;35893:18;;;35886:62;35984:5;35964:18;;;35957:33;36007:19;;24380:65:0;35633:399:1;24380:65:0;24461:20;24472:4;24478:2;24461:10;:20::i;:::-;24460:21;:37;;;;-1:-1:-1;24491:6:0;;-1:-1:-1;;;;;24485:12:0;;;24491:6;;24485:12;24460:37;24456:406;;;-1:-1:-1;;;;;24514:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;24514:30:0;;;24540:4;24514:30;;;;;;24559:19;:25;;;;;:32;;;;;;;;;;24606:16;:23;;-1:-1:-1;;24606:23:0;24514:30;24606:23;;;;;24656:11;;;;24644:114;;24702:11;:40;;;;24736:4;24702:40;;;;;24644:114;24772:19;:26;;-1:-1:-1;;24772:26:0;;;;;24818:32;;-1:-1:-1;2404:41:1;;24818:32:0;;2392:2:1;2377:18;24818:32:0;2264:187:1;427:118;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;1301:250::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1486:11;;;1480:18;1467:11;;;1460:39;1432:2;1425:10;1396:113;;;-1:-1:-1;;1543:1:1;1525:16;;1518:27;1301:250::o;1556:455::-;1705:2;1694:9;1687:21;1668:4;1737:6;1731:13;1780:6;1775:2;1764:9;1760:18;1753:34;1796:79;1868:6;1863:2;1852:9;1848:18;1843:2;1835:6;1831:15;1796:79;:::i;:::-;1927:2;1915:15;-1:-1:-1;;1911:88:1;1896:104;;;;2002:2;1892:113;;1556:455;-1:-1:-1;;1556:455:1:o;2456:154::-;-1:-1:-1;;;;;2535:5:1;2531:54;2524:5;2521:65;2511:93;;2600:1;2597;2590:12;2615:315;2683:6;2691;2744:2;2732:9;2723:7;2719:23;2715:32;2712:52;;;2760:1;2757;2750:12;2712:52;2799:9;2786:23;2818:31;2843:5;2818:31;:::i;:::-;2868:5;2920:2;2905:18;;;;2892:32;;-1:-1:-1;;;2615:315:1:o;2935:247::-;2994:6;3047:2;3035:9;3026:7;3022:23;3018:32;3015:52;;;3063:1;3060;3053:12;3015:52;3102:9;3089:23;3121:31;3146:5;3121:31;:::i;3187:456::-;3264:6;3272;3280;3333:2;3321:9;3312:7;3308:23;3304:32;3301:52;;;3349:1;3346;3339:12;3301:52;3388:9;3375:23;3407:31;3432:5;3407:31;:::i;:::-;3457:5;-1:-1:-1;3514:2:1;3499:18;;3486:32;3527:33;3486:32;3527:33;:::i;:::-;3187:456;;3579:7;;-1:-1:-1;;;3633:2:1;3618:18;;;;3605:32;;3187:456::o;3648:248::-;3716:6;3724;3777:2;3765:9;3756:7;3752:23;3748:32;3745:52;;;3793:1;3790;3783:12;3745:52;-1:-1:-1;;3816:23:1;;;3886:2;3871:18;;;3858:32;;-1:-1:-1;3648:248:1:o;3901:184::-;3953:77;3950:1;3943:88;4050:4;4047:1;4040:15;4074:4;4071:1;4064:15;4090:334;4161:2;4155:9;4217:2;4207:13;;-1:-1:-1;;4203:86:1;4191:99;;4320:18;4305:34;;4341:22;;;4302:62;4299:88;;;4367:18;;:::i;:::-;4403:2;4396:22;4090:334;;-1:-1:-1;4090:334:1:o;4429:183::-;4489:4;4522:18;4514:6;4511:30;4508:56;;;4544:18;;:::i;:::-;-1:-1:-1;4589:1:1;4585:14;4601:4;4581:25;;4429:183::o;4617:662::-;4671:5;4724:3;4717:4;4709:6;4705:17;4701:27;4691:55;;4742:1;4739;4732:12;4691:55;4778:6;4765:20;4804:4;4828:60;4844:43;4884:2;4844:43;:::i;:::-;4828:60;:::i;:::-;4922:15;;;5008:1;5004:10;;;;4992:23;;4988:32;;;4953:12;;;;5032:15;;;5029:35;;;5060:1;5057;5050:12;5029:35;5096:2;5088:6;5084:15;5108:142;5124:6;5119:3;5116:15;5108:142;;;5190:17;;5178:30;;5228:12;;;;5141;;5108:142;;;-1:-1:-1;5268:5:1;4617:662;-1:-1:-1;;;;;;4617:662:1:o;5284:1215::-;5402:6;5410;5463:2;5451:9;5442:7;5438:23;5434:32;5431:52;;;5479:1;5476;5469:12;5431:52;5519:9;5506:23;5548:18;5589:2;5581:6;5578:14;5575:34;;;5605:1;5602;5595:12;5575:34;5643:6;5632:9;5628:22;5618:32;;5688:7;5681:4;5677:2;5673:13;5669:27;5659:55;;5710:1;5707;5700:12;5659:55;5746:2;5733:16;5768:4;5792:60;5808:43;5848:2;5808:43;:::i;5792:60::-;5886:15;;;5968:1;5964:10;;;;5956:19;;5952:28;;;5917:12;;;;5992:19;;;5989:39;;;6024:1;6021;6014:12;5989:39;6048:11;;;;6068:217;6084:6;6079:3;6076:15;6068:217;;;6164:3;6151:17;6181:31;6206:5;6181:31;:::i;:::-;6225:18;;6101:12;;;;6263;;;;6068:217;;;6304:5;-1:-1:-1;;6347:18:1;;6334:32;;-1:-1:-1;;6378:16:1;;;6375:36;;;6407:1;6404;6397:12;6375:36;;6430:63;6485:7;6474:8;6463:9;6459:24;6430:63;:::i;:::-;6420:73;;;5284:1215;;;;;:::o;6693:159::-;6760:20;;6820:6;6809:18;;6799:29;;6789:57;;6842:1;6839;6832:12;6789:57;6693:159;;;:::o;6857:328::-;6931:6;6939;6947;7000:2;6988:9;6979:7;6975:23;6971:32;6968:52;;;7016:1;7013;7006:12;6968:52;7039:28;7057:9;7039:28;:::i;:::-;7029:38;;7086:37;7119:2;7108:9;7104:18;7086:37;:::i;:::-;7076:47;;7142:37;7175:2;7164:9;7160:18;7142:37;:::i;:::-;7132:47;;6857:328;;;;;:::o;7190:382::-;7255:6;7263;7316:2;7304:9;7295:7;7291:23;7287:32;7284:52;;;7332:1;7329;7322:12;7284:52;7371:9;7358:23;7390:31;7415:5;7390:31;:::i;7577:180::-;7636:6;7689:2;7677:9;7668:7;7664:23;7660:32;7657:52;;;7705:1;7702;7695:12;7657:52;-1:-1:-1;7728:23:1;;7577:180;-1:-1:-1;7577:180:1:o;7762:256::-;7828:6;7836;7889:2;7877:9;7868:7;7864:23;7860:32;7857:52;;;7905:1;7902;7895:12;7857:52;7928:28;7946:9;7928:28;:::i;:::-;7918:38;;7975:37;8008:2;7997:9;7993:18;7975:37;:::i;:::-;7965:47;;7762:256;;;;;:::o;8023:388::-;8091:6;8099;8152:2;8140:9;8131:7;8127:23;8123:32;8120:52;;;8168:1;8165;8158:12;8120:52;8207:9;8194:23;8226:31;8251:5;8226:31;:::i;:::-;8276:5;-1:-1:-1;8333:2:1;8318:18;;8305:32;8346:33;8305:32;8346:33;:::i;8416:367::-;8479:8;8489:6;8543:3;8536:4;8528:6;8524:17;8520:27;8510:55;;8561:1;8558;8551:12;8510:55;-1:-1:-1;8584:20:1;;8627:18;8616:30;;8613:50;;;8659:1;8656;8649:12;8613:50;8696:4;8688:6;8684:17;8672:29;;8756:3;8749:4;8739:6;8736:1;8732:14;8724:6;8720:27;8716:38;8713:47;8710:67;;;8773:1;8770;8763:12;8710:67;8416:367;;;;;:::o;8788:908::-;8919:6;8927;8935;8943;8951;9004:2;8992:9;8983:7;8979:23;8975:32;8972:52;;;9020:1;9017;9010:12;8972:52;9060:9;9047:23;9089:18;9130:2;9122:6;9119:14;9116:34;;;9146:1;9143;9136:12;9116:34;9185:70;9247:7;9238:6;9227:9;9223:22;9185:70;:::i;:::-;9274:8;;-1:-1:-1;9159:96:1;-1:-1:-1;9362:2:1;9347:18;;9334:32;;-1:-1:-1;9378:16:1;;;9375:36;;;9407:1;9404;9397:12;9375:36;;9446:72;9510:7;9499:8;9488:9;9484:24;9446:72;:::i;:::-;9537:8;;-1:-1:-1;9420:98:1;-1:-1:-1;;9622:2:1;9607:18;;9594:32;9635:31;9594:32;9635:31;:::i;:::-;9685:5;9675:15;;;8788:908;;;;;;;;:::o;10277:385::-;10363:6;10371;10379;10387;10440:3;10428:9;10419:7;10415:23;10411:33;10408:53;;;10457:1;10454;10447:12;10408:53;-1:-1:-1;;10480:23:1;;;10550:2;10535:18;;10522:32;;-1:-1:-1;10601:2:1;10586:18;;10573:32;;10652:2;10637:18;10624:32;;-1:-1:-1;10277:385:1;-1:-1:-1;10277:385:1:o;11286:437::-;11365:1;11361:12;;;;11408;;;11429:61;;11483:4;11475:6;11471:17;11461:27;;11429:61;11536:2;11528:6;11525:14;11505:18;11502:38;11499:218;;11573:77;11570:1;11563:88;11674:4;11671:1;11664:15;11702:4;11699:1;11692:15;11499:218;;11286:437;;;:::o;11728:184::-;11780:77;11777:1;11770:88;11877:4;11874:1;11867:15;11901:4;11898:1;11891:15;11917:482;12006:1;12049:5;12006:1;12063:330;12084:7;12074:8;12071:21;12063:330;;;12203:4;-1:-1:-1;;12131:77:1;12125:4;12122:87;12119:113;;;12212:18;;:::i;:::-;12262:7;12252:8;12248:22;12245:55;;;12282:16;;;;12245:55;12361:22;;;;12321:15;;;;12063:330;;;12067:3;11917:482;;;;;:::o;12404:866::-;12453:5;12483:8;12473:80;;-1:-1:-1;12524:1:1;12538:5;;12473:80;12572:4;12562:76;;-1:-1:-1;12609:1:1;12623:5;;12562:76;12654:4;12672:1;12667:59;;;;12740:1;12735:130;;;;12647:218;;12667:59;12697:1;12688:10;;12711:5;;;12735:130;12772:3;12762:8;12759:17;12756:43;;;12779:18;;:::i;:::-;-1:-1:-1;;12835:1:1;12821:16;;12850:5;;12647:218;;12949:2;12939:8;12936:16;12930:3;12924:4;12921:13;12917:36;12911:2;12901:8;12898:16;12893:2;12887:4;12884:12;12880:35;12877:77;12874:159;;;-1:-1:-1;12986:19:1;;;13018:5;;12874:159;13065:34;13090:8;13084:4;13065:34;:::i;:::-;13195:6;-1:-1:-1;;13123:79:1;13114:7;13111:92;13108:118;;;13206:18;;:::i;:::-;13244:20;;12404:866;-1:-1:-1;;;12404:866:1:o;13275:140::-;13333:5;13362:47;13403:4;13393:8;13389:19;13383:4;13362:47;:::i;13420:274::-;13460:1;13486;13476:189;;13521:77;13518:1;13511:88;13622:4;13619:1;13612:15;13650:4;13647:1;13640:15;13476:189;-1:-1:-1;13679:9:1;;13420:274::o;13699:128::-;13766:9;;;13787:11;;;13784:37;;;13801:18;;:::i;13832:168::-;13905:9;;;13936;;13953:15;;;13947:22;;13933:37;13923:71;;13974:18;;:::i;14772:184::-;14824:77;14821:1;14814:88;14921:4;14918:1;14911:15;14945:4;14942:1;14935:15;15308:197;15346:3;15374:6;15415:2;15408:5;15404:14;15442:2;15433:7;15430:15;15427:41;;15448:18;;:::i;:::-;15497:1;15484:15;;15308:197;-1:-1:-1;;;15308:197:1:o;15510:125::-;15575:9;;;15596:10;;;15593:36;;;15609:18;;:::i;16338:168::-;16405:6;16431:10;;;16443;;;16427:27;;16466:11;;;16463:37;;;16480:18;;:::i;:::-;16463:37;16338:168;;;;:::o;20984:184::-;21054:6;21107:2;21095:9;21086:7;21082:23;21078:32;21075:52;;;21123:1;21120;21113:12;21075:52;-1:-1:-1;21146:16:1;;20984:184;-1:-1:-1;20984:184:1:o;21475:245::-;21542:6;21595:2;21583:9;21574:7;21570:23;21566:32;21563:52;;;21611:1;21608;21601:12;21563:52;21643:9;21637:16;21662:28;21684:5;21662:28;:::i;23143:569::-;23197:5;23250:3;23243:4;23235:6;23231:17;23227:27;23217:55;;23268:1;23265;23258:12;23217:55;23297:6;23291:13;23323:18;23319:2;23316:26;23313:52;;;23345:18;;:::i;:::-;23389:114;23497:4;-1:-1:-1;;23421:4:1;23417:2;23413:13;23409:86;23405:97;23389:114;:::i;:::-;23528:2;23519:7;23512:19;23574:3;23567:4;23562:2;23554:6;23550:15;23546:26;23543:35;23540:55;;;23591:1;23588;23581:12;23540:55;23604:77;23678:2;23671:4;23662:7;23658:18;23651:4;23643:6;23639:17;23604:77;:::i;23717:774::-;23832:6;23840;23848;23856;23909:3;23897:9;23888:7;23884:23;23880:33;23877:53;;;23926:1;23923;23916:12;23877:53;23959:9;23953:16;23988:18;24029:2;24021:6;24018:14;24015:34;;;24045:1;24042;24035:12;24015:34;24068:61;24121:7;24112:6;24101:9;24097:22;24068:61;:::i;:::-;24058:71;;24175:2;24164:9;24160:18;24154:25;24138:41;;24204:2;24194:8;24191:16;24188:36;;;24220:1;24217;24210:12;24188:36;;24243:63;24298:7;24287:8;24276:9;24272:24;24243:63;:::i;:::-;24233:73;;;24346:2;24335:9;24331:18;24325:25;24315:35;;24393:2;24382:9;24378:18;24372:25;24437:4;24430:5;24426:16;24419:5;24416:27;24406:55;;24457:1;24454;24447:12;24406:55;23717:774;;;;-1:-1:-1;23717:774:1;;-1:-1:-1;;23717:774:1:o;24951:545::-;25053:2;25048:3;25045:11;25042:448;;;25089:1;25114:5;25110:2;25103:17;25159:4;25155:2;25145:19;25229:2;25217:10;25213:19;25210:1;25206:27;25200:4;25196:38;25265:4;25253:10;25250:20;25247:47;;;-1:-1:-1;25288:4:1;25247:47;25343:2;25338:3;25334:12;25331:1;25327:20;25321:4;25317:31;25307:41;;25398:82;25416:2;25409:5;25406:13;25398:82;;;25461:17;;;25442:1;25431:13;25398:82;;25732:1471;25858:3;25852:10;25885:18;25877:6;25874:30;25871:56;;;25907:18;;:::i;:::-;25936:97;26026:6;25986:38;26018:4;26012:11;25986:38;:::i;:::-;25980:4;25936:97;:::i;:::-;26088:4;;26152:2;26141:14;;26169:1;26164:782;;;;26990:1;27007:6;27004:89;;;-1:-1:-1;27059:19:1;;;27053:26;27004:89;-1:-1:-1;;25629:1:1;25625:11;;;25621:84;25617:89;25607:100;25713:1;25709:11;;;25604:117;27106:81;;26134:1063;;26164:782;24898:1;24891:14;;;24935:4;24922:18;;-1:-1:-1;;26200:79:1;;;26377:236;26391:7;26388:1;26385:14;26377:236;;;26480:19;;;26474:26;26459:42;;26572:27;;;;26540:1;26528:14;;;;26407:19;;26377:236;;;26381:3;26641:6;26632:7;26629:19;26626:261;;;26702:19;;;26696:26;-1:-1:-1;;26785:1:1;26781:14;;;26797:3;26777:24;26773:97;26769:102;26754:118;26739:134;;26626:261;-1:-1:-1;;;;;26933:1:1;26917:14;;;26913:22;26900:36;;-1:-1:-1;25732:1471:1:o;27208:251::-;27278:6;27331:2;27319:9;27310:7;27306:23;27302:32;27299:52;;;27347:1;27344;27337:12;27299:52;27379:9;27373:16;27398:31;27423:5;27398:31;:::i;27464:195::-;27503:3;-1:-1:-1;;27527:5:1;27524:77;27521:103;;27604:18;;:::i;:::-;-1:-1:-1;27651:1:1;27640:13;;27464:195::o;28452:306::-;28540:6;28548;28556;28609:2;28597:9;28588:7;28584:23;28580:32;28577:52;;;28625:1;28622;28615:12;28577:52;28654:9;28648:16;28638:26;;28704:2;28693:9;28689:18;28683:25;28673:35;;28748:2;28737:9;28733:18;28727:25;28717:35;;28452:306;;;;;:::o;34602:1026::-;34864:4;34912:3;34901:9;34897:19;34943:6;34932:9;34925:25;34969:2;35007:6;35002:2;34991:9;34987:18;34980:34;35050:3;35045:2;35034:9;35030:18;35023:31;35074:6;35109;35103:13;35140:6;35132;35125:22;35178:3;35167:9;35163:19;35156:26;;35217:2;35209:6;35205:15;35191:29;;35238:1;35248:218;35262:6;35259:1;35256:13;35248:218;;;35327:13;;-1:-1:-1;;;;;35323:62:1;35311:75;;35441:15;;;;35406:12;;;;35284:1;35277:9;35248:218;;;-1:-1:-1;;;;;;;35522:55:1;;;;35517:2;35502:18;;35495:83;-1:-1:-1;;;35609:3:1;35594:19;35587:35;35483:3;34602:1026;-1:-1:-1;;;34602:1026:1:o

Swarm Source

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