ETH Price: $2,429.13 (+0.26%)
Gas: 6.83 Gwei

Token

Hive (BEEZ)
 

Overview

Max Total Supply

100,000,000,000 BEEZ

Holders

84

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
fuctup.eth
Balance
21,023,306.784023479012444378 BEEZ

Value
$0.00
0xE526F0DD4182A3Abd95e343A68Ca7cD4c7De910E
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:
Hive

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// 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 getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

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

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

contract Hive is IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) private _liquidityHolders;
   
    uint256 constant private startingSupply = 100_000_000_000;
    string constant private _name = "Hive";
    string constant private _symbol = "BEEZ";
    uint8 constant private _decimals = 18;

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

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

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

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

    Ratios public _ratios = Ratios({
        liquidity: 6,
        marketing: 14,
        dev: 13,
        total: 6 + 13 + 14
        });

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

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

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

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

    uint256 private _maxTxAmount = (_tTotal * 5) / 1000;
    uint256 private _maxWalletSize = (_tTotal * 1) / 100;

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

    bool lpInitialized = false;

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

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

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

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

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _isExcludedFromFees[_taxWallets.marketing] = true;
        _isExcludedFromFees[_taxWallets.dev] = true;
        _isExcludedFromFees[0x2D70c48779b1bA5b38820D870D22F7A176d3ADf5] = true;
        _isExcludedFromFees[0xAa8c1430962F554E382A634605760C39BA0f3A65] = true;
        _isExcludedFromFees[0x26B9B9Ad94276E1b202a286704C896FF9444a547] = true;
        _isExcludedFromLimits[_taxWallets.marketing] = true;
        _isExcludedFromLimits[_taxWallets.dev] = true;
        _isExcludedFromLimits[0x2D70c48779b1bA5b38820D870D22F7A176d3ADf5] = true;
        _isExcludedFromLimits[0xAa8c1430962F554E382A634605760C39BA0f3A65] = true;
        _isExcludedFromLimits[0x26B9B9Ad94276E1b202a286704C896FF9444a547] = true;
        _liquidityHolders[_owner] = true;
    }

    function initializeLP(uint256 amountTokens) public onlyOwner {
        require(!lpInitialized, "Already initialized");
        require(address(this).balance > 0 , "Contract must have ETH.");
        require(balanceOf(msg.sender) >= amountTokens * 10**18, "You do not have enough tokens.");

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

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

        lpInitialized = true;

        amountTokens *= 10**_decimals;
        _finalizeTransfer(msg.sender, address(this), amountTokens, false, false, false, true);

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _owner,
            block.timestamp
        );
        enableTrading();
    }

    function preInitializeTransfer(address to, uint256 amount) public onlyOwner {
        require(!lpInitialized);
        amount = amount*10**_decimals;
        _finalizeTransfer(msg.sender, to, amount, false, false, false, true);
    }

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

    receive() external payable {}

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

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

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        amtBalance -= liquidityBalance;
        ratios.total -= ratios.liquidity;
        uint256 devBalance = (amtBalance * ratios.dev) / ratios.total;
        uint256 marketingBalance = amtBalance - devBalance;
        if (ratios.marketing > 0) {
            _taxWallets.marketing.transfer(marketingBalance);
        }
        if (ratios.dev > 0) {
            _taxWallets.dev.transfer(devBalance);
        }
    }

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

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

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

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

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee, bool buy, bool sell, bool other) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                revert("Only owner can transfer at this time.");
            }
        }

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

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

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

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

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

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;

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

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

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

600060038190556104b0608081905261083460a05260c0526009805465ffffffffffff19166504b0083404b0179055600660e052600e610100819052600d610120819052602161014052600a80546001600160401b0319166621000d000e00061781556101a060405273b4a8fe977cb73d04c131dd5efb0e601682abf33a610160819052733c57a61862acc9771778083bdf56c52793a609d561018081905283546001600160a01b0319908116909217909355835416909117909155600f805461ff00191690556010919091556103e890620000de90601290620005ef565b620000ef9064174876e80062000607565b620000fc90600562000607565b62000108919062000629565b60145560646200011b6012600a620005ef565b6200012c9064174876e80062000607565b6200013990600162000607565b62000145919062000629565b6015556016805461ffff60ff60b01b0119169055620001676012600a620005ef565b620001789064174876e80062000607565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001bb6012600a620005ef565b620001cc9064174876e80062000607565b60405190815260200160405180910390a3600080546001600160a01b03191633179055466038036200022457600b80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e17905562000317565b466061036200025957600b80546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c317905562000317565b4660011480620002695750466004145b80620002755750466003145b15620002a757600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905562000317565b4661a86a03620002dd57600b80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d417905562000317565b4660fa036200031257600b80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c2917905562000317565b600080fd5b600080546001600160a01b0390811682526005602090815260408084208054600160ff19918216811790925530865282862080548216831790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba8054821683179055600d8054861687528387208054831684179055600e80548716885284882080548416851790557fd0f8323d5cdda77a8986024f8bdd959ff9652ac5f48b36ec434196e51a0d4a4c80548416851790557f8aa5e76c4f7611fb5820b804af46f402f78806dcb6f08bf35332fa89d551b17f80548416851790557fa0862aa6a63c0a0ca1993d44555fbda923e3e28d5c816e8ef0737a85f8e36c1d8054841685179055905486168752600685528387208054831684179055548516865282862080548216831790557f20087f64db27dd3198a323deec3080cd1168f51733a5c1289b0c19815e9f45d380548216831790557f8ba00e5dd1073a97c1cc30b6579269786b32038f013a8143c215609f8813629880548216831790557f1cce65d49d11b4441c72e5463552b4781bcf8134b7c51359aeb2e1ddb85556b78054821683179055855490941685526008909252909220805490911690911790556200064c565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000531578160001904821115620005155762000515620004da565b808516156200052357918102915b93841c9390800290620004f5565b509250929050565b6000826200054a57506001620005e9565b816200055957506000620005e9565b81600181146200057257600281146200057d576200059d565b6001915050620005e9565b60ff841115620005915762000591620004da565b50506001821b620005e9565b5060208310610133831016604e8410600b8410161715620005c2575081810a620005e9565b620005ce8383620004f0565b8060001904821115620005e557620005e5620004da565b0290505b92915050565b60006200060060ff84168362000539565b9392505050565b6000816000190483118215151615620006245762000624620004da565b500290565b6000826200064757634e487b7160e01b600052601260045260246000fd5b500490565b614461806200065c6000396000f3fe6080604052600436106103645760003560e01c80634fbee193116101c6578063aa22b172116100f7578063e4fcfd1811610095578063eec2744e1161006f578063eec2744e14610a85578063f94aa1b414610aa5578063fdb78c0e14610aec578063fe575a8714610b0b57600080fd5b8063e4fcfd1814610a3a578063eafb5a3c14610a50578063ee5d9c2d14610a7057600080fd5b8063cab5ebea116100d1578063cab5ebea14610949578063cf84770614610969578063d3f6a157146109d4578063dd62ed3e146109f457600080fd5b8063aa22b17214610929578063b1b08f71146105c8578063b3d514fb146105c857600080fd5b8063715018a6116101645780638a63bd9b1161013e5780638a63bd9b146108995780638a8c523c146108ae57806395d89b41146108c3578063a9059cbb1461090957600080fd5b8063715018a61461084657806380c581d11461085b578063893d20e81461087b57600080fd5b80635c24b074116101a05780635c24b074146107a25780635cce86cd146107c25780636ebd0078146107fb57806370a082311461081057600080fd5b80634fbee1931461072a57806350a8e01614610763578063590ffdce1461078257600080fd5b806326003957116102a057806333251a0b1161023e5780633f3cf56c116102185780633f3cf56c146106b0578063452ed4f1146106d05780634ada218b146106f05780634fb2e45d1461070a57600080fd5b806333251a0b1461065057806334cd82601461067057806336fddb041461069057600080fd5b80632cee76021161027a5780632cee7602146105de5780632e8fa821146105fe578063313ce5671461061457806332cde6641461063057600080fd5b806326003957146105885780632610eaca146105a85780632b28fc7a146105c857600080fd5b80630758d9241161030d5780630fa604e4116102e75780630fa604e41461051e57806318160ddd146105335780631cc43f071461054857806323b872dd1461056857600080fd5b80630758d924146104ae578063095ea7b3146104ce578063098f8b02146104fe57600080fd5b806305bbedb61161033e57806305bbedb6146103e9578063069d955f1461040957806306fdde031461045f57600080fd5b806303fd2a45146103705780630445b667146103a3578063044df726146103c757600080fd5b3661036b57005b600080fd5b34801561037c57600080fd5b5061038661dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103af57600080fd5b506103b960125481565b60405190815260200161039a565b3480156103d357600080fd5b506103e76103e2366004613c7d565b610b2b565b005b3480156103f557600080fd5b506103e7610404366004613dc3565b610c08565b34801561041557600080fd5b5060095461043a9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161039a565b34801561046b57600080fd5b5060408051808201909152600481527f486976650000000000000000000000000000000000000000000000000000000060208201525b60405161039a9190613e0a565b3480156104ba57600080fd5b50600b54610386906001600160a01b031681565b3480156104da57600080fd5b506104ee6104e9366004613e5f565b610ca6565b604051901515815260200161039a565b34801561050a57600080fd5b506103e7610519366004613e8b565b610cbd565b34801561052a57600080fd5b506103b9611188565b34801561053f57600080fd5b506103b96111a8565b34801561055457600080fd5b506103e7610563366004613ea4565b6111ec565b34801561057457600080fd5b506104ee610583366004613f5f565b611341565b34801561059457600080fd5b506103e76105a3366004613fa0565b6113b9565b3480156105b457600080fd5b506103e76105c3366004613ea4565b61150c565b3480156105d457600080fd5b506103b96109c481565b3480156105ea57600080fd5b506103e76105f9366004613e5f565b611628565b34801561060a57600080fd5b506103b960135481565b34801561062057600080fd5b506040516012815260200161039a565b34801561063c57600080fd5b506103e761064b366004613fd9565b6116ca565b34801561065c57600080fd5b506103e761066b36600461401c565b611805565b34801561067c57600080fd5b506103e761068b366004614039565b6118d5565b34801561069c57600080fd5b506103e76106ab366004614074565b611997565b3480156106bc57600080fd5b506103e76106cb366004613fa0565b611a10565b3480156106dc57600080fd5b50600c54610386906001600160a01b031681565b3480156106fc57600080fd5b506016546104ee9060ff1681565b34801561071657600080fd5b506103e761072536600461401c565b611b63565b34801561073657600080fd5b506104ee61074536600461401c565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561076f57600080fd5b506016546104ee90610100900460ff1681565b34801561078e57600080fd5b506103e761079d366004614074565b611d8e565b3480156107ae57600080fd5b506103e76107bd36600461401c565b611e07565b3480156107ce57600080fd5b506104ee6107dd36600461401c565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561080757600080fd5b506103b9611f02565b34801561081c57600080fd5b506103b961082b36600461401c565b6001600160a01b031660009081526001602052604090205490565b34801561085257600080fd5b506103e7611f1d565b34801561086757600080fd5b506103e7610876366004614074565b611fcd565b34801561088757600080fd5b506000546001600160a01b0316610386565b3480156108a557600080fd5b506104ee61217c565b3480156108ba57600080fd5b506103e76121eb565b3480156108cf57600080fd5b5060408051808201909152600481527f4245455a0000000000000000000000000000000000000000000000000000000060208201526104a1565b34801561091557600080fd5b506104ee610924366004613e5f565b612453565b34801561093557600080fd5b506103e7610944366004613fd9565b61246a565b34801561095557600080fd5b506103e7610964366004614092565b61257d565b34801561097557600080fd5b50600a546109a69061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161039a565b3480156109e057600080fd5b506103e76109ef3660046140af565b61261f565b348015610a0057600080fd5b506103b9610a0f3660046140af565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a4657600080fd5b506103b960105481565b348015610a5c57600080fd5b506103e7610a6b36600461401c565b6126a8565b348015610a7c57600080fd5b506103e7612a57565b348015610a9157600080fd5b506103e7610aa0366004614074565b612b37565b348015610ab157600080fd5b50600d54600e54610acc916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161039a565b348015610af857600080fd5b50600f546104ee90610100900460ff1681565b348015610b1757600080fd5b506104ee610b2636600461401c565b612bdf565b6000546001600160a01b03163314610b7e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6016546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610bec57600080fd5b505af1158015610c00573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610c565760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6016546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610bd29085908590600401614121565b6000610cb3338484612c6d565b5060015b92915050565b6000546001600160a01b03163314610d0b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b601654760100000000000000000000000000000000000000000000900460ff1615610d785760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610b75565b60004711610dc85760405162461bcd60e51b815260206004820152601760248201527f436f6e7472616374206d7573742068617665204554482e0000000000000000006044820152606401610b75565b610dda81670de0b6b3a7640000614174565b336000908152600160205260409020541015610e385760405162461bcd60e51b815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e732e00006044820152606401610b75565b600b60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaf9190614193565b6001600160a01b031663c9c65396600b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f349190614193565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015610f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbc9190614193565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039283169081179091556000908152600260205260408120805460ff1916600117905554600b54611016929182169116600019612c6d565b600b546110309030906001600160a01b0316600019612c6d565b601680547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff1676010000000000000000000000000000000000000000000017905561107d6012600a614294565b6110879082614174565b905061109b33308360008060006001612d7a565b50600b546001600160a01b031663f305d71947306110ce816001600160a01b031660009081526001602052604090205490565b6000805460405160e087901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03948516600482015260248101939093526044830182905260648301919091529190911660848201524260a482015260c40160606040518083038185885af1158015611155573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061117a91906142a3565b5050506111856121eb565b50565b60006111966012600a614294565b6015546111a391906142d1565b905090565b60006111b66012600a614294565b6111c59064174876e800614174565b6000036111d157600080fd5b6111dd6012600a614294565b6111a39064174876e800614174565b6000546001600160a01b0316331461123a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b805182511461128b5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b75565b60005b82518160ff16101561133c576112a66012600a614294565b828260ff16815181106112bb576112bb61430c565b60200260200101516112cd9190614174565b3360009081526001602052604090205410156112e857600080fd5b61132a838260ff16815181106113005761130061430c565b6020026020010151838360ff168151811061131d5761131d61430c565b6020026020010151611628565b806113348161433b565b91505061128e565b505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146113a6576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906113a090849061435a565b90915550505b6113b1848484612fba565b949350505050565b6000546001600160a01b031633146114075760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6103e86114166012600a614294565b6114259064174876e800614174565b61142f91906142d1565b818361143d6012600a614294565b61144c9064174876e800614174565b6114569190614174565b61146091906142d1565b10156114d45760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610b75565b80826114e26012600a614294565b6114f19064174876e800614174565b6114fb9190614174565b61150591906142d1565b6015555050565b805182511461155d5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b75565b60005b82518160ff16101561133c57818160ff16815181106115815761158161430c565b60200260200101516115a8336001600160a01b031660009081526001602052604090205490565b10156115b357600080fd5b61161533848360ff16815181106115cc576115cc61430c565b60200260200101516012600a6115e29190614294565b858560ff16815181106115f7576115f761430c565b60200260200101516116099190614174565b60008060006001612d7a565b50806116208161433b565b915050611560565b6000546001600160a01b031633146116765760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b601654760100000000000000000000000000000000000000000000900460ff16156116a057600080fd5b6116ac6012600a614294565b6116b69082614174565b905061133c33838360008060006001612d7a565b6000546001600160a01b031633146117185760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6109c48361ffff161115801561173457506109c48261ffff1611155b801561174657506109c48161ffff1611155b6117925760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b75565b6009805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146118535760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6016546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b1580156118ba57600080fd5b505af11580156118ce573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146119235760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b83856119316012600a614294565b6119409064174876e800614174565b61194a9190614174565b61195491906142d1565b60129081558290849061196890600a614294565b6119779064174876e800614174565b6119819190614174565b61198b91906142d1565b60135560105550505050565b6000546001600160a01b031633146119e55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a5e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6103e8611a6d6012600a614294565b611a7c9064174876e800614174565b611a8691906142d1565b8183611a946012600a614294565b611aa39064174876e800614174565b611aad9190614174565b611ab791906142d1565b1015611b2b5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b75565b8082611b396012600a614294565b611b489064174876e800614174565b611b529190614174565b611b5c91906142d1565b6014555050565b6000546001600160a01b03163314611bb15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6001600160a01b038116611c2d5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b75565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b03821601611ccb5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b75565b60008054611ce4916001600160a01b0390911690611d8e565b611cef816001611d8e565b600080546001600160a01b031681526001602052604090205415611d3657600080546001600160a01b03168082526001602052604090912054611d3491908390612fba565b505b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314611ddc5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611e555760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b601654610100900460ff1615611e6a57600080fd5b306001600160a01b03821603611ec25760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b75565b601680546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611f106012600a614294565b6014546111a391906142d1565b6000546001600160a01b03163314611f6b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b60008054611f84916001600160a01b0390911690611d8e565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461201b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b801515600003612097576001600160a01b03828116600081815260026020526040808220805460ff1916905560165490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610bd2565b600354156120fe576203f480600354426120b1919061435a565b116120fe5760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610b75565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560165491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610bd2565b5050565b600080546001600160a01b031633146121cb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b600b546121e59030906001600160a01b0316600019612c6d565b50600190565b6000546001600160a01b031633146122395760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b60165460ff161561228c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b75565b601654610100900460ff166122e35760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b75565b6016546201000090046001600160a01b031661232957601680547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601654600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156123b457600080fd5b505af19250505080156123c5575060015b506016805460ff19166001179055600c5461271090612402906001600160a01b03166001600160a01b031660009081526001602052604090205490565b61240d906005614174565b61241791906142d1565b601255600c546001600160a01b03166000908152600160205260409020546103e890612444906001614174565b61244e91906142d1565b601355565b6000612460338484612fba565b5060019392505050565b6000546001600160a01b031633146124b85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b600a805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909416928816929092179290921716179055806125308385614371565b61253a9190614371565b600a805461ffff929092166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff909216919091179055505050565b6000546001600160a01b031633146125cb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b600f80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579061261490831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461266d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b600d80546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff1991821617909155600e8054929093169116179055565b6000546001600160a01b031633146126f65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561273b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275f9190614193565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d09190614193565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128579190614193565b90506001600160a01b0381166129f557816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c99190614193565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293a9190614193565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561299f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c39190614193565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612a1e565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915561133c903090600019612c6d565b6000546001600160a01b03163314612aa55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b601654610100900460ff1615612afd5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b75565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611185573d6000803e3d6000fd5b6000546001600160a01b03163314612b855760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6016546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610bd2565b6016546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb79190614397565b6001600160a01b038316612cc35760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b75565b6001600160a01b038216612d195760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b75565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601654600090610100900460ff16612e2657612d9688886134db565b601654610100900460ff16158015612db35750612db38888613639565b15612e265760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610b75565b612e308888613639565b15612ee3576016546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612ecc575060408051601f3d908101601f19168201909252612ec991810190614397565b60015b612ed557600080fd5b905080612ee157600080fd5b505b6001600160a01b03881660009081526001602052604081208054889290612f0b90849061435a565b909155506000905085612f1e5786612f2a565b612f2a8986868a61370e565b6001600160a01b038916600090815260016020526040812080549293508392909190612f579084906143b4565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fa391815260200190565b60405180910390a350600198975050505050505050565b60006001600160a01b0384166130385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b75565b6001600160a01b0383166130b45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610b75565b6000821161312a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610b75565b601654760100000000000000000000000000000000000000000000900460ff166131965760405162461bcd60e51b815260206004820152601d60248201527f4c50206d75737420626520696e746969616c697a6564206669727374210000006044820152606401610b75565b6001600160a01b0384166000908152600260205260408120548190819060ff16156131c457600192506131f2565b6001600160a01b03861660009081526002602052604090205460ff16156131ee57600191506131f2565b5060015b6131fc8787613639565b156134025760165460ff166132535760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b75565b828061325c5750815b15613320576001600160a01b03871660009081526006602052604090205460ff161580156132a357506001600160a01b03861660009081526006602052604090205460ff16155b15613320576014548511156133205760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610b75565b600b546001600160a01b0387811691161480159061333c575081155b15613402576001600160a01b03861660009081526006602052604090205460ff166134025760155485613384886001600160a01b031660009081526001602052604090205490565b61338e91906143b4565b11156134025760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610b75565b6001600160a01b03871660009081526005602052604090205460019060ff168061344457506001600160a01b03871660009081526005602052604090205460ff165b1561344d575060005b82156134c057600f5460ff1615801561346d5750600f54610100900460ff165b156134c0574260105460115461348391906143b4565b10156134c0573060009081526001602052604090205460125481106134be5760135481106134b057506013545b6134b9816137e5565b426011555b505b6134cf88888884888888612d7a565b98975050505050505050565b601654610100900460ff16156135595760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610b75565b6135638282613639565b15801561357d5750600c546001600160a01b038281169116145b15612178576001600160a01b038083166000908152600860205260409020805460ff191660011790556016805461ff0019166101001790819055620100009004166135f257601680547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b600080546001600160a01b0384811691161480159061366657506000546001600160a01b03838116911614155b801561367d57506000546001600160a01b03163214155b80156136a257506001600160a01b03821660009081526008602052604090205460ff16155b80156136c757506001600160a01b03831660009081526008602052604090205460ff16155b80156136de57506001600160a01b03821661dead14155b80156136f257506001600160a01b03821615155b801561370757506001600160a01b0383163014155b9392505050565b6000808415613724575060095461ffff1661374e565b831561373d575060095462010000900461ffff1661374e565b50600954640100000000900461ffff165b600061271061375d8386614174565b61376791906142d1565b3060009081526001602052604081208054929350839290919061378b9084906143b4565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36137da818561435a565b979650505050505050565b600f805460ff1916600117905560408051608081018252600a5461ffff808216835262010000820481166020840152640100000000820481169383019390935266010000000000009004909116606082018190526000036138465750613c62565b306000908152600460209081526040808320600b546001600160a01b031684529091529020546000191461389f57306000908152600460209081526040808320600b546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff16856138c09190614174565b6138ca91906142d1565b6138d491906142d1565b905060006138e2828561435a565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061391c5761391c61430c565b6001600160a01b03928316602091820292909201810191909152600b54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa15801561398e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139b29190614193565b816001815181106139c5576139c561430c565b6001600160a01b039283166020918202929092010152600b546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613a249085906000908690309042906004016143cc565b600060405180830381600087803b158015613a3e57600080fd5b505af1158015613a52573d6000803e3d6000fd5b5047925060009150849050613a678684614174565b613a7191906142d1565b90508415613b6257600b546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015613b00573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b2591906142a3565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b613b6c818361435a565b9150856000015186606001818151613b849190614408565b61ffff908116909152606088015160408901516000935090821691613baa911685614174565b613bb491906142d1565b90506000613bc2828561435a565b602089015190915061ffff1615613c0f57600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613c0d573d6000803e3d6000fd5b505b604088015161ffff1615613c5957600e546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015613c57573d6000803e3d6000fd5b505b50505050505050505b50600f805460ff19169055565b801515811461118557600080fd5b60008060408385031215613c9057600080fd5b8235613c9b81613c6f565b91506020830135613cab81613c6f565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613d0e57613d0e613cb6565b604052919050565b600067ffffffffffffffff821115613d3057613d30613cb6565b5060051b60200190565b6001600160a01b038116811461118557600080fd5b600082601f830112613d6057600080fd5b81356020613d75613d7083613d16565b613ce5565b82815260059290921b84018101918181019086841115613d9457600080fd5b8286015b84811015613db8578035613dab81613d3a565b8352918301918301613d98565b509695505050505050565b60008060408385031215613dd657600080fd5b823567ffffffffffffffff811115613ded57600080fd5b613df985828601613d4f565b9250506020830135613cab81613c6f565b600060208083528351808285015260005b81811015613e3757858101830151858201604001528201613e1b565b81811115613e49576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215613e7257600080fd5b8235613e7d81613d3a565b946020939093013593505050565b600060208284031215613e9d57600080fd5b5035919050565b60008060408385031215613eb757600080fd5b823567ffffffffffffffff80821115613ecf57600080fd5b613edb86838701613d4f565b9350602091508185013581811115613ef257600080fd5b85019050601f81018613613f0557600080fd5b8035613f13613d7082613d16565b81815260059190911b82018301908381019088831115613f3257600080fd5b928401925b82841015613f5057833582529284019290840190613f37565b80955050505050509250929050565b600080600060608486031215613f7457600080fd5b8335613f7f81613d3a565b92506020840135613f8f81613d3a565b929592945050506040919091013590565b60008060408385031215613fb357600080fd5b50508035926020909101359150565b803561ffff81168114613fd457600080fd5b919050565b600080600060608486031215613fee57600080fd5b613ff784613fc2565b925061400560208501613fc2565b915061401360408501613fc2565b90509250925092565b60006020828403121561402e57600080fd5b813561370781613d3a565b600080600080600060a0868803121561405157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561408757600080fd5b8235613c9b81613d3a565b6000602082840312156140a457600080fd5b813561370781613c6f565b600080604083850312156140c257600080fd5b82356140cd81613d3a565b91506020830135613cab81613d3a565b600081518084526020808501945080840160005b838110156141165781516001600160a01b0316875295820195908201906001016140f1565b509495945050505050565b60408152600061413460408301856140dd565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600081600019048311821515161561418e5761418e614145565b500290565b6000602082840312156141a557600080fd5b815161370781613d3a565b600181815b808511156141eb5781600019048211156141d1576141d1614145565b808516156141de57918102915b93841c93908002906141b5565b509250929050565b60008261420257506001610cb7565b8161420f57506000610cb7565b8160018114614225576002811461422f5761424b565b6001915050610cb7565b60ff84111561424057614240614145565b50506001821b610cb7565b5060208310610133831016604e8410600b841016171561426e575081810a610cb7565b61427883836141b0565b806000190482111561428c5761428c614145565b029392505050565b600061370760ff8416836141f3565b6000806000606084860312156142b857600080fd5b8351925060208401519150604084015190509250925092565b600082614307577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff810361435157614351614145565b60010192915050565b60008282101561436c5761436c614145565b500390565b600061ffff80831681851680830382111561438e5761438e614145565b01949350505050565b6000602082840312156143a957600080fd5b815161370781613c6f565b600082198211156143c7576143c7614145565b500190565b85815284602082015260a0604082015260006143eb60a08301866140dd565b6001600160a01b0394909416606083015250608001529392505050565b600061ffff8381169083168181101561442357614423614145565b03939250505056fea26469706673582212200c6b83ff93914974a1374f12b03d3892ec7fc77152849fa203a27bd520bb3c4a64736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106103645760003560e01c80634fbee193116101c6578063aa22b172116100f7578063e4fcfd1811610095578063eec2744e1161006f578063eec2744e14610a85578063f94aa1b414610aa5578063fdb78c0e14610aec578063fe575a8714610b0b57600080fd5b8063e4fcfd1814610a3a578063eafb5a3c14610a50578063ee5d9c2d14610a7057600080fd5b8063cab5ebea116100d1578063cab5ebea14610949578063cf84770614610969578063d3f6a157146109d4578063dd62ed3e146109f457600080fd5b8063aa22b17214610929578063b1b08f71146105c8578063b3d514fb146105c857600080fd5b8063715018a6116101645780638a63bd9b1161013e5780638a63bd9b146108995780638a8c523c146108ae57806395d89b41146108c3578063a9059cbb1461090957600080fd5b8063715018a61461084657806380c581d11461085b578063893d20e81461087b57600080fd5b80635c24b074116101a05780635c24b074146107a25780635cce86cd146107c25780636ebd0078146107fb57806370a082311461081057600080fd5b80634fbee1931461072a57806350a8e01614610763578063590ffdce1461078257600080fd5b806326003957116102a057806333251a0b1161023e5780633f3cf56c116102185780633f3cf56c146106b0578063452ed4f1146106d05780634ada218b146106f05780634fb2e45d1461070a57600080fd5b806333251a0b1461065057806334cd82601461067057806336fddb041461069057600080fd5b80632cee76021161027a5780632cee7602146105de5780632e8fa821146105fe578063313ce5671461061457806332cde6641461063057600080fd5b806326003957146105885780632610eaca146105a85780632b28fc7a146105c857600080fd5b80630758d9241161030d5780630fa604e4116102e75780630fa604e41461051e57806318160ddd146105335780631cc43f071461054857806323b872dd1461056857600080fd5b80630758d924146104ae578063095ea7b3146104ce578063098f8b02146104fe57600080fd5b806305bbedb61161033e57806305bbedb6146103e9578063069d955f1461040957806306fdde031461045f57600080fd5b806303fd2a45146103705780630445b667146103a3578063044df726146103c757600080fd5b3661036b57005b600080fd5b34801561037c57600080fd5b5061038661dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103af57600080fd5b506103b960125481565b60405190815260200161039a565b3480156103d357600080fd5b506103e76103e2366004613c7d565b610b2b565b005b3480156103f557600080fd5b506103e7610404366004613dc3565b610c08565b34801561041557600080fd5b5060095461043a9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161039a565b34801561046b57600080fd5b5060408051808201909152600481527f486976650000000000000000000000000000000000000000000000000000000060208201525b60405161039a9190613e0a565b3480156104ba57600080fd5b50600b54610386906001600160a01b031681565b3480156104da57600080fd5b506104ee6104e9366004613e5f565b610ca6565b604051901515815260200161039a565b34801561050a57600080fd5b506103e7610519366004613e8b565b610cbd565b34801561052a57600080fd5b506103b9611188565b34801561053f57600080fd5b506103b96111a8565b34801561055457600080fd5b506103e7610563366004613ea4565b6111ec565b34801561057457600080fd5b506104ee610583366004613f5f565b611341565b34801561059457600080fd5b506103e76105a3366004613fa0565b6113b9565b3480156105b457600080fd5b506103e76105c3366004613ea4565b61150c565b3480156105d457600080fd5b506103b96109c481565b3480156105ea57600080fd5b506103e76105f9366004613e5f565b611628565b34801561060a57600080fd5b506103b960135481565b34801561062057600080fd5b506040516012815260200161039a565b34801561063c57600080fd5b506103e761064b366004613fd9565b6116ca565b34801561065c57600080fd5b506103e761066b36600461401c565b611805565b34801561067c57600080fd5b506103e761068b366004614039565b6118d5565b34801561069c57600080fd5b506103e76106ab366004614074565b611997565b3480156106bc57600080fd5b506103e76106cb366004613fa0565b611a10565b3480156106dc57600080fd5b50600c54610386906001600160a01b031681565b3480156106fc57600080fd5b506016546104ee9060ff1681565b34801561071657600080fd5b506103e761072536600461401c565b611b63565b34801561073657600080fd5b506104ee61074536600461401c565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561076f57600080fd5b506016546104ee90610100900460ff1681565b34801561078e57600080fd5b506103e761079d366004614074565b611d8e565b3480156107ae57600080fd5b506103e76107bd36600461401c565b611e07565b3480156107ce57600080fd5b506104ee6107dd36600461401c565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561080757600080fd5b506103b9611f02565b34801561081c57600080fd5b506103b961082b36600461401c565b6001600160a01b031660009081526001602052604090205490565b34801561085257600080fd5b506103e7611f1d565b34801561086757600080fd5b506103e7610876366004614074565b611fcd565b34801561088757600080fd5b506000546001600160a01b0316610386565b3480156108a557600080fd5b506104ee61217c565b3480156108ba57600080fd5b506103e76121eb565b3480156108cf57600080fd5b5060408051808201909152600481527f4245455a0000000000000000000000000000000000000000000000000000000060208201526104a1565b34801561091557600080fd5b506104ee610924366004613e5f565b612453565b34801561093557600080fd5b506103e7610944366004613fd9565b61246a565b34801561095557600080fd5b506103e7610964366004614092565b61257d565b34801561097557600080fd5b50600a546109a69061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161039a565b3480156109e057600080fd5b506103e76109ef3660046140af565b61261f565b348015610a0057600080fd5b506103b9610a0f3660046140af565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a4657600080fd5b506103b960105481565b348015610a5c57600080fd5b506103e7610a6b36600461401c565b6126a8565b348015610a7c57600080fd5b506103e7612a57565b348015610a9157600080fd5b506103e7610aa0366004614074565b612b37565b348015610ab157600080fd5b50600d54600e54610acc916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161039a565b348015610af857600080fd5b50600f546104ee90610100900460ff1681565b348015610b1757600080fd5b506104ee610b2636600461401c565b612bdf565b6000546001600160a01b03163314610b7e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6016546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610bec57600080fd5b505af1158015610c00573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610c565760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6016546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610bd29085908590600401614121565b6000610cb3338484612c6d565b5060015b92915050565b6000546001600160a01b03163314610d0b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b601654760100000000000000000000000000000000000000000000900460ff1615610d785760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610b75565b60004711610dc85760405162461bcd60e51b815260206004820152601760248201527f436f6e7472616374206d7573742068617665204554482e0000000000000000006044820152606401610b75565b610dda81670de0b6b3a7640000614174565b336000908152600160205260409020541015610e385760405162461bcd60e51b815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e732e00006044820152606401610b75565b600b60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaf9190614193565b6001600160a01b031663c9c65396600b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f349190614193565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015610f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbc9190614193565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039283169081179091556000908152600260205260408120805460ff1916600117905554600b54611016929182169116600019612c6d565b600b546110309030906001600160a01b0316600019612c6d565b601680547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff1676010000000000000000000000000000000000000000000017905561107d6012600a614294565b6110879082614174565b905061109b33308360008060006001612d7a565b50600b546001600160a01b031663f305d71947306110ce816001600160a01b031660009081526001602052604090205490565b6000805460405160e087901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03948516600482015260248101939093526044830182905260648301919091529190911660848201524260a482015260c40160606040518083038185885af1158015611155573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061117a91906142a3565b5050506111856121eb565b50565b60006111966012600a614294565b6015546111a391906142d1565b905090565b60006111b66012600a614294565b6111c59064174876e800614174565b6000036111d157600080fd5b6111dd6012600a614294565b6111a39064174876e800614174565b6000546001600160a01b0316331461123a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b805182511461128b5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b75565b60005b82518160ff16101561133c576112a66012600a614294565b828260ff16815181106112bb576112bb61430c565b60200260200101516112cd9190614174565b3360009081526001602052604090205410156112e857600080fd5b61132a838260ff16815181106113005761130061430c565b6020026020010151838360ff168151811061131d5761131d61430c565b6020026020010151611628565b806113348161433b565b91505061128e565b505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146113a6576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906113a090849061435a565b90915550505b6113b1848484612fba565b949350505050565b6000546001600160a01b031633146114075760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6103e86114166012600a614294565b6114259064174876e800614174565b61142f91906142d1565b818361143d6012600a614294565b61144c9064174876e800614174565b6114569190614174565b61146091906142d1565b10156114d45760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610b75565b80826114e26012600a614294565b6114f19064174876e800614174565b6114fb9190614174565b61150591906142d1565b6015555050565b805182511461155d5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b75565b60005b82518160ff16101561133c57818160ff16815181106115815761158161430c565b60200260200101516115a8336001600160a01b031660009081526001602052604090205490565b10156115b357600080fd5b61161533848360ff16815181106115cc576115cc61430c565b60200260200101516012600a6115e29190614294565b858560ff16815181106115f7576115f761430c565b60200260200101516116099190614174565b60008060006001612d7a565b50806116208161433b565b915050611560565b6000546001600160a01b031633146116765760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b601654760100000000000000000000000000000000000000000000900460ff16156116a057600080fd5b6116ac6012600a614294565b6116b69082614174565b905061133c33838360008060006001612d7a565b6000546001600160a01b031633146117185760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6109c48361ffff161115801561173457506109c48261ffff1611155b801561174657506109c48161ffff1611155b6117925760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b75565b6009805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146118535760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6016546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b1580156118ba57600080fd5b505af11580156118ce573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146119235760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b83856119316012600a614294565b6119409064174876e800614174565b61194a9190614174565b61195491906142d1565b60129081558290849061196890600a614294565b6119779064174876e800614174565b6119819190614174565b61198b91906142d1565b60135560105550505050565b6000546001600160a01b031633146119e55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a5e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6103e8611a6d6012600a614294565b611a7c9064174876e800614174565b611a8691906142d1565b8183611a946012600a614294565b611aa39064174876e800614174565b611aad9190614174565b611ab791906142d1565b1015611b2b5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b75565b8082611b396012600a614294565b611b489064174876e800614174565b611b529190614174565b611b5c91906142d1565b6014555050565b6000546001600160a01b03163314611bb15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6001600160a01b038116611c2d5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b75565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b03821601611ccb5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b75565b60008054611ce4916001600160a01b0390911690611d8e565b611cef816001611d8e565b600080546001600160a01b031681526001602052604090205415611d3657600080546001600160a01b03168082526001602052604090912054611d3491908390612fba565b505b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314611ddc5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611e555760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b601654610100900460ff1615611e6a57600080fd5b306001600160a01b03821603611ec25760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b75565b601680546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611f106012600a614294565b6014546111a391906142d1565b6000546001600160a01b03163314611f6b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b60008054611f84916001600160a01b0390911690611d8e565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461201b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b801515600003612097576001600160a01b03828116600081815260026020526040808220805460ff1916905560165490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610bd2565b600354156120fe576203f480600354426120b1919061435a565b116120fe5760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610b75565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560165491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610bd2565b5050565b600080546001600160a01b031633146121cb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b600b546121e59030906001600160a01b0316600019612c6d565b50600190565b6000546001600160a01b031633146122395760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b60165460ff161561228c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b75565b601654610100900460ff166122e35760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b75565b6016546201000090046001600160a01b031661232957601680547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601654600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156123b457600080fd5b505af19250505080156123c5575060015b506016805460ff19166001179055600c5461271090612402906001600160a01b03166001600160a01b031660009081526001602052604090205490565b61240d906005614174565b61241791906142d1565b601255600c546001600160a01b03166000908152600160205260409020546103e890612444906001614174565b61244e91906142d1565b601355565b6000612460338484612fba565b5060019392505050565b6000546001600160a01b031633146124b85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b600a805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909416928816929092179290921716179055806125308385614371565b61253a9190614371565b600a805461ffff929092166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff909216919091179055505050565b6000546001600160a01b031633146125cb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b600f80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579061261490831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461266d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b600d80546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff1991821617909155600e8054929093169116179055565b6000546001600160a01b031633146126f65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561273b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275f9190614193565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d09190614193565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128579190614193565b90506001600160a01b0381166129f557816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c99190614193565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293a9190614193565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561299f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c39190614193565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612a1e565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915561133c903090600019612c6d565b6000546001600160a01b03163314612aa55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b601654610100900460ff1615612afd5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b75565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611185573d6000803e3d6000fd5b6000546001600160a01b03163314612b855760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b75565b6016546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610bd2565b6016546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb79190614397565b6001600160a01b038316612cc35760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b75565b6001600160a01b038216612d195760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b75565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601654600090610100900460ff16612e2657612d9688886134db565b601654610100900460ff16158015612db35750612db38888613639565b15612e265760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610b75565b612e308888613639565b15612ee3576016546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612ecc575060408051601f3d908101601f19168201909252612ec991810190614397565b60015b612ed557600080fd5b905080612ee157600080fd5b505b6001600160a01b03881660009081526001602052604081208054889290612f0b90849061435a565b909155506000905085612f1e5786612f2a565b612f2a8986868a61370e565b6001600160a01b038916600090815260016020526040812080549293508392909190612f579084906143b4565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fa391815260200190565b60405180910390a350600198975050505050505050565b60006001600160a01b0384166130385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b75565b6001600160a01b0383166130b45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610b75565b6000821161312a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610b75565b601654760100000000000000000000000000000000000000000000900460ff166131965760405162461bcd60e51b815260206004820152601d60248201527f4c50206d75737420626520696e746969616c697a6564206669727374210000006044820152606401610b75565b6001600160a01b0384166000908152600260205260408120548190819060ff16156131c457600192506131f2565b6001600160a01b03861660009081526002602052604090205460ff16156131ee57600191506131f2565b5060015b6131fc8787613639565b156134025760165460ff166132535760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b75565b828061325c5750815b15613320576001600160a01b03871660009081526006602052604090205460ff161580156132a357506001600160a01b03861660009081526006602052604090205460ff16155b15613320576014548511156133205760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610b75565b600b546001600160a01b0387811691161480159061333c575081155b15613402576001600160a01b03861660009081526006602052604090205460ff166134025760155485613384886001600160a01b031660009081526001602052604090205490565b61338e91906143b4565b11156134025760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610b75565b6001600160a01b03871660009081526005602052604090205460019060ff168061344457506001600160a01b03871660009081526005602052604090205460ff165b1561344d575060005b82156134c057600f5460ff1615801561346d5750600f54610100900460ff165b156134c0574260105460115461348391906143b4565b10156134c0573060009081526001602052604090205460125481106134be5760135481106134b057506013545b6134b9816137e5565b426011555b505b6134cf88888884888888612d7a565b98975050505050505050565b601654610100900460ff16156135595760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610b75565b6135638282613639565b15801561357d5750600c546001600160a01b038281169116145b15612178576001600160a01b038083166000908152600860205260409020805460ff191660011790556016805461ff0019166101001790819055620100009004166135f257601680547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b600080546001600160a01b0384811691161480159061366657506000546001600160a01b03838116911614155b801561367d57506000546001600160a01b03163214155b80156136a257506001600160a01b03821660009081526008602052604090205460ff16155b80156136c757506001600160a01b03831660009081526008602052604090205460ff16155b80156136de57506001600160a01b03821661dead14155b80156136f257506001600160a01b03821615155b801561370757506001600160a01b0383163014155b9392505050565b6000808415613724575060095461ffff1661374e565b831561373d575060095462010000900461ffff1661374e565b50600954640100000000900461ffff165b600061271061375d8386614174565b61376791906142d1565b3060009081526001602052604081208054929350839290919061378b9084906143b4565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36137da818561435a565b979650505050505050565b600f805460ff1916600117905560408051608081018252600a5461ffff808216835262010000820481166020840152640100000000820481169383019390935266010000000000009004909116606082018190526000036138465750613c62565b306000908152600460209081526040808320600b546001600160a01b031684529091529020546000191461389f57306000908152600460209081526040808320600b546001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff16856138c09190614174565b6138ca91906142d1565b6138d491906142d1565b905060006138e2828561435a565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061391c5761391c61430c565b6001600160a01b03928316602091820292909201810191909152600b54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa15801561398e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139b29190614193565b816001815181106139c5576139c561430c565b6001600160a01b039283166020918202929092010152600b546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613a249085906000908690309042906004016143cc565b600060405180830381600087803b158015613a3e57600080fd5b505af1158015613a52573d6000803e3d6000fd5b5047925060009150849050613a678684614174565b613a7191906142d1565b90508415613b6257600b546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015613b00573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b2591906142a3565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b613b6c818361435a565b9150856000015186606001818151613b849190614408565b61ffff908116909152606088015160408901516000935090821691613baa911685614174565b613bb491906142d1565b90506000613bc2828561435a565b602089015190915061ffff1615613c0f57600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613c0d573d6000803e3d6000fd5b505b604088015161ffff1615613c5957600e546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015613c57573d6000803e3d6000fd5b505b50505050505050505b50600f805460ff19169055565b801515811461118557600080fd5b60008060408385031215613c9057600080fd5b8235613c9b81613c6f565b91506020830135613cab81613c6f565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613d0e57613d0e613cb6565b604052919050565b600067ffffffffffffffff821115613d3057613d30613cb6565b5060051b60200190565b6001600160a01b038116811461118557600080fd5b600082601f830112613d6057600080fd5b81356020613d75613d7083613d16565b613ce5565b82815260059290921b84018101918181019086841115613d9457600080fd5b8286015b84811015613db8578035613dab81613d3a565b8352918301918301613d98565b509695505050505050565b60008060408385031215613dd657600080fd5b823567ffffffffffffffff811115613ded57600080fd5b613df985828601613d4f565b9250506020830135613cab81613c6f565b600060208083528351808285015260005b81811015613e3757858101830151858201604001528201613e1b565b81811115613e49576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215613e7257600080fd5b8235613e7d81613d3a565b946020939093013593505050565b600060208284031215613e9d57600080fd5b5035919050565b60008060408385031215613eb757600080fd5b823567ffffffffffffffff80821115613ecf57600080fd5b613edb86838701613d4f565b9350602091508185013581811115613ef257600080fd5b85019050601f81018613613f0557600080fd5b8035613f13613d7082613d16565b81815260059190911b82018301908381019088831115613f3257600080fd5b928401925b82841015613f5057833582529284019290840190613f37565b80955050505050509250929050565b600080600060608486031215613f7457600080fd5b8335613f7f81613d3a565b92506020840135613f8f81613d3a565b929592945050506040919091013590565b60008060408385031215613fb357600080fd5b50508035926020909101359150565b803561ffff81168114613fd457600080fd5b919050565b600080600060608486031215613fee57600080fd5b613ff784613fc2565b925061400560208501613fc2565b915061401360408501613fc2565b90509250925092565b60006020828403121561402e57600080fd5b813561370781613d3a565b600080600080600060a0868803121561405157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561408757600080fd5b8235613c9b81613d3a565b6000602082840312156140a457600080fd5b813561370781613c6f565b600080604083850312156140c257600080fd5b82356140cd81613d3a565b91506020830135613cab81613d3a565b600081518084526020808501945080840160005b838110156141165781516001600160a01b0316875295820195908201906001016140f1565b509495945050505050565b60408152600061413460408301856140dd565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600081600019048311821515161561418e5761418e614145565b500290565b6000602082840312156141a557600080fd5b815161370781613d3a565b600181815b808511156141eb5781600019048211156141d1576141d1614145565b808516156141de57918102915b93841c93908002906141b5565b509250929050565b60008261420257506001610cb7565b8161420f57506000610cb7565b8160018114614225576002811461422f5761424b565b6001915050610cb7565b60ff84111561424057614240614145565b50506001821b610cb7565b5060208310610133831016604e8410600b841016171561426e575081810a610cb7565b61427883836141b0565b806000190482111561428c5761428c614145565b029392505050565b600061370760ff8416836141f3565b6000806000606084860312156142b857600080fd5b8351925060208401519150604084015190509250925092565b600082614307577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff810361435157614351614145565b60010192915050565b60008282101561436c5761436c614145565b500390565b600061ffff80831681851680830382111561438e5761438e614145565b01949350505050565b6000602082840312156143a957600080fd5b815161370781613c6f565b600082198211156143c7576143c7614145565b500190565b85815284602082015260a0604082015260006143eb60a08301866140dd565b6001600160a01b0394909416606083015250608001529392505050565b600061ffff8381169083168181101561442357614423614145565b03939250505056fea26469706673582212200c6b83ff93914974a1374f12b03d3892ec7fc77152849fa203a27bd520bb3c4a64736f6c634300080d0033

Deployed Bytecode Sourcemap

4083:22246:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5698:73;;;;;;;;;;;;5729:42;5698:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5698:73:0;;;;;;;;6234:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6234:28:0;245:177:1;15997:151:0;;;;;;;;;;-1:-1:-1;15997:151:0;;;;;:::i;:::-;;:::i;:::-;;15568:172;;;;;;;;;;-1:-1:-1;15568:172:0;;;;;:::i;:::-;;:::i;5163:116::-;;;;;;;;;;-1:-1:-1;5163:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;3236:6:1;3269:15;;;3251:34;;3321:15;;;3316:2;3301:18;;3294:43;3373:15;;3353:18;;;3346:43;;;;3214:2;3199:18;5163:116:0;3030:365:1;12541:80:0;;;;;;;;;;-1:-1:-1;12613:5:0;;;;;;;;;;;;;;;;;12541:80;;;;;;;:::i;5637:26::-;;;;;;;;;;-1:-1:-1;5637:26:0;;;;-1:-1:-1;;;;;5637:26:0;;;13151:159;;;;;;;;;;-1:-1:-1;13151:159:0;;;;;:::i;:::-;;:::i;:::-;;;4794:14:1;;4787:22;4769:41;;4757:2;4742:18;13151:159:0;4629:187:1;8813:1050:0;;;;;;;;;;-1:-1:-1;8813:1050:0;;;;;:::i;:::-;;:::i;18052:112::-;;;;;;;;;;;;;:::i;12244:115::-;;;;;;;;;;;;;:::i;10116:397::-;;;;;;;;;;-1:-1:-1;10116:397:0;;;;;:::i;:::-;;:::i;13817:306::-;;;;;;;;;;-1:-1:-1;13817:306:0;;;;;:::i;:::-;;:::i;17102:267::-;;;;;;;;;;-1:-1:-1;17102:267:0;;;;;:::i;:::-;;:::i;24394:408::-;;;;;;;;;;-1:-1:-1;24394:408:0;;;;;:::i;:::-;;:::i;5434:42::-;;;;;;;;;;;;5472:4;5434:42;;9871:237;;;;;;;;;;-1:-1:-1;9871:237:0;;;;;:::i;:::-;;:::i;6269:25::-;;;;;;;;;;;;;;;;12365:80;;;;;;;;;;-1:-1:-1;12365:80:0;;4844:2;7005:36:1;;6993:2;6978:18;12365:80:0;6863:184:1;16156:397:0;;;;;;;;;;-1:-1:-1;16156:397:0;;;;;:::i;:::-;;:::i;15881:108::-;;;;;;;;;;-1:-1:-1;15881:108:0;;;;;:::i;:::-;;:::i;18172:338::-;;;;;;;;;;-1:-1:-1;18172:338:0;;;;;:::i;:::-;;:::i;17377:140::-;;;;;;;;;;-1:-1:-1;17377:140:0;;;;;:::i;:::-;;:::i;16825:269::-;;;;;;;;;;-1:-1:-1;16825:269:0;;;;;:::i;:::-;;:::i;5670:21::-;;;;;;;;;;-1:-1:-1;5670:21:0;;;;-1:-1:-1;;;;;5670:21:0;;;6422:34;;;;;;;;;;-1:-1:-1;6422:34:0;;;;;;;;11102:588;;;;;;;;;;-1:-1:-1;11102:588:0;;;;;:::i;:::-;;:::i;17663:125::-;;;;;;;;;;-1:-1:-1;17663:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;17752:28:0;17728:4;17752:28;;;:19;:28;;;;;;;;;17663:125;6463:36;;;;;;;;;;-1:-1:-1;6463:36:0;;;;;;;;;;;17796:134;;;;;;;;;;-1:-1:-1;17796:134:0;;;;;:::i;:::-;;:::i;15187:220::-;;;;;;;;;;-1:-1:-1;15187:220:0;;;;;:::i;:::-;;:::i;17525:130::-;;;;;;;;;;-1:-1:-1;17525:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;17617:30:0;17593:4;17617:30;;;:21;:30;;;;;;;;;17525:130;17938:106;;;;;;;;;;;;;:::i;12853:117::-;;;;;;;;;;-1:-1:-1;12853:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;12946:16:0;12919:7;12946:16;;;:7;:16;;;;;;;12853:117;11698:193;;;;;;;;;;;;;:::i;14679:500::-;;;;;;;;;;-1:-1:-1;14679:500:0;;;;;:::i;:::-;;:::i;12627:79::-;;;;;;;;;;-1:-1:-1;12679:7:0;12697:6;-1:-1:-1;;;;;12697:6:0;12627:79;;13636:173;;;;;;;;;;;;;:::i;23655:541::-;;;;;;;;;;;;;:::i;12451:84::-;;;;;;;;;;-1:-1:-1;12525:7:0;;;;;;;;;;;;;;;;;12451:84;;12978:165;;;;;;;;;;-1:-1:-1;12978:165:0;;;;;:::i;:::-;;:::i;16561:256::-;;;;;;;;;;-1:-1:-1;16561:256:0;;;;;:::i;:::-;;:::i;18715:164::-;;;;;;;;;;-1:-1:-1;18715:164:0;;;;;:::i;:::-;;:::i;5288:137::-;;;;;;;;;;-1:-1:-1;5288:137:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9126:6:1;9159:15;;;9141:34;;9211:15;;;9206:2;9191:18;;9184:43;9263:15;;;9243:18;;;9236:43;;;;9315:15;;;9310:2;9295:18;;9288:43;9103:3;9088:19;5288:137:0;8893:444:1;18518:189:0;;;;;;;;;;-1:-1:-1;18518:189:0;;;;;:::i;:::-;;:::i;12712:133::-;;;;;;;;;;-1:-1:-1;12712:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12814:19:0;;;12796:7;12814:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12712:133;6152:44;;;;;;;;;;;;;;;;14131:540;;;;;;;;;;-1:-1:-1;14131:540:0;;;;;:::i;:::-;;:::i;24204:182::-;;;;;;;;;;;;;:::i;15415:145::-;;;;;;;;;;-1:-1:-1;15415:145:0;;;;;:::i;:::-;;:::i;5880:195::-;;;;;;;;;;-1:-1:-1;5880:195:0;;;;;;-1:-1:-1;;;;;5880:195:0;;;;;;;;;;;-1:-1:-1;;;;;10429:15:1;;;10411:34;;10481:15;;;;10476:2;10461:18;;10454:43;10323:18;5880:195:0;10144:359:1;6106:39:0;;;;;;;;;;-1:-1:-1;6106:39:0;;;;;;;;;;;15748:125;;;;;;;;;;-1:-1:-1;15748:125:0;;;;;:::i;:::-;;:::i;15997:151::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;;;;;;;;;16092:9:::1;::::0;:48:::1;::::0;;;;11041:14:1;;11034:22;16092:48:0::1;::::0;::::1;11016:41:1::0;11100:14;;11093:22;11073:18;;;11066:50;16092:9:0;;;::::1;-1:-1:-1::0;;;;;16092:9:0::1;::::0;:24:::1;::::0;10989:18:1;;16092:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15997:151:::0;;:::o;15568:172::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;15676:9:::1;::::0;:56:::1;::::0;;;;:9;;;::::1;-1:-1:-1::0;;;;;15676:9:0::1;::::0;:37:::1;::::0;:56:::1;::::0;15714:8;;15724:7;;15676:56:::1;;;:::i;13151:159::-:0;13226:4;13243:37;13252:10;13264:7;13273:6;13243:8;:37::i;:::-;-1:-1:-1;13298:4:0;13151:159;;;;;:::o;8813:1050::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;8894:13:::1;::::0;;;::::1;;;8893:14;8885:46;;;::::0;-1:-1:-1;;;8885:46:0;;12165:2:1;8885:46:0::1;::::0;::::1;12147:21:1::0;12204:2;12184:18;;;12177:30;12243:21;12223:18;;;12216:49;12282:18;;8885:46:0::1;11963:343:1::0;8885:46:0::1;8974:1;8950:21;:25;8942:62;;;::::0;-1:-1:-1;;;8942:62:0;;12513:2:1;8942:62:0::1;::::0;::::1;12495:21:1::0;12552:2;12532:18;;;12525:30;12591:25;12571:18;;;12564:53;12634:18;;8942:62:0::1;12311:347:1::0;8942:62:0::1;9048:21;:12:::0;9063:6:::1;9048:21;:::i;:::-;9033:10;12919:7:::0;12946:16;;;:7;:16;;;;;;9023:46:::1;;9015:89;;;::::0;-1:-1:-1;;;9015:89:0;;13287:2:1;9015:89:0::1;::::0;::::1;13269:21:1::0;13326:2;13306:18;;;13299:30;13365:32;13345:18;;;13338:60;13415:18;;9015:89:0::1;13085:354:1::0;9015:89:0::1;9137:9;;;;;;;;;-1:-1:-1::0;;;;;9137:9:0::1;-1:-1:-1::0;;;;;9137:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9126:42:0::1;;9169:9;;;;;;;;;-1:-1:-1::0;;;;;9169:9:0::1;-1:-1:-1::0;;;;;9169:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9126:75;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;10429:15:1;;;9126:75:0::1;::::0;::::1;10411:34:1::0;9195:4:0::1;10461:18:1::0;;;10454:43;10323:18;;9126:75:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9117:6;:84:::0;;-1:-1:-1;;9117:84:0::1;-1:-1:-1::0;;;;;9117:84:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;9212:15:0;;;:7:::1;:15;::::0;;;;:22;;-1:-1:-1;;9212:22:0::1;-1:-1:-1::0;9212:22:0::1;::::0;;9256:6;9272:9:::1;::::0;9247:55:::1;::::0;9256:6;;::::1;::::0;9272:9:::1;-1:-1:-1::0;;9247:8:0::1;:55::i;:::-;9345:9;::::0;9313:62:::1;::::0;9330:4:::1;::::0;-1:-1:-1;;;;;9345:9:0::1;-1:-1:-1::0;;9313:8:0::1;:62::i;:::-;9388:13;:20:::0;;;::::1;::::0;::::1;::::0;;9437:13:::1;4844:2;9437;:13;:::i;:::-;9421:29;::::0;;::::1;:::i;:::-;;;9461:85;9479:10;9499:4;9506:12;9520:5;9527::::0;9534::::1;9541:4;9461:17;:85::i;:::-;-1:-1:-1::0;9559:9:0::1;::::0;-1:-1:-1;;;;;9559:9:0::1;:25;9592:21;9637:4;9657:24;9637:4:::0;-1:-1:-1;;;;;12946:16:0;12919:7;12946:16;;;:7;:16;;;;;;;12853:117;9657:24:::1;9696:1;9782:6:::0;;9559:270:::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;;;15917:15:1;;;9559:270:0::1;::::0;::::1;15899:34:1::0;15949:18;;;15942:34;;;;15992:18;;;15985:34;;;16035:18;;;16028:34;;;;9782:6:0;;;::::1;16078:19:1::0;;;16071:44;9803:15:0::1;16131:19:1::0;;;16124:35;15810:19;;9559:270:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9840:15;:13;:15::i;:::-;8813:1050:::0;:::o;18052:112::-;18097:7;18142:13;4844:2;18142;:13;:::i;:::-;18124:14;;:32;;;;:::i;:::-;18117:39;;18052:112;:::o;12244:115::-;12299:7;4907:13;4844:2;4907;:13;:::i;:::-;4890:30;;4695:15;4890:30;:::i;:::-;12325:1;12314:12;12310:31;;12330:8;;;12310:31;4907:13;4844:2;4907;:13;:::i;:::-;4890:30;;4695:15;4890:30;:::i;10116:397::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;10265:7:::1;:14;10246:8;:15;:33;10238:67;;;::::0;-1:-1:-1;;;10238:67:0;;16962:2:1;10238:67:0::1;::::0;::::1;16944:21:1::0;17001:2;16981:18;;;16974:30;17040:23;17020:18;;;17013:51;17081:18;;10238:67:0::1;16760:345:1::0;10238:67:0::1;10321:7;10316:190;10338:8;:15;10334:1;:19;;;10316:190;;;10419:13;4844:2;10419;:13;:::i;:::-;10408:7;10416:1;10408:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;10393:10;12919:7:::0;12946:16;;;:7;:16;;;;;;10383:49:::1;;10375:58;;;::::0;::::1;;10448:46;10470:8;10479:1;10470:11;;;;;;;;;;:::i;:::-;;;;;;;10483:7;10491:1;10483:10;;;;;;;;;;:::i;:::-;;;;;;;10448:21;:46::i;:::-;10355:3:::0;::::1;::::0;::::1;:::i;:::-;;;;10316:190;;;;10116:397:::0;;:::o;13817:306::-;-1:-1:-1;;;;;13938:19:0;;13917:4;13938:19;;;:11;:19;;;;;;;;13958:10;13938:31;;;;;;;;-1:-1:-1;;13938:52:0;13934:126;;-1:-1:-1;;;;;14007:19:0;;;;;;:11;:19;;;;;;;;14027:10;14007:31;;;;;;;:41;;14042:6;;14007:19;:41;;14042:6;;14007:41;:::i;:::-;;;;-1:-1:-1;;13934:126:0;14079:36;14089:6;14097:9;14108:6;14079:9;:36::i;:::-;14072:43;13817:306;-1:-1:-1;;;;13817:306:0:o;17102:267::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;17244:4:::1;4907:13;4844:2;4907;:13;:::i;:::-;4890:30;::::0;4695:15:::1;4890:30;:::i;:::-;17234:14;;;;:::i;:::-;17222:7:::0;17211;4907:13:::1;4844:2;4907;:13;:::i;:::-;4890:30;::::0;4695:15:::1;4890:30;:::i;:::-;17201:17;;;;:::i;:::-;17200:29;;;;:::i;:::-;:49;;17192:112;;;::::0;-1:-1:-1;;;17192:112:0;;17811:2:1;17192:112:0::1;::::0;::::1;17793:21:1::0;17850:2;17830:18;;;17823:30;17889:34;17869:18;;;17862:62;17960:20;17940:18;;;17933:48;17998:19;;17192:112:0::1;17609:414:1::0;17192:112:0::1;17354:7:::0;17343;4907:13:::1;4844:2;4907;:13;:::i;:::-;4890:30;::::0;4695:15:::1;4890:30;:::i;:::-;17333:17;;;;:::i;:::-;17332:29;;;;:::i;:::-;17315:14;:46:::0;-1:-1:-1;;17102:267:0:o;24394:408::-;24519:7;:14;24500:8;:15;:33;24492:67;;;;-1:-1:-1;;;24492:67:0;;16962:2:1;24492:67:0;;;16944:21:1;17001:2;16981:18;;;16974:30;17040:23;17020:18;;;17013:51;17081:18;;24492:67:0;16760:345:1;24492:67:0;24575:7;24570:225;24592:8;:15;24588:1;:19;;;24570:225;;;24662:7;24670:1;24662:10;;;;;;;;;;:::i;:::-;;;;;;;24637:21;24647:10;-1:-1:-1;;;;;12946:16:0;12919:7;12946:16;;;:7;:16;;;;;;;12853:117;24637:21;:35;;24629:44;;;;;;24688:95;24706:10;24718:8;24727:1;24718:11;;;;;;;;;;:::i;:::-;;;;;;;4844:2;24742;:13;;;;:::i;:::-;24731:7;24739:1;24731:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24757:5;24764;24771;24778:4;24688:17;:95::i;:::-;-1:-1:-1;24609:3:0;;;;:::i;:::-;;;;24570:225;;9871:237;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;9967:13:::1;::::0;;;::::1;;;9966:14;9958:23;;;::::0;::::1;;10008:13;4844:2;10008;:13;:::i;:::-;10001:20;::::0;:6;:20:::1;:::i;:::-;9992:29;;10032:68;10050:10;10062:2;10066:6;10074:5;10081::::0;10088::::1;10095:4;10032:17;:68::i;16156:397::-:0;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;5472:4:::1;16263:6;:21;;;;:65;;;;;5522:4;16305:7;:23;;;;16263:65;:117;;;;;5576:4;16349:11;:31;;;;16263:117;16255:170;;;::::0;-1:-1:-1;;;16255:170:0;;18230:2:1;16255:170:0::1;::::0;::::1;18212:21:1::0;18269:2;18249:18;;;18242:30;18308:25;18288:18;;;18281:53;18351:18;;16255:170:0::1;18028:347:1::0;16255:170:0::1;16436:9;:25:::0;;::::1;::::0;;::::1;16472:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;16510:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;16156:397::o;15881:108::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;15950:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;15950:31:0::1;::::0;::::1;160:74:1::0;15950:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;15950:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15881:108:::0;:::o;18172:338::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;18386:16;18366;4907:13:::1;4844:2;4907;:13;:::i;:::-;4890:30;::::0;4695:15:::1;4890:30;:::i;:::-;18356:26;;;;:::i;:::-;18355:47;;;;:::i;:::-;18339:13;:63:::0;;;18454:13;;18437;;4907::::1;::::0;:2:::1;:13;:::i;:::-;4890:30;::::0;4695:15:::1;4890:30;:::i;:::-;18427:23;;;;:::i;:::-;18426:41;;;;:::i;:::-;18413:10;:54:::0;18478:17:::1;:24:::0;-1:-1:-1;;;;18172:338:0:o;17377:140::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;-1:-1:-1;;;;;17469:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;17469:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17377:140::o;16825:269::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;16966:4:::1;4907:13;4844:2;4907;:13;:::i;:::-;4890:30;::::0;4695:15:::1;4890:30;:::i;:::-;16956:14;;;;:::i;:::-;16944:7:::0;16933;4907:13:::1;4844:2;4907;:13;:::i;:::-;4890:30;::::0;4695:15:::1;4890:30;:::i;:::-;16923:17;;;;:::i;:::-;16922:29;;;;:::i;:::-;:49;;16914:117;;;::::0;-1:-1:-1;;;16914:117:0;;18582:2:1;16914:117:0::1;::::0;::::1;18564:21:1::0;18621:2;18601:18;;;18594:30;18660:34;18640:18;;;18633:62;18731:25;18711:18;;;18704:53;18774:19;;16914:117:0::1;18380:419:1::0;16914:117:0::1;17079:7:::0;17068;4907:13:::1;4844:2;4907;:13;:::i;:::-;4890:30;::::0;4695:15:::1;4890:30;:::i;:::-;17058:17;;;;:::i;:::-;17057:29;;;;:::i;:::-;17042:12;:44:::0;-1:-1:-1;;16825:269:0:o;11102:588::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;-1:-1:-1;;;;;11181:22:0;::::1;11173:96;;;::::0;-1:-1:-1;;;11173:96:0;;19006:2:1;11173:96:0::1;::::0;::::1;18988:21:1::0;19045:2;19025:18;;;19018:30;19084:34;19064:18;;;19057:62;19155:31;19135:18;;;19128:59;19204:19;;11173:96:0::1;18804:425:1::0;11173:96:0::1;11288:16:::0;-1:-1:-1;;;;;11288:16:0;::::1;::::0;11280:90:::1;;;::::0;-1:-1:-1;;;11280:90:0;;19006:2:1;11280:90:0::1;::::0;::::1;18988:21:1::0;19045:2;19025:18;;;19018:30;19084:34;19064:18;;;19057:62;19155:31;19135:18;;;19128:59;19204:19;;11280:90:0::1;18804:425:1::0;11280:90:0::1;11401:6;::::0;;11381:34:::1;::::0;-1:-1:-1;;;;;11401:6:0;;::::1;::::0;11381:19:::1;:34::i;:::-;11426:35;11446:8;11456:4;11426:19;:35::i;:::-;11505:1;11495:6:::0;;-1:-1:-1;;;;;11495:6:0::1;12946:16:::0;;:7;:16;;;;;;11485:21;11482:99:::1;;11533:6;::::0;;-1:-1:-1;;;;;11533:6:0::1;12946:16:::0;;;:7;:16;;;;;;;11523:46:::1;::::0;11533:6;11541:8;;11523:9:::1;:46::i;:::-;;11482:99;11601:6;:17:::0;;-1:-1:-1;;11601:17:0::1;-1:-1:-1::0;;;;;11601:17:0;::::1;::::0;;::::1;::::0;;11634:38:::1;::::0;11601:17;;;;11634:38:::1;::::0;11601:6;11634:38:::1;11102:588:::0;:::o;17796:134::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;-1:-1:-1;;;;;17884:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;17884:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17796:134::o;15187:220::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;15271:16:::1;::::0;::::1;::::0;::::1;;;15270:17;15262:26;;;::::0;::::1;;15330:4;-1:-1:-1::0;;;;;15307:28:0;::::1;::::0;15299:55:::1;;;::::0;-1:-1:-1;;;15299:55:0;;19436:2:1;15299:55:0::1;::::0;::::1;19418:21:1::0;19475:2;19455:18;;;19448:30;19514:16;19494:18;;;19487:44;19548:18;;15299:55:0::1;19234:338:1::0;15299:55:0::1;15365:9;:34:::0;;-1:-1:-1;;;;;15365:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;15187:220::o;17938:106::-;17979:7;18022:13;4844:2;18022;:13;:::i;:::-;18006:12;;:30;;;;:::i;11698:193::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;11783:6:::1;::::0;;11763:34:::1;::::0;-1:-1:-1;;;;;11783:6:0;;::::1;::::0;11763:19:::1;:34::i;:::-;11825:1;11808:19:::0;;-1:-1:-1;;11808:19:0::1;::::0;;11843:40:::1;::::0;11825:1;;11843:40:::1;::::0;11825:1;;11843:40:::1;11698:193::o:0;14679:500::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;14760:16;::::1;;14771:5;14760:16:::0;14756:416:::1;;-1:-1:-1::0;;;;;14793:13:0;;::::1;14809:5;14793:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;14793:21:0::1;::::0;;14829:9:::1;::::0;:32;;;;;::::1;::::0;::::1;19745:74:1::0;;;;19835:18;;;19828:50;;;;14829:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;19718:18:1;;14829:32:0::1;19577:307:1::0;14756:416:0::1;14898:17;::::0;:22;14894:136:::1;;14987:6;14967:17;;14949:15;:35;;;;:::i;:::-;:44;14941:73;;;::::0;-1:-1:-1;;;14941:73:0;;20091:2:1;14941:73:0::1;::::0;::::1;20073:21:1::0;20130:2;20110:18;;;20103:30;20169:18;20149;;;20142:46;20205:18;;14941:73:0::1;19889:340:1::0;14941:73:0::1;-1:-1:-1::0;;;;;15044:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;15044:20:0::1;15060:4;15044:20:::0;;::::1;::::0;;;15099:15:::1;15079:17;:35:::0;15129:9:::1;::::0;:31;;;;;::::1;::::0;::::1;19745:74:1::0;;;;19835:18;;;19828:50;15129:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;19718:18:1;;15129:31:0::1;19577:307:1::0;14756:416:0::1;14679:500:::0;;:::o;13636:173::-;13700:4;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;13749:9:::1;::::0;13717:62:::1;::::0;13734:4:::1;::::0;-1:-1:-1;;;;;13749:9:0::1;-1:-1:-1::0;;13717:8:0::1;:62::i;:::-;-1:-1:-1::0;13797:4:0::1;13636:173:::0;:::o;23655:541::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;23717:14:::1;::::0;::::1;;23716:15;23708:52;;;::::0;-1:-1:-1;;;23708:52:0;;20436:2:1;23708:52:0::1;::::0;::::1;20418:21:1::0;20475:2;20455:18;;;20448:30;20514:26;20494:18;;;20487:54;20558:18;;23708:52:0::1;20234:348:1::0;23708:52:0::1;23779:16;::::0;::::1;::::0;::::1;;;23771:53;;;::::0;-1:-1:-1;;;23771:53:0;;20789:2:1;23771:53:0::1;::::0;::::1;20771:21:1::0;20828:2;20808:18;;;20801:30;20867:26;20847:18;;;20840:54;20911:18;;23771:53:0::1;20587:348:1::0;23771:53:0::1;23846:9;::::0;;;::::1;-1:-1:-1::0;;;;;23846:9:0::1;23835:99;;23886:9;:36:::0;;;::::1;23916:4;23886:36:::0;::::1;;::::0;;23835:99:::1;23948:9;::::0;23968:6:::1;::::0;23948:85:::1;::::0;;;;-1:-1:-1;;;;;23968:6:0;;::::1;23948:85;::::0;::::1;21163:74:1::0;21285:10;23983:12:0::1;21273:23:1::0;21253:18;;;21246:51;21345:18;24005:15:0::1;21333:31:1::0;21313:18;;;21306:59;4844:2:0::1;21381:18:1::0;;;21374:45;23948:9:0;;;::::1;;::::0;:19:::1;::::0;21135::1;;23948:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23944:101:::0;24055:14:::1;:21:::0;;-1:-1:-1;;24055:21:0::1;24072:4;24055:21;::::0;;24114:6:::1;::::0;24129:5:::1;::::0;24104:17:::1;::::0;-1:-1:-1;;;;;24114:6:0::1;-1:-1:-1::0;;;;;12946:16:0;12919:7;12946:16;;;:7;:16;;;;;;;12853:117;24104:17:::1;:21;::::0;24124:1:::1;24104:21;:::i;:::-;24103:31;;;;:::i;:::-;24087:13;:47:::0;24169:6:::1;::::0;-1:-1:-1;;;;;24169:6:0::1;12919:7:::0;12946:16;;;:7;:16;;;;;;24184:4:::1;::::0;24159:21:::1;::::0;24179:1:::1;24159:21;:::i;:::-;24158:30;;;;:::i;:::-;24145:10;:43:::0;23655:541::o;12978:165::-;13056:4;13073:40;13083:10;13095:9;13106:6;13073:9;:40::i;:::-;-1:-1:-1;13131:4:0;;12978:165;-1:-1:-1;;;12978:165:0:o;16561:256::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;16658:7:::1;:29:::0;;::::1;16738:17:::0;;::::1;::::0;::::1;::::0;16698:29;;::::1;::::0;::::1;::::0;;;;16658;;::::1;16698::::0;;;;;;;::::1;16738:17;;::::0;;16752:3;16782:21:::1;16718:9:::0;16678;16782:21:::1;:::i;:::-;:27;;;;:::i;:::-;16766:7;:43:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;16561:256:0:o;18715:164::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;18791:19:::1;:29:::0;;;::::1;;;;-1:-1:-1::0;;18791:29:0;;::::1;;::::0;;18836:35:::1;::::0;::::1;::::0;::::1;::::0;18813:7;4794:14:1;4787:22;4769:41;;4757:2;4742:18;;4629:187;18836:35:0::1;;;;;;;;18715:164:::0;:::o;18518:189::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;18616:11:::1;:42:::0;;-1:-1:-1;;;;;18616:42:0;;::::1;-1:-1:-1::0;;18616:42:0;;::::1;;::::0;;;18669:15;:30;;;;;::::1;::::0;::::1;;::::0;;18518:189::o;14131:540::-;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;14200:20:::1;14233:9;14200:43;;14254:16;14284:10;-1:-1:-1::0;;;;;14284:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14273:40:0::1;;14322:4;14329:10;-1:-1:-1::0;;;;;14329:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14273:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;10429:15:1;;;14273:74:0::1;::::0;::::1;10411:34:1::0;10481:15;;10461:18;;;10454:43;10323:18;;14273:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14254:93:::0;-1:-1:-1;;;;;;14362:22:0;::::1;14358:200;;14421:10;-1:-1:-1::0;;;;;14421:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14410:43:0::1;;14462:4;14469:10;-1:-1:-1::0;;;;;14469:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14410:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;10429:15:1;;;14410:77:0::1;::::0;::::1;10411:34:1::0;10481:15;;10461:18;;;10454:43;10323:18;;14410:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14401:6;:86:::0;;-1:-1:-1;;14401:86:0::1;-1:-1:-1::0;;;;;14401:86:0;;;::::1;::::0;;;::::1;::::0;;14358:200:::1;;;14529:6;:17:::0;;-1:-1:-1;;14529:17:0::1;-1:-1:-1::0;;;;;14529:17:0;::::1;;::::0;;14358:200:::1;14568:9;:22:::0;;-1:-1:-1;;14568:22:0::1;-1:-1:-1::0;;;;;14568:22:0;::::1;::::0;;::::1;::::0;;;14601:62:::1;::::0;14618:4:::1;::::0;-1:-1:-1;;14601:8:0::1;:62::i;24204:182::-:0;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;24271:16:::1;::::0;::::1;::::0;::::1;;;24270:17;24262:58;;;::::0;-1:-1:-1;;;24262:58:0;;21861:2:1;24262:58:0::1;::::0;::::1;21843:21:1::0;21900:2;21880:18;;;21873:30;21939;21919:18;;;21912:58;21987:18;;24262:58:0::1;21659:352:1::0;24262:58:0::1;24339:6;::::0;;24331:47:::1;::::0;-1:-1:-1;;;;;24339:6:0;;::::1;::::0;24356:21:::1;24331:47:::0;::::1;;;::::0;24356:21;;24331:47;24339:6;24331:47;24356:21;24339:6;24331:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;15415:145:::0;6926:6;;-1:-1:-1;;;;;6926:6:0;6936:10;6926:20;6918:50;;;;-1:-1:-1;;;6918:50:0;;10710:2:1;6918:50:0;;;10692:21:1;10749:2;10729:18;;;10722:30;-1:-1:-1;;;10768:18:1;;;10761:47;10825:18;;6918:50:0;10508:341:1;6918:50:0;15505:9:::1;::::0;:47:::1;::::0;;;;-1:-1:-1;;;;;19763:55:1;;;15505:47:0::1;::::0;::::1;19745:74:1::0;19862:14;;19855:22;19835:18;;;19828:50;15505:9:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;19718:18:1;;15505:47:0::1;19577:307:1::0;15748:125:0;15833:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;15833:32:0;;;160:74:1;15809:4:0;;15833:9;;;;;:23;;133:18:1;;15833:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13318:310::-;-1:-1:-1;;;;;13413:20:0;;13405:52;;;;-1:-1:-1;;;13405:52:0;;22468:2:1;13405:52:0;;;22450:21:1;22507:2;22487:18;;;22480:30;22546:21;22526:18;;;22519:49;22585:18;;13405:52:0;22266:343:1;13405:52:0;-1:-1:-1;;;;;13476:21:0;;13468:53;;;;-1:-1:-1;;;13468:53:0;;22468:2:1;13468:53:0;;;22450:21:1;22507:2;22487:18;;;22480:30;22546:21;22526:18;;;22519:49;22585:18;;13468:53:0;22266:343:1;13468:53:0;-1:-1:-1;;;;;13534:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13587:33;;391:25:1;;;13587:33:0;;364:18:1;13587:33:0;;;;;;;13318:310;;;:::o;24810:946::-;24966:16;;24944:4;;24966:16;;;;;24961:221;;24999:28;25018:4;25024:2;24999:18;:28::i;:::-;25047:16;;;;;;;25046:17;:41;;;;;25067:20;25078:4;25084:2;25067:10;:20::i;:::-;25042:129;;;25108:47;;-1:-1:-1;;;25108:47:0;;22816:2:1;25108:47:0;;;22798:21:1;22855:2;22835:18;;;22828:30;22894:34;22874:18;;;22867:62;22965:7;22945:18;;;22938:35;22990:19;;25108:47:0;22614:401:1;25042:129:0;25198:20;25209:4;25215:2;25198:10;:20::i;:::-;25194:314;;;25266:9;;:37;;;;;-1:-1:-1;;;;;23301:15:1;;;25266:37:0;;;23283:34:1;23353:15;;;23333:18;;;23326:43;23385:18;;;23378:34;;;25235:12:0;;25266:9;;;;;:19;;23195:18:1;;25266:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;25266:37:0;;;;;;;;-1:-1:-1;;25266:37:0;;;;;;;;;;;;:::i;:::-;;;25262:163;;25401:8;;;25262:163;25354:5;-1:-1:-1;25445:7:0;25441:56;;25473:8;;;25441:56;25220:288;25194:314;-1:-1:-1;;;;;25520:13:0;;;;;;:7;:13;;;;;:23;;25537:6;;25520:13;:23;;25537:6;;25520:23;:::i;:::-;;;;-1:-1:-1;25554:22:0;;-1:-1:-1;25580:7:0;25579:55;;25628:6;25579:55;;;25591:34;25601:4;25607:3;25612:4;25618:6;25591:9;:34::i;:::-;-1:-1:-1;;;;;25645:11:0;;;;;;:7;:11;;;;;:29;;25554:80;;-1:-1:-1;25554:80:0;;25645:11;;;:29;;25554:80;;25645:29;:::i;:::-;;;;;;;;25707:2;-1:-1:-1;;;;;25692:34:0;25701:4;-1:-1:-1;;;;;25692:34:0;;25711:14;25692:34;;;;391:25:1;;379:2;364:18;;245:177;25692:34:0;;;;;;;;-1:-1:-1;25744:4:0;;24810:946;-1:-1:-1;;;;;;;;24810:946:0:o;19253:2127::-;19332:4;-1:-1:-1;;;;;19357:18:0;;19349:68;;;;-1:-1:-1;;;19349:68:0;;23758:2:1;19349:68:0;;;23740:21:1;23797:2;23777:18;;;23770:30;23836:34;23816:18;;;23809:62;23907:7;23887:18;;;23880:35;23932:19;;19349:68:0;23556:401:1;19349:68:0;-1:-1:-1;;;;;19436:16:0;;19428:64;;;;-1:-1:-1;;;19428:64:0;;24164:2:1;19428:64:0;;;24146:21:1;24203:2;24183:18;;;24176:30;24242:34;24222:18;;;24215:62;24313:5;24293:18;;;24286:33;24336:19;;19428:64:0;23962:399:1;19428:64:0;19520:1;19511:6;:10;19503:64;;;;-1:-1:-1;;;19503:64:0;;24568:2:1;19503:64:0;;;24550:21:1;24607:2;24587:18;;;24580:30;24646:34;24626:18;;;24619:62;24717:11;24697:18;;;24690:39;24746:19;;19503:64:0;24366:405:1;19503:64:0;19586:13;;;;;;;19578:55;;;;-1:-1:-1;;;19578:55:0;;24978:2:1;19578:55:0;;;24960:21:1;25017:2;24997:18;;;24990:30;25056:31;25036:18;;;25029:59;25105:18;;19578:55:0;24776:353:1;19578:55:0;-1:-1:-1;;;;;19732:13:0;;19644:8;19732:13;;;:7;:13;;;;;;19644:8;;;;19732:13;;19728:162;;;19768:4;19762:10;;19728:162;;;-1:-1:-1;;;;;19794:11:0;;;;;;:7;:11;;;;;;;;19790:100;;;19829:4;19822:11;;19790:100;;;-1:-1:-1;19874:4:0;19790:100;19903:20;19914:4;19920:2;19903:10;:20::i;:::-;19900:641;;;19944:14;;;;19940:89;;19979:34;;-1:-1:-1;;;19979:34:0;;25336:2:1;19979:34:0;;;25318:21:1;25375:2;25355:18;;;25348:30;25414:26;25394:18;;;25387:54;25458:18;;19979:34:0;25134:348:1;19940:89:0;20046:3;:11;;;;20053:4;20046:11;20043:231;;;-1:-1:-1;;;;;20082:27:0;;;;;;:21;:27;;;;;;;;20081:28;:58;;;;-1:-1:-1;;;;;;20114:25:0;;;;;;:21;:25;;;;;;;;20113:26;20081:58;20077:182;;;20182:12;;20172:6;:22;;20164:75;;;;-1:-1:-1;;;20164:75:0;;25689:2:1;20164:75:0;;;25671:21:1;25728:2;25708:18;;;25701:30;25767:34;25747:18;;;25740:62;25838:10;25818:18;;;25811:38;25866:19;;20164:75:0;25487:404:1;20164:75:0;20305:9;;-1:-1:-1;;;;;20291:24:0;;;20305:9;;20291:24;;;;:33;;;20320:4;20319:5;20291:33;20288:242;;;-1:-1:-1;;;;;20350:25:0;;;;;;:21;:25;;;;;;;;20345:170;;20434:14;;20424:6;20408:13;20418:2;-1:-1:-1;;;;;12946:16:0;12919:7;12946:16;;;:7;:16;;;;;;;12853:117;20408:13;:22;;;;:::i;:::-;:40;;20400:95;;;;-1:-1:-1;;;20400:95:0;;26098:2:1;20400:95:0;;;26080:21:1;26137:2;26117:18;;;26110:30;26176:34;26156:18;;;26149:62;26247:12;26227:18;;;26220:40;26277:19;;20400:95:0;25896:406:1;20400:95:0;-1:-1:-1;;;;;20586:25:0;;20553:12;20586:25;;;:19;:25;;;;;;20568:4;;20586:25;;;:52;;-1:-1:-1;;;;;;20615:23:0;;;;;;:19;:23;;;;;;;;20586:52;20583:98;;;-1:-1:-1;20664:5:0;20583:98;20697:4;20693:599;;;20723:6;;;;20722:7;:47;;;;-1:-1:-1;20750:19:0;;;;;;;20722:47;20718:557;;;20839:15;20819:17;;20808:8;;:28;;;;:::i;:::-;:46;20804:456;;;20928:4;20879:28;12946:16;;;:7;:16;;;;;;20985:13;;20961:37;;20957:284;;21054:10;;21030:20;:34;21027:77;;-1:-1:-1;21091:10:0;;21027:77;21130:34;21143:20;21130:12;:34::i;:::-;21202:15;21191:8;:26;20957:284;20856:404;20804:456;21310:62;21328:4;21334:2;21338:6;21346:7;21355:3;21360:4;21366:5;21310:17;:62::i;:::-;21303:69;19253:2127;-1:-1:-1;;;;;;;;19253:2127:0:o;23138:509::-;23221:16;;;;;;;23220:17;23212:65;;;;-1:-1:-1;;;23212:65:0;;26509:2:1;23212:65:0;;;26491:21:1;26548:2;26528:18;;;26521:30;26587:34;26567:18;;;26560:62;26658:5;26638:18;;;26631:33;26681:19;;23212:65:0;26307:399:1;23212:65:0;23293:20;23304:4;23310:2;23293:10;:20::i;:::-;23292:21;:37;;;;-1:-1:-1;23323:6:0;;-1:-1:-1;;;;;23317:12:0;;;23323:6;;23317:12;23292:37;23288:352;;;-1:-1:-1;;;;;23346:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;23346:30:0;23372:4;23346:30;;;23391:16;:23;;-1:-1:-1;;23391:23:0;23346:30;23391:23;;;;;23440:9;;;;23429:107;;23484:9;:36;;;;23514:4;23484:36;;;;;23429:107;23550:19;:26;;-1:-1:-1;;23550:26:0;;;;;23596:32;;-1:-1:-1;4769:41:1;;23596:32:0;;4757:2:1;4742:18;23596:32:0;;;;;;;23138:509;;:::o;18887:358::-;18956:4;18988:6;;-1:-1:-1;;;;;18980:14:0;;;18988:6;;18980:14;;;;:43;;-1:-1:-1;19017:6:0;;-1:-1:-1;;;;;19011:12:0;;;19017:6;;19011:12;;18980:43;:79;;;;-1:-1:-1;19053:6:0;;-1:-1:-1;;;;;19053:6:0;19040:9;:19;;18980:79;:118;;;;-1:-1:-1;;;;;;19077:21:0;;;;;;:17;:21;;;;;;;;19076:22;18980:118;:159;;;;-1:-1:-1;;;;;;19116:23:0;;;;;;:17;:23;;;;;;;;19115:24;18980:159;:186;;;;-1:-1:-1;;;;;;19156:10:0;;5729:42;19156:10;;18980:186;:219;;;;-1:-1:-1;;;;;;19183:16:0;;;;18980:219;:257;;;;-1:-1:-1;;;;;;19216:21:0;;19232:4;19216:21;;18980:257;18973:264;18887:358;-1:-1:-1;;;18887:358:0:o;25764:562::-;25852:7;25872:18;25905:3;25901:205;;;-1:-1:-1;25938:9:0;:16;;;25901:205;;;25976:4;25972:134;;;-1:-1:-1;26010:9:0;:17;;;;;;25972:134;;;-1:-1:-1;26073:9:0;:21;;;;;;25972:134;26118:17;5623:5;26138:19;26147:10;26138:6;:19;:::i;:::-;:38;;;;:::i;:::-;26205:4;26189:22;;;;:7;:22;;;;;:35;;26118:58;;-1:-1:-1;26118:58:0;;26189:22;;;:35;;26118:58;;26189:35;:::i;:::-;;;;-1:-1:-1;;26240:40:0;;391:25:1;;;26263:4:0;;-1:-1:-1;;;;;26240:40:0;;;;;379:2:1;364:18;26240:40:0;;;;;;;26300:18;26309:9;26300:6;:18;:::i;:::-;26293:25;25764:562;-1:-1:-1;;;;;;;25764:562:0:o;21388:1742::-;6820:6;:13;;-1:-1:-1;;6820:13:0;6829:4;6820:13;;;21472:30:::1;::::0;;::::1;::::0;::::1;::::0;;21495:7:::1;21472:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;6820:6;21517:17;21513:56:::1;;21551:7;;;21513:56;21604:4;21584:26;::::0;;;:11:::1;:26;::::0;;;;;;;21619:9:::1;::::0;-1:-1:-1;;;;;21619:9:0::1;21584:46:::0;;;;;;;;-1:-1:-1;;21584:67:0::1;21581:165;;21688:4;21668:26;::::0;;;:11:::1;:26;::::0;;;;;;;21703:9:::1;::::0;-1:-1:-1;;;;;21703:9:0::1;21668:46:::0;;;;;;;-1:-1:-1;;21668:66:0;;21581:165:::1;21758:17;21839:1;21823:6;:12;;;21779:56;;21803:6;:16;;;21780:39;;:20;:39;;;;:::i;:::-;21779:56;;;;:::i;:::-;21778:62;;;;:::i;:::-;21758:82:::0;-1:-1:-1;21851:15:0::1;21869:32;21758:82:::0;21869:20;:32:::1;:::i;:::-;21946:16;::::0;;21960:1:::1;21946:16:::0;;;;;::::1;::::0;;21851:50;;-1:-1:-1;21922:21:0::1;::::0;21946:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21946:16:0::1;21922:40;;21991:4;21973;21978:1;21973:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21973:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;22017:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;21973:7;;22017:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22007:4;22012:1;22007:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22007:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;22046:9:::1;::::0;:186:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:186:::1;::::0;22121:7;;22046:9:::1;::::0;22159:4;;22186::::1;::::0;22206:15:::1;::::0;22046:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;22266:21:0::1;::::0;-1:-1:-1;22245:18:0::1;::::0;-1:-1:-1;22352:7:0;;-1:-1:-1;22326:22:0::1;22339:9:::0;22266:21;22326:22:::1;:::i;:::-;22325:34;;;;:::i;:::-;22298:61:::0;-1:-1:-1;22376:13:0;;22372:328:::1;;22406:9;::::0;:222:::1;::::0;;;;22483:4:::1;22406:222;::::0;::::1;15899:34:1::0;15949:18;;;15942:34;;;22406:9:0::1;15992:18:1::0;;;15985:34;;;16035:18;;;16028:34;5729:42:0::1;16078:19:1::0;;;16071:44;22598:15:0::1;16131:19:1::0;;;16124:35;-1:-1:-1;;;;;22406:9:0;;::::1;::::0;:25:::1;::::0;22439:16;;15810:19:1;;22406:222:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;22648:40:0::1;::::0;;27495:25:1;;;27551:2;27536:18;;27529:34;;;22648:40:0::1;::::0;-1:-1:-1;27468:18:1;22648:40:0::1;;;;;;;22372:328;22712:30;22726:16:::0;22712:30;::::1;:::i;:::-;;;22769:6;:16;;;22753:6;:12;;:32;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;22845:12:::1;::::0;::::1;::::0;22831:10:::1;::::0;::::1;::::0;22796:18:::1;::::0;-1:-1:-1;22817:40:0;;::::1;::::0;22818:23:::1;::::0;::::1;:10:::0;:23:::1;:::i;:::-;22817:40;;;;:::i;:::-;22796:61:::0;-1:-1:-1;22868:24:0::1;22895:23;22796:61:::0;22895:10;:23:::1;:::i;:::-;22933:16;::::0;::::1;::::0;22868:50;;-1:-1:-1;22933:20:0::1;;::::0;22929:101:::1;;22970:11;:21:::0;:48:::1;::::0;-1:-1:-1;;;;;22970:21:0;;::::1;::::0;:48;::::1;;;::::0;23001:16;;22970:21:::1;:48:::0;:21;:48;23001:16;22970:21;:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22929:101;23044:10;::::0;::::1;::::0;:14:::1;;::::0;23040:83:::1;;23075:15:::0;;:36:::1;::::0;-1:-1:-1;;;;;23075:15:0;;::::1;::::0;:36;::::1;;;::::0;23100:10;;23075:15:::1;:36:::0;:15;:36;23100:10;23075:15;:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23040:83;21461:1669;;;;;;;;6844:1;-1:-1:-1::0;6856:6:0;:14;;-1:-1:-1;;6856:14:0;;;21388:1742::o;427:118:1:-;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;931:184::-;983:77;980:1;973:88;1080:4;1077:1;1070:15;1104:4;1101:1;1094:15;1120:334;1191:2;1185:9;1247:2;1237:13;;-1:-1:-1;;1233:86:1;1221:99;;1350:18;1335:34;;1371:22;;;1332:62;1329:88;;;1397:18;;:::i;:::-;1433:2;1426:22;1120:334;;-1:-1:-1;1120:334:1:o;1459:183::-;1519:4;1552:18;1544:6;1541:30;1538:56;;;1574:18;;:::i;:::-;-1:-1:-1;1619:1:1;1615:14;1631:4;1611:25;;1459:183::o;1647:154::-;-1:-1:-1;;;;;1726:5:1;1722:54;1715:5;1712:65;1702:93;;1791:1;1788;1781:12;1806:737;1860:5;1913:3;1906:4;1898:6;1894:17;1890:27;1880:55;;1931:1;1928;1921:12;1880:55;1967:6;1954:20;1993:4;2017:60;2033:43;2073:2;2033:43;:::i;:::-;2017:60;:::i;:::-;2111:15;;;2197:1;2193:10;;;;2181:23;;2177:32;;;2142:12;;;;2221:15;;;2218:35;;;2249:1;2246;2239:12;2218:35;2285:2;2277:6;2273:15;2297:217;2313:6;2308:3;2305:15;2297:217;;;2393:3;2380:17;2410:31;2435:5;2410:31;:::i;:::-;2454:18;;2492:12;;;;2330;;2297:217;;;-1:-1:-1;2532:5:1;1806:737;-1:-1:-1;;;;;;1806:737:1:o;2548:477::-;2638:6;2646;2699:2;2687:9;2678:7;2674:23;2670:32;2667:52;;;2715:1;2712;2705:12;2667:52;2755:9;2742:23;2788:18;2780:6;2777:30;2774:50;;;2820:1;2817;2810:12;2774:50;2843:61;2896:7;2887:6;2876:9;2872:22;2843:61;:::i;:::-;2833:71;;;2954:2;2943:9;2939:18;2926:32;2967:28;2989:5;2967:28;:::i;3400:656::-;3512:4;3541:2;3570;3559:9;3552:21;3602:6;3596:13;3645:6;3640:2;3629:9;3625:18;3618:34;3670:1;3680:140;3694:6;3691:1;3688:13;3680:140;;;3789:14;;;3785:23;;3779:30;3755:17;;;3774:2;3751:26;3744:66;3709:10;;3680:140;;;3838:6;3835:1;3832:13;3829:91;;;3908:1;3903:2;3894:6;3883:9;3879:22;3875:31;3868:42;3829:91;-1:-1:-1;3972:2:1;3960:15;-1:-1:-1;;3956:88:1;3941:104;;;;4047:2;3937:113;;3400:656;-1:-1:-1;;;3400:656:1:o;4309:315::-;4377:6;4385;4438:2;4426:9;4417:7;4413:23;4409:32;4406:52;;;4454:1;4451;4444:12;4406:52;4493:9;4480:23;4512:31;4537:5;4512:31;:::i;:::-;4562:5;4614:2;4599:18;;;;4586:32;;-1:-1:-1;;;4309:315:1:o;4821:180::-;4880:6;4933:2;4921:9;4912:7;4908:23;4904:32;4901:52;;;4949:1;4946;4939:12;4901:52;-1:-1:-1;4972:23:1;;4821:180;-1:-1:-1;4821:180:1:o;5006:1138::-;5124:6;5132;5185:2;5173:9;5164:7;5160:23;5156:32;5153:52;;;5201:1;5198;5191:12;5153:52;5241:9;5228:23;5270:18;5311:2;5303:6;5300:14;5297:34;;;5327:1;5324;5317:12;5297:34;5350:61;5403:7;5394:6;5383:9;5379:22;5350:61;:::i;:::-;5340:71;;5430:2;5420:12;;5485:2;5474:9;5470:18;5457:32;5514:2;5504:8;5501:16;5498:36;;;5530:1;5527;5520:12;5498:36;5553:24;;;-1:-1:-1;5608:4:1;5600:13;;5596:27;-1:-1:-1;5586:55:1;;5637:1;5634;5627:12;5586:55;5673:2;5660:16;5696:60;5712:43;5752:2;5712:43;:::i;5696:60::-;5790:15;;;5872:1;5868:10;;;;5860:19;;5856:28;;;5821:12;;;;5896:19;;;5893:39;;;5928:1;5925;5918:12;5893:39;5952:11;;;;5972:142;5988:6;5983:3;5980:15;5972:142;;;6054:17;;6042:30;;6005:12;;;;6092;;;;5972:142;;;6133:5;6123:15;;;;;;;5006:1138;;;;;:::o;6149:456::-;6226:6;6234;6242;6295:2;6283:9;6274:7;6270:23;6266:32;6263:52;;;6311:1;6308;6301:12;6263:52;6350:9;6337:23;6369:31;6394:5;6369:31;:::i;:::-;6419:5;-1:-1:-1;6476:2:1;6461:18;;6448:32;6489:33;6448:32;6489:33;:::i;:::-;6149:456;;6541:7;;-1:-1:-1;;;6595:2:1;6580:18;;;;6567:32;;6149:456::o;6610:248::-;6678:6;6686;6739:2;6727:9;6718:7;6714:23;6710:32;6707:52;;;6755:1;6752;6745:12;6707:52;-1:-1:-1;;6778:23:1;;;6848:2;6833:18;;;6820:32;;-1:-1:-1;6610:248:1:o;7052:159::-;7119:20;;7179:6;7168:18;;7158:29;;7148:57;;7201:1;7198;7191:12;7148:57;7052:159;;;:::o;7216:328::-;7290:6;7298;7306;7359:2;7347:9;7338:7;7334:23;7330:32;7327:52;;;7375:1;7372;7365:12;7327:52;7398:28;7416:9;7398:28;:::i;:::-;7388:38;;7445:37;7478:2;7467:9;7463:18;7445:37;:::i;:::-;7435:47;;7501:37;7534:2;7523:9;7519:18;7501:37;:::i;:::-;7491:47;;7216:328;;;;;:::o;7549:247::-;7608:6;7661:2;7649:9;7640:7;7636:23;7632:32;7629:52;;;7677:1;7674;7667:12;7629:52;7716:9;7703:23;7735:31;7760:5;7735:31;:::i;7801:454::-;7896:6;7904;7912;7920;7928;7981:3;7969:9;7960:7;7956:23;7952:33;7949:53;;;7998:1;7995;7988:12;7949:53;-1:-1:-1;;8021:23:1;;;8091:2;8076:18;;8063:32;;-1:-1:-1;8142:2:1;8127:18;;8114:32;;8193:2;8178:18;;8165:32;;-1:-1:-1;8244:3:1;8229:19;8216:33;;-1:-1:-1;7801:454:1;-1:-1:-1;7801:454:1:o;8260:382::-;8325:6;8333;8386:2;8374:9;8365:7;8361:23;8357:32;8354:52;;;8402:1;8399;8392:12;8354:52;8441:9;8428:23;8460:31;8485:5;8460:31;:::i;8647:241::-;8703:6;8756:2;8744:9;8735:7;8731:23;8727:32;8724:52;;;8772:1;8769;8762:12;8724:52;8811:9;8798:23;8830:28;8852:5;8830:28;:::i;9342:404::-;9426:6;9434;9487:2;9475:9;9466:7;9462:23;9458:32;9455:52;;;9503:1;9500;9493:12;9455:52;9542:9;9529:23;9561:31;9586:5;9561:31;:::i;:::-;9611:5;-1:-1:-1;9668:2:1;9653:18;;9640:32;9681:33;9640:32;9681:33;:::i;11127:484::-;11180:3;11218:5;11212:12;11245:6;11240:3;11233:19;11271:4;11300:2;11295:3;11291:12;11284:19;;11337:2;11330:5;11326:14;11358:1;11368:218;11382:6;11379:1;11376:13;11368:218;;;11447:13;;-1:-1:-1;;;;;11443:62:1;11431:75;;11526:12;;;;11561:15;;;;11404:1;11397:9;11368:218;;;-1:-1:-1;11602:3:1;;11127:484;-1:-1:-1;;;;;11127:484:1:o;11616:342::-;11817:2;11806:9;11799:21;11780:4;11837:56;11889:2;11878:9;11874:18;11866:6;11837:56;:::i;:::-;11829:64;;11943:6;11936:14;11929:22;11924:2;11913:9;11909:18;11902:50;11616:342;;;;;:::o;12663:184::-;12715:77;12712:1;12705:88;12812:4;12809:1;12802:15;12836:4;12833:1;12826:15;12852:228;12892:7;13018:1;-1:-1:-1;;12946:74:1;12943:1;12940:81;12935:1;12928:9;12921:17;12917:105;12914:131;;;13025:18;;:::i;:::-;-1:-1:-1;13065:9:1;;12852:228::o;13444:251::-;13514:6;13567:2;13555:9;13546:7;13542:23;13538:32;13535:52;;;13583:1;13580;13573:12;13535:52;13615:9;13609:16;13634:31;13659:5;13634:31;:::i;14032:482::-;14121:1;14164:5;14121:1;14178:330;14199:7;14189:8;14186:21;14178:330;;;14318:4;-1:-1:-1;;14246:77:1;14240:4;14237:87;14234:113;;;14327:18;;:::i;:::-;14377:7;14367:8;14363:22;14360:55;;;14397:16;;;;14360:55;14476:22;;;;14436:15;;;;14178:330;;;14182:3;14032:482;;;;;:::o;14519:866::-;14568:5;14598:8;14588:80;;-1:-1:-1;14639:1:1;14653:5;;14588:80;14687:4;14677:76;;-1:-1:-1;14724:1:1;14738:5;;14677:76;14769:4;14787:1;14782:59;;;;14855:1;14850:130;;;;14762:218;;14782:59;14812:1;14803:10;;14826:5;;;14850:130;14887:3;14877:8;14874:17;14871:43;;;14894:18;;:::i;:::-;-1:-1:-1;;14950:1:1;14936:16;;14965:5;;14762:218;;15064:2;15054:8;15051:16;15045:3;15039:4;15036:13;15032:36;15026:2;15016:8;15013:16;15008:2;15002:4;14999:12;14995:35;14992:77;14989:159;;;-1:-1:-1;15101:19:1;;;15133:5;;14989:159;15180:34;15205:8;15199:4;15180:34;:::i;:::-;15310:6;-1:-1:-1;;15238:79:1;15229:7;15226:92;15223:118;;;15321:18;;:::i;:::-;15359:20;;14519:866;-1:-1:-1;;;14519:866:1:o;15390:140::-;15448:5;15477:47;15518:4;15508:8;15504:19;15498:4;15477:47;:::i;16170:306::-;16258:6;16266;16274;16327:2;16315:9;16306:7;16302:23;16298:32;16295:52;;;16343:1;16340;16333:12;16295:52;16372:9;16366:16;16356:26;;16422:2;16411:9;16407:18;16401:25;16391:35;;16466:2;16455:9;16451:18;16445:25;16435:35;;16170:306;;;;;:::o;16481:274::-;16521:1;16547;16537:189;;16582:77;16579:1;16572:88;16683:4;16680:1;16673:15;16711:4;16708:1;16701:15;16537:189;-1:-1:-1;16740:9:1;;16481:274::o;17110:184::-;17162:77;17159:1;17152:88;17259:4;17256:1;17249:15;17283:4;17280:1;17273:15;17299:175;17336:3;17380:4;17373:5;17369:16;17409:4;17400:7;17397:17;17394:43;;17417:18;;:::i;:::-;17466:1;17453:15;;17299:175;-1:-1:-1;;17299:175:1:o;17479:125::-;17519:4;17547:1;17544;17541:8;17538:34;;;17552:18;;:::i;:::-;-1:-1:-1;17589:9:1;;17479:125::o;21430:224::-;21469:3;21497:6;21530:2;21527:1;21523:10;21560:2;21557:1;21553:10;21591:3;21587:2;21583:12;21578:3;21575:21;21572:47;;;21599:18;;:::i;:::-;21635:13;;21430:224;-1:-1:-1;;;;21430:224:1:o;22016:245::-;22083:6;22136:2;22124:9;22115:7;22111:23;22107:32;22104:52;;;22152:1;22149;22142:12;22104:52;22184:9;22178:16;22203:28;22225:5;22203:28;:::i;23423:128::-;23463:3;23494:1;23490:6;23487:1;23484:13;23481:39;;;23500:18;;:::i;:::-;-1:-1:-1;23536:9:1;;23423:128::o;26711:605::-;27010:6;26999:9;26992:25;27053:6;27048:2;27037:9;27033:18;27026:34;27096:3;27091:2;27080:9;27076:18;27069:31;26973:4;27117:57;27169:3;27158:9;27154:19;27146:6;27117:57;:::i;:::-;-1:-1:-1;;;;;27210:55:1;;;;27205:2;27190:18;;27183:83;-1:-1:-1;27297:3:1;27282:19;27275:35;27109:65;26711:605;-1:-1:-1;;;26711:605:1:o;27574:217::-;27613:4;27642:6;27698:10;;;;27668;;27720:12;;;27717:38;;;27735:18;;:::i;:::-;27772:13;;27574:217;-1:-1:-1;;;27574:217:1:o

Swarm Source

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