ETH Price: $3,338.00 (-0.16%)

Token

Micro GPT ($MICRO)
 

Overview

Max Total Supply

1,000,000,000 $MICRO

Holders

1,970

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Rabby: Fee wallet
Balance
6,958.660791820162859052 $MICRO

Value
$0.00
0x39041f1b366fe33f9a5a79de5120f2aee2577ebc
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:
MicroGPT

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

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

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

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

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

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

interface Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
}

contract MicroGPT is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    uint256 constant private startingSupply = 1_000_000_000;
    string constant private _name = "Micro GPT";
    string constant private _symbol = "$MICRO";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

    struct Ratios {
        uint16 development;
        uint16 community;
        uint16 marketing;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        development: 2,
        marketing: 2,
        community: 1,
        totalSwap: 5
    });

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

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

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

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x655E3C0c1B1788E53A530b8B423f9309A942731a),
        development: payable(0xd9cD1feC9149244622003727118ccb85cF2d69b4),
        community: payable(0x035C6a01F35d0941FCb8ca627ecf15d6f474d86C)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxTxAmount = (_tTotal * 2) / 100;
    uint256 private _maxWalletSize = (_tTotal * 5) / 100;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;
    uint256 public launchStamp;

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

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

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

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

        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.

    address private _owner;

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

    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership instead.");
        require(newOwner != DEAD, "Call renounceOwnership instead.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        if (!_hasLiqBeenAdded) {
            _liquidityHolders[oldOwner] = false;
            _liquidityHolders[newOwner] = true;
        }
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    function renounceOwnership() external onlyOwner {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

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

    receive() external payable {}
    function totalSupply() external pure override returns (uint256) { 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) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        _approve(address(this), address(dexRouter), 0);
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        lpPairs[lpPair] = false;
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

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

    function setInitializer(address init) public onlyOwner {
        require(!tradingEnabled);
        require(init != address(this), "Can't be self.");
        initializer = Initializer(init);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[lpPair] = true; 
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
        } catch { revert(); }
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

    }

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

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

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

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

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

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

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

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

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

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

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

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

        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 communityBalance = (amtBalance * ratios.community) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - (communityBalance + developmentBalance);
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.development > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 55000}("");
        }
        if (ratios.community > 0) {
            (success,) = _taxWallets.community.call{value: communityBalance, gas: 55000}("");
        }
    }

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

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(initializer) == address(0)){
            initializer = Initializer(address(this));
        }
        try initializer.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try initializer.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapThreshold = initThreshold;
            swapAmount = initSwapAmount;
        } catch {}
        tradingEnabled = true;
        launchStamp = block.timestamp;
    }

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

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

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

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try initializer.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, amount, buy, sell) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        return true;
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (address(initializer) == address(this)
            && block.chainid != 97) { currentFee = 4500; }
        if (currentFee == 0) { return amount; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"community","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"community","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"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":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"init","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"community","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"community","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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"}]

600060028181556101f4608081905260a05260c0919091526008805465ffffffffffff19166301f401f417905560e0819052600161010052610120526005610140526009805466050002000100026001600160401b03199091161790556101c060405273655e3c0c1b1788e53a530b8b423f9309a942731a61016081905273d9cd1fec9149244622003727118ccb85cf2d69b461018081905273035c6a01f35d0941fcb8ca627ecf15d6f474d86c6101a0819052600c80546001600160a01b03199081169094179055600d80548416909217909155600e8054909216179055600f805461ff0019169055600a6013819055606490620001019060129062000442565b6200011190633b9aca006200045a565b6200011e9060026200045a565b6200012a919062000474565b60145560646200013d6012600a62000442565b6200014d90633b9aca006200045a565b6200015a9060056200045a565b62000166919062000474565b6015556016805461ffff19169055601880546001600160a01b03191633179055620001946012600a62000442565b620001a490633b9aca006200045a565b601880546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001f86012600a62000442565b6200020890633b9aca006200045a565b60405190815260200160405180910390a3601880546001600160a01b0390811660009081526006602081815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055965490951684526004825283208054861685179055527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548416831790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf9805490921617905562000497565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003845781600019048211156200036857620003686200032d565b808516156200037657918102915b93841c939080029062000348565b509250929050565b6000826200039d575060016200043c565b81620003ac575060006200043c565b8160018114620003c55760028114620003d057620003f0565b60019150506200043c565b60ff841115620003e457620003e46200032d565b50506001821b6200043c565b5060208310610133831016604e8410600b841016171562000415575081810a6200043c565b62000421838362000343565b80600019048211156200043857620004386200032d565b0290505b92915050565b60006200045360ff8416836200038c565b9392505050565b80820281158282048414176200043c576200043c6200032d565b6000826200049257634e487b7160e01b600052601260045260246000fd5b500490565b613fd480620004a76000396000f3fe6080604052600436106103905760003560e01c806350a8e016116101dc578063a9059cbb11610102578063cf847706116100a0578063f94aa1b41161006f578063f94aa1b414610adf578063fb78680d14610b36578063fdb78c0e14610b56578063feadde9c14610b7557600080fd5b8063cf847706146109fc578063dd62ed3e14610a64578063eafb5a3c14610aaa578063ee5d9c2d14610aca57600080fd5b8063b1b08f71116100dc578063b1b08f7114610603578063b3d514fb14610603578063b7df8b36146109c2578063bfc2fc35146109dc57600080fd5b8063a9059cbb14610962578063aa22b17214610982578063ab558e4d146109a257600080fd5b8063715018a61161017a578063893d20e811610149578063893d20e8146108eb5780638a63bd9b146109095780638a8c523c1461091e57806395d89b411461093357600080fd5b8063715018a61461088157806375cb1bd11461089657806378648edf146108b657806380c581d1146108cb57600080fd5b80635c24b074116101b65780635c24b074146107f35780635cce86cd146108135780636ebd00781461084c57806370a082311461086157600080fd5b806350a8e0161461079e578063590ffdce146107bd5780635a6f0918146107dd57600080fd5b806328577751116102c157806336fddb041161025f5780634bbb93eb1161022e5780634bbb93eb146107055780634e718e48146107255780634fb2e45d146107455780634fbee1931461076557600080fd5b806336fddb041461068b5780633f3cf56c146106ab578063452ed4f1146106cb5780634ada218b146106eb57600080fd5b80632e8fa8211161029b5780632e8fa82114610619578063313ce5671461062f57806332cde6641461064b57806333251a0b1461066b57600080fd5b806328577751146105d85780632b112e49146105ee5780632b28fc7a1461060357600080fd5b8063095ea7b31161032e57806318160ddd1161030857806318160ddd1461056357806323b872dd1461057857806326003957146105985780632610eaca146105b857600080fd5b8063095ea7b3146104f55780630dcbcf1c146105155780630fa604e41461054e57600080fd5b8063069d955f1161036a578063069d955f1461041557806306fdde031461046b5780630758d924146104a657806307dd79e0146104cb57600080fd5b806303fd2a451461039c5780630445b667146103cf578063044df726146103f357600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103db57600080fd5b506103e560105481565b6040519081526020016103c6565b3480156103ff57600080fd5b5061041361040e366004613832565b610b95565b005b34801561042157600080fd5b506008546104469061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103c6565b34801561047757600080fd5b50604080518082019091526009815268135a58dc9bc811d41560ba1b60208201525b6040516103c6919061386b565b3480156104b257600080fd5b50600a546103b29061010090046001600160a01b031681565b3480156104d757600080fd5b50600a546104e59060ff1681565b60405190151581526020016103c6565b34801561050157600080fd5b506104e56105103660046138ce565b610c39565b34801561052157600080fd5b506104e56105303660046138fa565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561055a57600080fd5b506103e5610c50565b34801561056f57600080fd5b506103e5610c70565b34801561058457600080fd5b506104e5610593366004613917565b610c8c565b3480156105a457600080fd5b506104136105b3366004613958565b610d04565b3480156105c457600080fd5b506104136105d3366004613a50565b610e22565b3480156105e457600080fd5b506103e560135481565b3480156105fa57600080fd5b506103e5610f9f565b34801561060f57600080fd5b506103e5610fa081565b34801561062557600080fd5b506103e560115481565b34801561063b57600080fd5b50604051601281526020016103c6565b34801561065757600080fd5b50610413610666366004613b29565b610fe4565b34801561067757600080fd5b506104136106863660046138fa565b61110e565b34801561069757600080fd5b506104136106a6366004613b6c565b6111a1565b3480156106b757600080fd5b506104136106c6366004613958565b6111f6565b3480156106d757600080fd5b50600b546103b2906001600160a01b031681565b3480156106f757600080fd5b506016546104e59060ff1681565b34801561071157600080fd5b506103e5610720366004613b8a565b61132d565b34801561073157600080fd5b50610413610740366004613b8a565b61135f565b34801561075157600080fd5b506104136107603660046138fa565b6113d8565b34801561077157600080fd5b506104e56107803660046138fa565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107aa57600080fd5b506016546104e590610100900460ff1681565b3480156107c957600080fd5b506104136107d8366004613b6c565b6115bb565b3480156107e957600080fd5b506103e560175481565b3480156107ff57600080fd5b5061041361080e3660046138fa565b611610565b34801561081f57600080fd5b506104e561082e3660046138fa565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561085857600080fd5b506103e56117b4565b34801561086d57600080fd5b506103e561087c3660046138fa565b6117cf565b34801561088d57600080fd5b506104136117ea565b3480156108a257600080fd5b506104136108b1366004613ba3565b6118e3565b3480156108c257600080fd5b506104136119cc565b3480156108d757600080fd5b506104136108e6366004613b6c565b611a05565b3480156108f757600080fd5b506018546001600160a01b03166103b2565b34801561091557600080fd5b506104e5611bb2565b34801561092a57600080fd5b50610413611c04565b34801561093f57600080fd5b50604080518082019091526006815265244d4943524f60d01b6020820152610499565b34801561096e57600080fd5b506104e561097d3660046138ce565b611e2e565b34801561098e57600080fd5b5061041361099d366004613b29565b611e45565b3480156109ae57600080fd5b506104136109bd3660046138fa565b611f6c565b3480156109ce57600080fd5b506012546104e59060ff1681565b3480156109e857600080fd5b506104136109f7366004613832565b6120e8565b348015610a0857600080fd5b50600954610a369061ffff808216916201000081048216916401000000008204811691600160301b90041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103c6565b348015610a7057600080fd5b506103e5610a7f366004613bee565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610ab657600080fd5b50610413610ac53660046138fa565b612171565b348015610ad657600080fd5b50610413612565565b348015610aeb57600080fd5b50600c54600d54600e54610b0c926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103c6565b348015610b4257600080fd5b50610413610b51366004613c1c565b612620565b348015610b6257600080fd5b50600f546104e590610100900460ff1681565b348015610b8157600080fd5b50610413610b90366004613b6c565b61282a565b6018546001600160a01b03163314610bc85760405162461bcd60e51b8152600401610bbf90613c4e565b60405180910390fd5b60165460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c1d57600080fd5b505af1158015610c31573d6000803e3d6000fd5b505050505050565b6000610c4633848461287f565b5060015b92915050565b6000610c5e6012600a613d73565b601554610c6b9190613d82565b905090565b6000610c7e6012600a613d73565b610c6b90633b9aca00613da4565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610cf1576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610ceb908490613dbb565b90915550505b610cfc848484612978565b949350505050565b6018546001600160a01b03163314610d2e5760405162461bcd60e51b8152600401610bbf90613c4e565b6064610d3c6012600a613d73565b610d4a90633b9aca00613da4565b610d549190613d82565b8183610d626012600a613d73565b610d7090633b9aca00613da4565b610d7a9190613da4565b610d849190613d82565b1015610deb5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610bbf565b8082610df96012600a613d73565b610e0790633b9aca00613da4565b610e119190613da4565b610e1b9190613d82565b6015555050565b6018546001600160a01b03163314610e4c5760405162461bcd60e51b8152600401610bbf90613c4e565b8051825114610e955760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610bbf565b60005b82518161ffff161015610f9a57610eb16012600a613d73565b828261ffff1681518110610ec757610ec7613dce565b6020026020010151610ed99190613da4565b610ee2336117cf565b1015610f255760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610bbf565b610f8733848361ffff1681518110610f3f57610f3f613dce565b60200260200101516012600a610f559190613d73565b858561ffff1681518110610f6b57610f6b613dce565b6020026020010151610f7d9190613da4565b6000806001612e28565b5080610f9281613de4565b915050610e98565b505050565b6000610fab60006117cf565b610fb661dead6117cf565b610fc09190613e05565b610fcc6012600a613d73565b610fda90633b9aca00613da4565b610c6b9190613dbb565b6018546001600160a01b0316331461100e5760405162461bcd60e51b8152600401610bbf90613c4e565b600a5460ff16156110555760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610bbf565b610fa08361ffff16111580156110715750610fa08261ffff1611155b80156110835750610fa08161ffff1611155b6110cf5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610bbf565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6018546001600160a01b031633146111385760405162461bcd60e51b8152600401610bbf90613c4e565b6016546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561118657600080fd5b505af115801561119a573d6000803e3d6000fd5b5050505050565b6018546001600160a01b031633146111cb5760405162461bcd60e51b8152600401610bbf90613c4e565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6018546001600160a01b031633146112205760405162461bcd60e51b8152600401610bbf90613c4e565b6103e861122f6012600a613d73565b61123d90633b9aca00613da4565b611248906005613da4565b6112529190613d82565b81836112606012600a613d73565b61126e90633b9aca00613da4565b6112789190613da4565b6112829190613d82565b10156112f65760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610bbf565b80826113046012600a613d73565b61131290633b9aca00613da4565b61131c9190613da4565b6113269190613d82565b6014555050565b600b5460009061271090839061134b906001600160a01b03166117cf565b6113559190613da4565b610c4a9190613d82565b6018546001600160a01b031633146113895760405162461bcd60e51b8152600401610bbf90613c4e565b60968111156113d35760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610bbf565b601355565b6018546001600160a01b031633146114025760405162461bcd60e51b8152600401610bbf90613c4e565b6001600160a01b0381166114585760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610bbf565b61deac196001600160a01b038216016114b35760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610bbf565b6018546114ca906001600160a01b031660006115bb565b6114d58160016115bb565b6018546000906114ed906001600160a01b03166117cf565b111561150f5760185461150d906001600160a01b031682610f7d826117cf565b505b601880546001600160a01b038381166001600160a01b031983161790925560165491169060ff61010090910416611577576001600160a01b03808216600090815260046020526040808220805460ff1990811690915592851682529020805490911660011790555b816001600160a01b0316816001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6018546001600160a01b031633146115e55760405162461bcd60e51b8152600401610bbf90613c4e565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6018546001600160a01b0316331461163a5760405162461bcd60e51b8152600401610bbf90613c4e565b60165460ff161561164a57600080fd5b306001600160a01b038216036116935760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610bbf565b6016805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611719575060408051601f3d908101601f1916820190925261171691810190613e18565b60015b61172257600080fd5b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff191690911790556018549254611792938316929190041660001961287f565b600a54610f9a90309061010090046001600160a01b031660001961287f565b50565b60006117c26012600a613d73565b601454610c6b9190613d82565b6001600160a01b031660009081526020819052604090205490565b6018546001600160a01b031633146118145760405162461bcd60e51b8152600401610bbf90613c4e565b60165460ff1661187e5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610bbf565b601854611895906001600160a01b031660006115bb565b601880546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6018546001600160a01b0316331461190d5760405162461bcd60e51b8152600401610bbf90613c4e565b6001600160a01b0383161580159061192d57506001600160a01b03821615155b801561194157506001600160a01b03811615155b61198d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610bbf565b600c80546001600160a01b039485166001600160a01b031991821617909155600d805493851693821693909317909255600e8054919093169116179055565b6018546001600160a01b031633146119f65760405162461bcd60e51b8152600401610bbf90613c4e565b600a805460ff19166001179055565b6018546001600160a01b03163314611a2f5760405162461bcd60e51b8152600401610bbf90613c4e565b80611a8d576001600160a01b03828116600081815260016020526040808220805460ff1916905560165490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610c03565b60025415611ae6576203f48060025442611aa79190613dbb565b11611ae65760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610bbf565b6001600160a01b03821660009081526001602052604090205460ff1615611b4f5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610bbf565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560165491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610c03565b5050565b6018546000906001600160a01b03163314611bdf5760405162461bcd60e51b8152600401610bbf90613c4e565b600a54611bfe90309061010090046001600160a01b031660001961287f565b50600190565b6018546001600160a01b03163314611c2e5760405162461bcd60e51b8152600401610bbf90613c4e565b60165460ff1615611c815760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bbf565b601654610100900460ff16611cd85760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bbf565b6016546201000090046001600160a01b0316611d08576016805462010000600160b01b0319163062010000021790555b601654600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611d7a57600080fd5b505af1925050508015611d8b575060015b50601654600b546001600160a01b03620100009092048216916325a71cae91611db491166117cf565b6040518263ffffffff1660e01b8152600401611dd291815260200190565b60408051808303816000875af1925050508015611e0c575060408051601f3d908101601f19168201909252611e0991810190613e47565b60015b15611e1b576010919091556011555b6016805460ff1916600117905542601755565b6000611e3b338484612978565b5060019392505050565b6018546001600160a01b03163314611e6f5760405162461bcd60e51b8152600401610bbf90613c4e565b6009805461ffff838116620100000263ffff0000198783166401000000000265ffff0000ffff1990941692871692909217929092171617905582611eb38284613e6b565b611ebd9190613e6b565b6009805467ffff0000000000001916600160301b61ffff93841602179055600854600091611ef49162010000810482169116613e6b565b60095461ffff9182169250600160301b900416811015611f665760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610bbf565b50505050565b6018546001600160a01b03163314611f965760405162461bcd60e51b8152600401610bbf90613c4e565b601654610100900460ff1615611ffe57306001600160a01b03821603611ffe5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610bbf565b6018546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015612055573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120799190613e8d565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156120c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9a9190613ea6565b6018546001600160a01b031633146121125760405162461bcd60e51b8152600401610bbf90613c4e565b600f805461ff001916610100841515908102919091179091556012805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6018546001600160a01b0316331461219b5760405162461bcd60e51b8152600401610bbf90613c4e565b601654610100900460ff16156121f35760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610bbf565b600a5461221190309061010090046001600160a01b0316600061287f565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227a9190613ec3565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122eb9190613ec3565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235a9190613ec3565b600b546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166124f057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e99190613ec3565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245a9190613ec3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156124a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124cb9190613ec3565b600b80546001600160a01b0319166001600160a01b039290921691909117905561250c565b600b80546001600160a01b0319166001600160a01b0383161790555b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154610f9a92309291041660001961287f565b6018546001600160a01b0316331461258f5760405162461bcd60e51b8152600401610bbf90613c4e565b601654610100900460ff16156125e75760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bbf565b6018546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156117b1573d6000803e3d6000fd5b6018546001600160a01b0316331461264a5760405162461bcd60e51b8152600401610bbf90613c4e565b82846126586012600a613d73565b61266690633b9aca00613da4565b6126709190613da4565b61267a9190613d82565b601055808261268b6012600a613d73565b61269990633b9aca00613da4565b6126a39190613da4565b6126ad9190613d82565b6011819055601054111561270d5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610bbf565b600b5461271090612726906001600160a01b03166117cf565b612731906096613da4565b61273b9190613d82565b60115411156127985760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610bbf565b620f42406127a86012600a613d73565b6127b690633b9aca00613da4565b6127c09190613d82565b60115410156127e15760405162461bcd60e51b8152600401610bbf90613ee0565b620f42406127f16012600a613d73565b6127ff90633b9aca00613da4565b6128099190613d82565b6010541015611f665760405162461bcd60e51b8152600401610bbf90613ee0565b6018546001600160a01b031633146128545760405162461bcd60e51b8152600401610bbf90613c4e565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166128cb5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610bbf565b6001600160a01b0382166129175760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610bbf565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166129de5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bbf565b6001600160a01b038316612a405760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bbf565b60008211612aa25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bbf565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612ad05760019250612afe565b6001600160a01b03861660009081526001602052604090205460ff1615612afa5760019150612afe565b5060015b612b0887876130db565b15612d7f5760165460ff16612c095780612b645760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bbf565b6001600160a01b03871660009081526005602052604090205460ff16158015612ba657506001600160a01b03861660009081526005602052604090205460ff16155b15612c095760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610bbf565b8280612c125750815b15612cc1576001600160a01b03871660009081526007602052604090205460ff16158015612c5957506001600160a01b03861660009081526007602052604090205460ff16155b15612cc157601454851115612cc15760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610bbf565b600a546001600160a01b038781166101009092041614801590612ce2575081155b15612d7f576001600160a01b03861660009081526007602052604090205460ff16612d7f5760155485612d14886117cf565b612d1e9190613e05565b1115612d7f5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610bbf565b8115612e0f57600f5460ff16612e0f57600f54610100900460ff1615612e0f576000612daa306117cf565b90506010548110612e0d5760115460125460ff1615612df757601354600b546127109190612de0906001600160a01b03166117cf565b612dea9190613da4565b612df49190613d82565b90505b808210612e02578091505b612e0b826131f2565b505b505b612e1d878787868686612e28565b979650505050505050565b6000612e3487876130db565b15612ece5760165460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612eb7575060408051601f3d908101601f19168201909252612eb491810190613ea6565b60015b612ec057600080fd5b905080612ecc57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612f1057506001600160a01b03871660009081526006602052604090205460ff165b15612f19575060005b6001600160a01b03881660009081526020819052604081208054889290612f41908490613dbb565b909155506000905081612f545786612f60565b612f60898888886135d8565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612f969190613e05565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fe291815260200190565b60405180910390a3601654610100900460ff166130cc5761300389896136e4565b601654610100900460ff16158015613020575061302089896130db565b801561304557506001600160a01b03891660009081526005602052604090205460ff16155b801561306a57506001600160a01b03881660009081526005602052604090205460ff16155b8015613074575083155b156130cc5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610bbf565b50600198975050505050505050565b6018546000906001600160a01b0384811691161480159061310a57506018546001600160a01b03838116911614155b801561312157506018546001600160a01b03163214155b801561314657506001600160a01b03821660009081526004602052604090205460ff16155b801561316b57506001600160a01b03831660009081526004602052604090205460ff16155b801561318257506001600160a01b03821661dead14155b801561319657506001600160a01b03821615155b80156131ab57506001600160a01b0383163014155b80156131cb57506016546001600160a01b03848116620100009092041614155b80156131eb57506016546001600160a01b03838116620100009092041614155b9392505050565b600f805460ff191660011790556040805160808101825260095461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b90049091166060820181905260000361325057506135cb565b306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902054600019146132b357306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132e8576132e8613dce565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561335b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337f9190613ec3565b8160018151811061339257613392613dce565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac947906133df908690600090869030904290600401613f2d565b600060405180830381600087803b1580156133f957600080fd5b505af192505050801561340a575060015b6134155750506135cb565b606082015182514791600091829161ffff90811691613435911685613da4565b61343f9190613d82565b90506000856060015161ffff16866020015161ffff16856134609190613da4565b61346a9190613d82565b905060006134788383613e05565b6134829086613dbb565b604088015190915061ffff16156134f057600c546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d80600081146134e5576040519150601f19603f3d011682016040523d82523d6000602084013e6134ea565b606091505b50909450505b865161ffff161561355857600d546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d806000811461354d576040519150601f19603f3d011682016040523d82523d6000602084013e613552565b606091505b50909450505b602087015161ffff16156135c357600e546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d80600081146135b8576040519150601f19603f3d011682016040523d82523d6000602084013e6135bd565b606091505b50909450505b505050505050505b50600f805460ff19169055565b60008083156135ee575060085461ffff16613618565b8215613607575060085462010000900461ffff16613618565b50600854640100000000900461ffff165b6016546201000090046001600160a01b031630148015613639575046606114155b1561364357506111945b806000036136545784915050610cfc565b60006127106136638388613da4565b61366d9190613d82565b905080156136da573060009081526020819052604081208054839290613694908490613e05565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612e1d8187613dbb565b601654610100900460ff16156137485760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610bbf565b61375282826130db565b15801561376c5750600b546001600160a01b038281169116145b15611bae576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556016805461ff0019166101001790819055620100009004166137e4576016805462010000600160b01b0319163062010000021790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612165565b80151581146117b157600080fd5b6000806040838503121561384557600080fd5b823561385081613824565b9150602083013561386081613824565b809150509250929050565b600060208083528351808285015260005b818110156138985785810183015185820160400152820161387c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146117b157600080fd5b600080604083850312156138e157600080fd5b82356138ec816138b9565b946020939093013593505050565b60006020828403121561390c57600080fd5b81356131eb816138b9565b60008060006060848603121561392c57600080fd5b8335613937816138b9565b92506020840135613947816138b9565b929592945050506040919091013590565b6000806040838503121561396b57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156139b9576139b961397a565b604052919050565b600067ffffffffffffffff8211156139db576139db61397a565b5060051b60200190565b600082601f8301126139f657600080fd5b81356020613a0b613a06836139c1565b613990565b82815260059290921b84018101918181019086841115613a2a57600080fd5b8286015b84811015613a455780358352918301918301613a2e565b509695505050505050565b60008060408385031215613a6357600080fd5b823567ffffffffffffffff80821115613a7b57600080fd5b818501915085601f830112613a8f57600080fd5b81356020613a9f613a06836139c1565b82815260059290921b84018101918181019089841115613abe57600080fd5b948201945b83861015613ae5578535613ad6816138b9565b82529482019490820190613ac3565b96505086013592505080821115613afb57600080fd5b50613b08858286016139e5565b9150509250929050565b803561ffff81168114613b2457600080fd5b919050565b600080600060608486031215613b3e57600080fd5b613b4784613b12565b9250613b5560208501613b12565b9150613b6360408501613b12565b90509250925092565b60008060408385031215613b7f57600080fd5b8235613850816138b9565b600060208284031215613b9c57600080fd5b5035919050565b600080600060608486031215613bb857600080fd5b8335613bc3816138b9565b92506020840135613bd3816138b9565b91506040840135613be3816138b9565b809150509250925092565b60008060408385031215613c0157600080fd5b8235613c0c816138b9565b91506020830135613860816138b9565b60008060008060808587031215613c3257600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613cca578160001904821115613cb057613cb0613c79565b80851615613cbd57918102915b93841c9390800290613c94565b509250929050565b600082613ce157506001610c4a565b81613cee57506000610c4a565b8160018114613d045760028114613d0e57613d2a565b6001915050610c4a565b60ff841115613d1f57613d1f613c79565b50506001821b610c4a565b5060208310610133831016604e8410600b8410161715613d4d575081810a610c4a565b613d578383613c8f565b8060001904821115613d6b57613d6b613c79565b029392505050565b60006131eb60ff841683613cd2565b600082613d9f57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610c4a57610c4a613c79565b81810381811115610c4a57610c4a613c79565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613dfb57613dfb613c79565b6001019392505050565b80820180821115610c4a57610c4a613c79565b60008060408385031215613e2b57600080fd5b8251613e36816138b9565b6020840151909250613860816138b9565b60008060408385031215613e5a57600080fd5b505080516020909101519092909150565b61ffff818116838216019080821115613e8657613e86613c79565b5092915050565b600060208284031215613e9f57600080fd5b5051919050565b600060208284031215613eb857600080fd5b81516131eb81613824565b600060208284031215613ed557600080fd5b81516131eb816138b9565b6020808252602d908201527f43616e6e6f74206265206c6f776572207468616e20302e3030303125206f662060408201526c3a37ba30b61039bab838363c9760991b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613f7d5784516001600160a01b031683529383019391830191600101613f58565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e0e0c1b100c1bd89cdfddf479066a76e1aae5106bd77f556aebfb4ef15cf4e2e64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103905760003560e01c806350a8e016116101dc578063a9059cbb11610102578063cf847706116100a0578063f94aa1b41161006f578063f94aa1b414610adf578063fb78680d14610b36578063fdb78c0e14610b56578063feadde9c14610b7557600080fd5b8063cf847706146109fc578063dd62ed3e14610a64578063eafb5a3c14610aaa578063ee5d9c2d14610aca57600080fd5b8063b1b08f71116100dc578063b1b08f7114610603578063b3d514fb14610603578063b7df8b36146109c2578063bfc2fc35146109dc57600080fd5b8063a9059cbb14610962578063aa22b17214610982578063ab558e4d146109a257600080fd5b8063715018a61161017a578063893d20e811610149578063893d20e8146108eb5780638a63bd9b146109095780638a8c523c1461091e57806395d89b411461093357600080fd5b8063715018a61461088157806375cb1bd11461089657806378648edf146108b657806380c581d1146108cb57600080fd5b80635c24b074116101b65780635c24b074146107f35780635cce86cd146108135780636ebd00781461084c57806370a082311461086157600080fd5b806350a8e0161461079e578063590ffdce146107bd5780635a6f0918146107dd57600080fd5b806328577751116102c157806336fddb041161025f5780634bbb93eb1161022e5780634bbb93eb146107055780634e718e48146107255780634fb2e45d146107455780634fbee1931461076557600080fd5b806336fddb041461068b5780633f3cf56c146106ab578063452ed4f1146106cb5780634ada218b146106eb57600080fd5b80632e8fa8211161029b5780632e8fa82114610619578063313ce5671461062f57806332cde6641461064b57806333251a0b1461066b57600080fd5b806328577751146105d85780632b112e49146105ee5780632b28fc7a1461060357600080fd5b8063095ea7b31161032e57806318160ddd1161030857806318160ddd1461056357806323b872dd1461057857806326003957146105985780632610eaca146105b857600080fd5b8063095ea7b3146104f55780630dcbcf1c146105155780630fa604e41461054e57600080fd5b8063069d955f1161036a578063069d955f1461041557806306fdde031461046b5780630758d924146104a657806307dd79e0146104cb57600080fd5b806303fd2a451461039c5780630445b667146103cf578063044df726146103f357600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103db57600080fd5b506103e560105481565b6040519081526020016103c6565b3480156103ff57600080fd5b5061041361040e366004613832565b610b95565b005b34801561042157600080fd5b506008546104469061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103c6565b34801561047757600080fd5b50604080518082019091526009815268135a58dc9bc811d41560ba1b60208201525b6040516103c6919061386b565b3480156104b257600080fd5b50600a546103b29061010090046001600160a01b031681565b3480156104d757600080fd5b50600a546104e59060ff1681565b60405190151581526020016103c6565b34801561050157600080fd5b506104e56105103660046138ce565b610c39565b34801561052157600080fd5b506104e56105303660046138fa565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561055a57600080fd5b506103e5610c50565b34801561056f57600080fd5b506103e5610c70565b34801561058457600080fd5b506104e5610593366004613917565b610c8c565b3480156105a457600080fd5b506104136105b3366004613958565b610d04565b3480156105c457600080fd5b506104136105d3366004613a50565b610e22565b3480156105e457600080fd5b506103e560135481565b3480156105fa57600080fd5b506103e5610f9f565b34801561060f57600080fd5b506103e5610fa081565b34801561062557600080fd5b506103e560115481565b34801561063b57600080fd5b50604051601281526020016103c6565b34801561065757600080fd5b50610413610666366004613b29565b610fe4565b34801561067757600080fd5b506104136106863660046138fa565b61110e565b34801561069757600080fd5b506104136106a6366004613b6c565b6111a1565b3480156106b757600080fd5b506104136106c6366004613958565b6111f6565b3480156106d757600080fd5b50600b546103b2906001600160a01b031681565b3480156106f757600080fd5b506016546104e59060ff1681565b34801561071157600080fd5b506103e5610720366004613b8a565b61132d565b34801561073157600080fd5b50610413610740366004613b8a565b61135f565b34801561075157600080fd5b506104136107603660046138fa565b6113d8565b34801561077157600080fd5b506104e56107803660046138fa565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107aa57600080fd5b506016546104e590610100900460ff1681565b3480156107c957600080fd5b506104136107d8366004613b6c565b6115bb565b3480156107e957600080fd5b506103e560175481565b3480156107ff57600080fd5b5061041361080e3660046138fa565b611610565b34801561081f57600080fd5b506104e561082e3660046138fa565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561085857600080fd5b506103e56117b4565b34801561086d57600080fd5b506103e561087c3660046138fa565b6117cf565b34801561088d57600080fd5b506104136117ea565b3480156108a257600080fd5b506104136108b1366004613ba3565b6118e3565b3480156108c257600080fd5b506104136119cc565b3480156108d757600080fd5b506104136108e6366004613b6c565b611a05565b3480156108f757600080fd5b506018546001600160a01b03166103b2565b34801561091557600080fd5b506104e5611bb2565b34801561092a57600080fd5b50610413611c04565b34801561093f57600080fd5b50604080518082019091526006815265244d4943524f60d01b6020820152610499565b34801561096e57600080fd5b506104e561097d3660046138ce565b611e2e565b34801561098e57600080fd5b5061041361099d366004613b29565b611e45565b3480156109ae57600080fd5b506104136109bd3660046138fa565b611f6c565b3480156109ce57600080fd5b506012546104e59060ff1681565b3480156109e857600080fd5b506104136109f7366004613832565b6120e8565b348015610a0857600080fd5b50600954610a369061ffff808216916201000081048216916401000000008204811691600160301b90041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103c6565b348015610a7057600080fd5b506103e5610a7f366004613bee565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610ab657600080fd5b50610413610ac53660046138fa565b612171565b348015610ad657600080fd5b50610413612565565b348015610aeb57600080fd5b50600c54600d54600e54610b0c926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103c6565b348015610b4257600080fd5b50610413610b51366004613c1c565b612620565b348015610b6257600080fd5b50600f546104e590610100900460ff1681565b348015610b8157600080fd5b50610413610b90366004613b6c565b61282a565b6018546001600160a01b03163314610bc85760405162461bcd60e51b8152600401610bbf90613c4e565b60405180910390fd5b60165460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c1d57600080fd5b505af1158015610c31573d6000803e3d6000fd5b505050505050565b6000610c4633848461287f565b5060015b92915050565b6000610c5e6012600a613d73565b601554610c6b9190613d82565b905090565b6000610c7e6012600a613d73565b610c6b90633b9aca00613da4565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610cf1576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610ceb908490613dbb565b90915550505b610cfc848484612978565b949350505050565b6018546001600160a01b03163314610d2e5760405162461bcd60e51b8152600401610bbf90613c4e565b6064610d3c6012600a613d73565b610d4a90633b9aca00613da4565b610d549190613d82565b8183610d626012600a613d73565b610d7090633b9aca00613da4565b610d7a9190613da4565b610d849190613d82565b1015610deb5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610bbf565b8082610df96012600a613d73565b610e0790633b9aca00613da4565b610e119190613da4565b610e1b9190613d82565b6015555050565b6018546001600160a01b03163314610e4c5760405162461bcd60e51b8152600401610bbf90613c4e565b8051825114610e955760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610bbf565b60005b82518161ffff161015610f9a57610eb16012600a613d73565b828261ffff1681518110610ec757610ec7613dce565b6020026020010151610ed99190613da4565b610ee2336117cf565b1015610f255760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610bbf565b610f8733848361ffff1681518110610f3f57610f3f613dce565b60200260200101516012600a610f559190613d73565b858561ffff1681518110610f6b57610f6b613dce565b6020026020010151610f7d9190613da4565b6000806001612e28565b5080610f9281613de4565b915050610e98565b505050565b6000610fab60006117cf565b610fb661dead6117cf565b610fc09190613e05565b610fcc6012600a613d73565b610fda90633b9aca00613da4565b610c6b9190613dbb565b6018546001600160a01b0316331461100e5760405162461bcd60e51b8152600401610bbf90613c4e565b600a5460ff16156110555760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610bbf565b610fa08361ffff16111580156110715750610fa08261ffff1611155b80156110835750610fa08161ffff1611155b6110cf5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610bbf565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6018546001600160a01b031633146111385760405162461bcd60e51b8152600401610bbf90613c4e565b6016546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561118657600080fd5b505af115801561119a573d6000803e3d6000fd5b5050505050565b6018546001600160a01b031633146111cb5760405162461bcd60e51b8152600401610bbf90613c4e565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6018546001600160a01b031633146112205760405162461bcd60e51b8152600401610bbf90613c4e565b6103e861122f6012600a613d73565b61123d90633b9aca00613da4565b611248906005613da4565b6112529190613d82565b81836112606012600a613d73565b61126e90633b9aca00613da4565b6112789190613da4565b6112829190613d82565b10156112f65760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610bbf565b80826113046012600a613d73565b61131290633b9aca00613da4565b61131c9190613da4565b6113269190613d82565b6014555050565b600b5460009061271090839061134b906001600160a01b03166117cf565b6113559190613da4565b610c4a9190613d82565b6018546001600160a01b031633146113895760405162461bcd60e51b8152600401610bbf90613c4e565b60968111156113d35760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610bbf565b601355565b6018546001600160a01b031633146114025760405162461bcd60e51b8152600401610bbf90613c4e565b6001600160a01b0381166114585760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610bbf565b61deac196001600160a01b038216016114b35760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610bbf565b6018546114ca906001600160a01b031660006115bb565b6114d58160016115bb565b6018546000906114ed906001600160a01b03166117cf565b111561150f5760185461150d906001600160a01b031682610f7d826117cf565b505b601880546001600160a01b038381166001600160a01b031983161790925560165491169060ff61010090910416611577576001600160a01b03808216600090815260046020526040808220805460ff1990811690915592851682529020805490911660011790555b816001600160a01b0316816001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6018546001600160a01b031633146115e55760405162461bcd60e51b8152600401610bbf90613c4e565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6018546001600160a01b0316331461163a5760405162461bcd60e51b8152600401610bbf90613c4e565b60165460ff161561164a57600080fd5b306001600160a01b038216036116935760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610bbf565b6016805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611719575060408051601f3d908101601f1916820190925261171691810190613e18565b60015b61172257600080fd5b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff191690911790556018549254611792938316929190041660001961287f565b600a54610f9a90309061010090046001600160a01b031660001961287f565b50565b60006117c26012600a613d73565b601454610c6b9190613d82565b6001600160a01b031660009081526020819052604090205490565b6018546001600160a01b031633146118145760405162461bcd60e51b8152600401610bbf90613c4e565b60165460ff1661187e5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610bbf565b601854611895906001600160a01b031660006115bb565b601880546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6018546001600160a01b0316331461190d5760405162461bcd60e51b8152600401610bbf90613c4e565b6001600160a01b0383161580159061192d57506001600160a01b03821615155b801561194157506001600160a01b03811615155b61198d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610bbf565b600c80546001600160a01b039485166001600160a01b031991821617909155600d805493851693821693909317909255600e8054919093169116179055565b6018546001600160a01b031633146119f65760405162461bcd60e51b8152600401610bbf90613c4e565b600a805460ff19166001179055565b6018546001600160a01b03163314611a2f5760405162461bcd60e51b8152600401610bbf90613c4e565b80611a8d576001600160a01b03828116600081815260016020526040808220805460ff1916905560165490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610c03565b60025415611ae6576203f48060025442611aa79190613dbb565b11611ae65760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610bbf565b6001600160a01b03821660009081526001602052604090205460ff1615611b4f5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610bbf565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560165491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610c03565b5050565b6018546000906001600160a01b03163314611bdf5760405162461bcd60e51b8152600401610bbf90613c4e565b600a54611bfe90309061010090046001600160a01b031660001961287f565b50600190565b6018546001600160a01b03163314611c2e5760405162461bcd60e51b8152600401610bbf90613c4e565b60165460ff1615611c815760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bbf565b601654610100900460ff16611cd85760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bbf565b6016546201000090046001600160a01b0316611d08576016805462010000600160b01b0319163062010000021790555b601654600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611d7a57600080fd5b505af1925050508015611d8b575060015b50601654600b546001600160a01b03620100009092048216916325a71cae91611db491166117cf565b6040518263ffffffff1660e01b8152600401611dd291815260200190565b60408051808303816000875af1925050508015611e0c575060408051601f3d908101601f19168201909252611e0991810190613e47565b60015b15611e1b576010919091556011555b6016805460ff1916600117905542601755565b6000611e3b338484612978565b5060019392505050565b6018546001600160a01b03163314611e6f5760405162461bcd60e51b8152600401610bbf90613c4e565b6009805461ffff838116620100000263ffff0000198783166401000000000265ffff0000ffff1990941692871692909217929092171617905582611eb38284613e6b565b611ebd9190613e6b565b6009805467ffff0000000000001916600160301b61ffff93841602179055600854600091611ef49162010000810482169116613e6b565b60095461ffff9182169250600160301b900416811015611f665760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610bbf565b50505050565b6018546001600160a01b03163314611f965760405162461bcd60e51b8152600401610bbf90613c4e565b601654610100900460ff1615611ffe57306001600160a01b03821603611ffe5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610bbf565b6018546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015612055573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120799190613e8d565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156120c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9a9190613ea6565b6018546001600160a01b031633146121125760405162461bcd60e51b8152600401610bbf90613c4e565b600f805461ff001916610100841515908102919091179091556012805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6018546001600160a01b0316331461219b5760405162461bcd60e51b8152600401610bbf90613c4e565b601654610100900460ff16156121f35760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610bbf565b600a5461221190309061010090046001600160a01b0316600061287f565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227a9190613ec3565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122eb9190613ec3565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235a9190613ec3565b600b546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166124f057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e99190613ec3565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245a9190613ec3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156124a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124cb9190613ec3565b600b80546001600160a01b0319166001600160a01b039290921691909117905561250c565b600b80546001600160a01b0319166001600160a01b0383161790555b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154610f9a92309291041660001961287f565b6018546001600160a01b0316331461258f5760405162461bcd60e51b8152600401610bbf90613c4e565b601654610100900460ff16156125e75760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bbf565b6018546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156117b1573d6000803e3d6000fd5b6018546001600160a01b0316331461264a5760405162461bcd60e51b8152600401610bbf90613c4e565b82846126586012600a613d73565b61266690633b9aca00613da4565b6126709190613da4565b61267a9190613d82565b601055808261268b6012600a613d73565b61269990633b9aca00613da4565b6126a39190613da4565b6126ad9190613d82565b6011819055601054111561270d5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610bbf565b600b5461271090612726906001600160a01b03166117cf565b612731906096613da4565b61273b9190613d82565b60115411156127985760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610bbf565b620f42406127a86012600a613d73565b6127b690633b9aca00613da4565b6127c09190613d82565b60115410156127e15760405162461bcd60e51b8152600401610bbf90613ee0565b620f42406127f16012600a613d73565b6127ff90633b9aca00613da4565b6128099190613d82565b6010541015611f665760405162461bcd60e51b8152600401610bbf90613ee0565b6018546001600160a01b031633146128545760405162461bcd60e51b8152600401610bbf90613c4e565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166128cb5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610bbf565b6001600160a01b0382166129175760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610bbf565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166129de5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bbf565b6001600160a01b038316612a405760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bbf565b60008211612aa25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bbf565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612ad05760019250612afe565b6001600160a01b03861660009081526001602052604090205460ff1615612afa5760019150612afe565b5060015b612b0887876130db565b15612d7f5760165460ff16612c095780612b645760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bbf565b6001600160a01b03871660009081526005602052604090205460ff16158015612ba657506001600160a01b03861660009081526005602052604090205460ff16155b15612c095760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610bbf565b8280612c125750815b15612cc1576001600160a01b03871660009081526007602052604090205460ff16158015612c5957506001600160a01b03861660009081526007602052604090205460ff16155b15612cc157601454851115612cc15760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610bbf565b600a546001600160a01b038781166101009092041614801590612ce2575081155b15612d7f576001600160a01b03861660009081526007602052604090205460ff16612d7f5760155485612d14886117cf565b612d1e9190613e05565b1115612d7f5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610bbf565b8115612e0f57600f5460ff16612e0f57600f54610100900460ff1615612e0f576000612daa306117cf565b90506010548110612e0d5760115460125460ff1615612df757601354600b546127109190612de0906001600160a01b03166117cf565b612dea9190613da4565b612df49190613d82565b90505b808210612e02578091505b612e0b826131f2565b505b505b612e1d878787868686612e28565b979650505050505050565b6000612e3487876130db565b15612ece5760165460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612eb7575060408051601f3d908101601f19168201909252612eb491810190613ea6565b60015b612ec057600080fd5b905080612ecc57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612f1057506001600160a01b03871660009081526006602052604090205460ff165b15612f19575060005b6001600160a01b03881660009081526020819052604081208054889290612f41908490613dbb565b909155506000905081612f545786612f60565b612f60898888886135d8565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612f969190613e05565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fe291815260200190565b60405180910390a3601654610100900460ff166130cc5761300389896136e4565b601654610100900460ff16158015613020575061302089896130db565b801561304557506001600160a01b03891660009081526005602052604090205460ff16155b801561306a57506001600160a01b03881660009081526005602052604090205460ff16155b8015613074575083155b156130cc5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610bbf565b50600198975050505050505050565b6018546000906001600160a01b0384811691161480159061310a57506018546001600160a01b03838116911614155b801561312157506018546001600160a01b03163214155b801561314657506001600160a01b03821660009081526004602052604090205460ff16155b801561316b57506001600160a01b03831660009081526004602052604090205460ff16155b801561318257506001600160a01b03821661dead14155b801561319657506001600160a01b03821615155b80156131ab57506001600160a01b0383163014155b80156131cb57506016546001600160a01b03848116620100009092041614155b80156131eb57506016546001600160a01b03838116620100009092041614155b9392505050565b600f805460ff191660011790556040805160808101825260095461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b90049091166060820181905260000361325057506135cb565b306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902054600019146132b357306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132e8576132e8613dce565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561335b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337f9190613ec3565b8160018151811061339257613392613dce565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac947906133df908690600090869030904290600401613f2d565b600060405180830381600087803b1580156133f957600080fd5b505af192505050801561340a575060015b6134155750506135cb565b606082015182514791600091829161ffff90811691613435911685613da4565b61343f9190613d82565b90506000856060015161ffff16866020015161ffff16856134609190613da4565b61346a9190613d82565b905060006134788383613e05565b6134829086613dbb565b604088015190915061ffff16156134f057600c546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d80600081146134e5576040519150601f19603f3d011682016040523d82523d6000602084013e6134ea565b606091505b50909450505b865161ffff161561355857600d546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d806000811461354d576040519150601f19603f3d011682016040523d82523d6000602084013e613552565b606091505b50909450505b602087015161ffff16156135c357600e546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d80600081146135b8576040519150601f19603f3d011682016040523d82523d6000602084013e6135bd565b606091505b50909450505b505050505050505b50600f805460ff19169055565b60008083156135ee575060085461ffff16613618565b8215613607575060085462010000900461ffff16613618565b50600854640100000000900461ffff165b6016546201000090046001600160a01b031630148015613639575046606114155b1561364357506111945b806000036136545784915050610cfc565b60006127106136638388613da4565b61366d9190613d82565b905080156136da573060009081526020819052604081208054839290613694908490613e05565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612e1d8187613dbb565b601654610100900460ff16156137485760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610bbf565b61375282826130db565b15801561376c5750600b546001600160a01b038281169116145b15611bae576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556016805461ff0019166101001790819055620100009004166137e4576016805462010000600160b01b0319163062010000021790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612165565b80151581146117b157600080fd5b6000806040838503121561384557600080fd5b823561385081613824565b9150602083013561386081613824565b809150509250929050565b600060208083528351808285015260005b818110156138985785810183015185820160400152820161387c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146117b157600080fd5b600080604083850312156138e157600080fd5b82356138ec816138b9565b946020939093013593505050565b60006020828403121561390c57600080fd5b81356131eb816138b9565b60008060006060848603121561392c57600080fd5b8335613937816138b9565b92506020840135613947816138b9565b929592945050506040919091013590565b6000806040838503121561396b57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156139b9576139b961397a565b604052919050565b600067ffffffffffffffff8211156139db576139db61397a565b5060051b60200190565b600082601f8301126139f657600080fd5b81356020613a0b613a06836139c1565b613990565b82815260059290921b84018101918181019086841115613a2a57600080fd5b8286015b84811015613a455780358352918301918301613a2e565b509695505050505050565b60008060408385031215613a6357600080fd5b823567ffffffffffffffff80821115613a7b57600080fd5b818501915085601f830112613a8f57600080fd5b81356020613a9f613a06836139c1565b82815260059290921b84018101918181019089841115613abe57600080fd5b948201945b83861015613ae5578535613ad6816138b9565b82529482019490820190613ac3565b96505086013592505080821115613afb57600080fd5b50613b08858286016139e5565b9150509250929050565b803561ffff81168114613b2457600080fd5b919050565b600080600060608486031215613b3e57600080fd5b613b4784613b12565b9250613b5560208501613b12565b9150613b6360408501613b12565b90509250925092565b60008060408385031215613b7f57600080fd5b8235613850816138b9565b600060208284031215613b9c57600080fd5b5035919050565b600080600060608486031215613bb857600080fd5b8335613bc3816138b9565b92506020840135613bd3816138b9565b91506040840135613be3816138b9565b809150509250925092565b60008060408385031215613c0157600080fd5b8235613c0c816138b9565b91506020830135613860816138b9565b60008060008060808587031215613c3257600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613cca578160001904821115613cb057613cb0613c79565b80851615613cbd57918102915b93841c9390800290613c94565b509250929050565b600082613ce157506001610c4a565b81613cee57506000610c4a565b8160018114613d045760028114613d0e57613d2a565b6001915050610c4a565b60ff841115613d1f57613d1f613c79565b50506001821b610c4a565b5060208310610133831016604e8410600b8410161715613d4d575081810a610c4a565b613d578383613c8f565b8060001904821115613d6b57613d6b613c79565b029392505050565b60006131eb60ff841683613cd2565b600082613d9f57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610c4a57610c4a613c79565b81810381811115610c4a57610c4a613c79565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613dfb57613dfb613c79565b6001019392505050565b80820180821115610c4a57610c4a613c79565b60008060408385031215613e2b57600080fd5b8251613e36816138b9565b6020840151909250613860816138b9565b60008060408385031215613e5a57600080fd5b505080516020909101519092909150565b61ffff818116838216019080821115613e8657613e86613c79565b5092915050565b600060208284031215613e9f57600080fd5b5051919050565b600060208284031215613eb857600080fd5b81516131eb81613824565b600060208284031215613ed557600080fd5b81516131eb816138b9565b6020808252602d908201527f43616e6e6f74206265206c6f776572207468616e20302e3030303125206f662060408201526c3a37ba30b61039bab838363c9760991b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613f7d5784516001600160a01b031683529383019391830191600101613f58565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e0e0c1b100c1bd89cdfddf479066a76e1aae5106bd77f556aebfb4ef15cf4e2e64736f6c63430008130033

Deployed Bytecode Sourcemap

4090:22644:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5662:73;;;;;;;;;;;;5693:42;5662:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5662:73:0;;;;;;;;6237:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;6237:28:0;222:177:1;14608:153:0;;;;;;;;;;-1:-1:-1;14608:153:0;;;;;:::i;:::-;;:::i;:::-;;5107:107;;;;;;;;;;-1:-1:-1;5107:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;1114:6:1;1147:15;;;1129:34;;1199:15;;;1194:2;1179:18;;1172:43;1251:15;;1231:18;;;1224:43;;;;1092:2;1077:18;5107:107:0;908:365:1;9998:80:0;;;;;;;;;;-1:-1:-1;10070:5:0;;;;;;;;;;;;-1:-1:-1;;;10070:5:0;;;;9998:80;;;;;;;:::i;5601:26::-;;;;;;;;;;-1:-1:-1;5601:26:0;;;;;;;-1:-1:-1;;;;;5601:26:0;;;5568;;;;;;;;;;-1:-1:-1;5568:26:0;;;;;;;;;;;2221:14:1;;2214:22;2196:41;;2184:2;2169:18;5568:26:0;2056:187:1;10606:161:0;;;;;;;;;;-1:-1:-1;10606:161:0;;;;;:::i;:::-;;:::i;14037:140::-;;;;;;;;;;-1:-1:-1;14037:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14135:34:0;14111:4;14135:34;;;:25;:34;;;;;;;;;14037:140;16970:114;;;;;;;;;;;;;:::i;9733:83::-;;;;;;;;;;;;;:::i;11276:306::-;;;;;;;;;;-1:-1:-1;11276:306:0;;;;;:::i;:::-;;:::i;16582:264::-;;;;;;;;;;-1:-1:-1;16582:264:0;;;;;:::i;:::-;;:::i;24446:447::-;;;;;;;;;;-1:-1:-1;24446:447:0;;;;;:::i;:::-;;:::i;6345:33::-;;;;;;;;;;;;;;;;14341:141;;;;;;;;;;;;;:::i;5365:42::-;;;;;;;;;;;;5403:4;5365:42;;6272:25;;;;;;;;;;;;;;;;9822:80;;;;;;;;;;-1:-1:-1;9822:80:0;;4778:2;6299:36:1;;6287:2;6272:18;9822:80:0;6157:184:1;14959:453:0;;;;;;;;;;-1:-1:-1;14959:453:0;;;;;:::i;:::-;;:::i;14490:110::-;;;;;;;;;;-1:-1:-1;14490:110:0;;;;;:::i;:::-;;:::i;13612:140::-;;;;;;;;;;-1:-1:-1;13612:140:0;;;;;:::i;:::-;;:::i;16301:273::-;;;;;;;;;;-1:-1:-1;16301:273:0;;;;;:::i;:::-;;:::i;5634:21::-;;;;;;;;;;-1:-1:-1;5634:21:0;;;;-1:-1:-1;;;;;5634:21:0;;;6509:34;;;;;;;;;;-1:-1:-1;6509:34:0;;;;;;;;17092:189;;;;;;;;;;-1:-1:-1;17092:189:0;;;;;:::i;:::-;;:::i;17994:217::-;;;;;;;;;;-1:-1:-1;17994:217:0;;;;;:::i;:::-;;:::i;8297:728::-;;;;;;;;;;-1:-1:-1;8297:728:0;;;;;:::i;:::-;;:::i;13760:127::-;;;;;;;;;;-1:-1:-1;13760:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13851:28:0;13827:4;13851:28;;;:19;:28;;;;;;;;;13760:127;6550:36;;;;;;;;;;-1:-1:-1;6550:36:0;;;;;;;;;;;13895:134;;;;;;;;;;-1:-1:-1;13895:134:0;;;;;:::i;:::-;;:::i;6623:26::-;;;;;;;;;;;;;;;;12907:557;;;;;;;;;;-1:-1:-1;12907:557:0;;;;;:::i;:::-;;:::i;13472:132::-;;;;;;;;;;-1:-1:-1;13472:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;13566:30:0;13542:4;13566:30;;;:21;:30;;;;;;;;;13472:132;16854:108;;;;;;;;;;;;;:::i;10308:117::-;;;;;;;;;;-1:-1:-1;10308:117:0;;;;;:::i;:::-;;:::i;9033:310::-;;;;;;;;;;;;;:::i;15872:421::-;;;;;;;;;;-1:-1:-1;15872:421:0;;;;;:::i;:::-;;:::i;14769:182::-;;;;;;;;;;;;;:::i;12335:564::-;;;;;;;;;;-1:-1:-1;12335:564:0;;;;;:::i;:::-;;:::i;10084:79::-;;;;;;;;;;-1:-1:-1;10154:6:0;;-1:-1:-1;;;;;10154:6:0;10084:79;;11093:175;;;;;;;;;;;;;:::i;23249:695::-;;;;;;;;;;;;;:::i;9908:84::-;;;;;;;;;;-1:-1:-1;9982:7:0;;;;;;;;;;;;-1:-1:-1;;;9982:7:0;;;;9908:84;;10433:165;;;;;;;;;;-1:-1:-1;10433:165:0;;;;;:::i;:::-;;:::i;15420:444::-;;;;;;;;;;-1:-1:-1;15420:444:0;;;;;:::i;:::-;;:::i;24142:296::-;;;;;;;;;;-1:-1:-1;24142:296:0;;;;;:::i;:::-;;:::i;6304:34::-;;;;;;;;;;-1:-1:-1;6304:34:0;;;;;;;;18219:263;;;;;;;;;;-1:-1:-1;18219:263:0;;;;;:::i;:::-;;:::i;5223:133::-;;;;;;;;;;-1:-1:-1;5223:133:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5223:133:0;;;;;;;;;8206:6:1;8239:15;;;8221:34;;8291:15;;;8286:2;8271:18;;8264:43;8343:15;;;8323:18;;;8316:43;;;;8395:15;;;8390:2;8375:18;;8368:43;8183:3;8168:19;5223:133:0;7973:444:1;10169:133:0;;;;;;;;;;-1:-1:-1;10169:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10271:19:0;;;10253:7;10271:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10169:133;11590:737;;;;;;;;;;-1:-1:-1;11590:737:0;;;;;:::i;:::-;;:::i;23952:182::-;;;;;;;;;;;;;:::i;5888:272::-;;;;;;;;;;-1:-1:-1;5888:272:0;;;;;;;;-1:-1:-1;;;;;5888:272:0;;;;;;;;;;;;;;-1:-1:-1;;;;;9121:15:1;;;9103:34;;9173:15;;;9168:2;9153:18;;9146:43;9225:15;;9205:18;;;9198:43;;;;9053:2;9038:18;5888:272:0;8815:432:1;17289:697:0;;;;;;;;;;-1:-1:-1;17289:697:0;;;;;:::i;:::-;;:::i;6191:39::-;;;;;;;;;;-1:-1:-1;6191:39:0;;;;;;;;;;;14185:148;;;;;;;;;;-1:-1:-1;14185:148:0;;;;;:::i;:::-;;:::i;14608:153::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;;;;;;;;;14703:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;14703:50:0;;10175:14:1;;10168:22;14703:50:0::1;::::0;::::1;10150:41:1::0;10234:14;;10227:22;10207:18;;;10200:50;14703:11:0;;;::::1;-1:-1:-1::0;;;;;14703:11:0::1;::::0;:26:::1;::::0;10123:18:1;;14703:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14608:153:::0;;:::o;10606:161::-;10683:4;10700:37;10709:10;10721:7;10730:6;10700:8;:37::i;:::-;-1:-1:-1;10755:4:0;10606:161;;;;;:::o;16970:114::-;17017:7;17062:13;4778:2;17062;:13;:::i;:::-;17044:14;;:32;;;;:::i;:::-;17037:39;;16970:114;:::o;9733:83::-;9788:7;4839:13;4778:2;4839;:13;:::i;:::-;4822:30;;4624:13;4822:30;:::i;11276:306::-;-1:-1:-1;;;;;11397:19:0;;11376:4;11397:19;;;:11;:19;;;;;;;;11417:10;11397:31;;;;;;;;-1:-1:-1;;11397:52:0;11393:126;;-1:-1:-1;;;;;11466:19:0;;;;;;:11;:19;;;;;;;;11486:10;11466:31;;;;;;;:41;;11501:6;;11466:19;:41;;11501:6;;11466:41;:::i;:::-;;;;-1:-1:-1;;11393:126:0;11538:36;11548:6;11556:9;11567:6;11538:9;:36::i;:::-;11531:43;11276:306;-1:-1:-1;;;;11276:306:0:o;16582:264::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;16724:3:::1;4839:13;4778:2;4839;:13;:::i;:::-;4822:30;::::0;4624:13:::1;4822:30;:::i;:::-;16714:13;;;;:::i;:::-;16702:7:::0;16691;4839:13:::1;4778:2;4839;:13;:::i;:::-;4822:30;::::0;4624:13:::1;4822:30;:::i;:::-;16681:17;;;;:::i;:::-;16680:29;;;;:::i;:::-;:48;;16672:109;;;::::0;-1:-1:-1;;;16672:109:0;;12506:2:1;16672:109:0::1;::::0;::::1;12488:21:1::0;12545:2;12525:18;;;12518:30;12584:34;12564:18;;;12557:62;-1:-1:-1;;;12635:18:1;;;12628:46;12691:19;;16672:109:0::1;12304:412:1::0;16672:109:0::1;16831:7:::0;16820;4839:13:::1;4778:2;4839;:13;:::i;:::-;4822:30;::::0;4624:13:::1;4822:30;:::i;:::-;16810:17;;;;:::i;:::-;16809:29;;;;:::i;:::-;16792:14;:46:::0;-1:-1:-1;;16582:264:0:o;24446:447::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;24581:7:::1;:14;24562:8;:15;:33;24554:67;;;::::0;-1:-1:-1;;;24554:67:0;;12923:2:1;24554:67:0::1;::::0;::::1;12905:21:1::0;12962:2;12942:18;;;12935:30;-1:-1:-1;;;12981:18:1;;;12974:51;13042:18;;24554:67:0::1;12721:345:1::0;24554:67:0::1;24637:8;24632:254;24655:8;:15;24651:1;:19;;;24632:254;;;24736:13;4778:2;24736;:13;:::i;:::-;24725:7;24733:1;24725:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24700:21;24710:10;24700:9;:21::i;:::-;:49;;24692:80;;;::::0;-1:-1:-1;;;24692:80:0;;13405:2:1;24692:80:0::1;::::0;::::1;13387:21:1::0;13444:2;13424:18;;;13417:30;-1:-1:-1;;;13463:18:1;;;13456:48;13521:18;;24692:80:0::1;13203:342:1::0;24692:80:0::1;24787:87;24804:10;24816:8;24825:1;24816:11;;;;;;;;;;:::i;:::-;;;;;;;4778:2;24840;:13;;;;:::i;:::-;24829:7;24837:1;24829:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24855:5;24862::::0;24869:4:::1;24787:16;:87::i;:::-;-1:-1:-1::0;24672:3:0;::::1;::::0;::::1;:::i;:::-;;;;24632:254;;;;24446:447:::0;;:::o;14341:141::-;14394:7;14451:21;14469:1;14451:9;:21::i;:::-;14433:15;5693:42;14433:9;:15::i;:::-;:39;;;;:::i;:::-;4839:13;4778:2;4839;:13;:::i;:::-;4822:30;;4624:13;4822:30;:::i;:::-;14422:51;;;;:::i;14959:453::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;15067:14:::1;::::0;::::1;;15066:15;15058:45;;;::::0;-1:-1:-1;;;15058:45:0;;14084:2:1;15058:45:0::1;::::0;::::1;14066:21:1::0;14123:2;14103:18;;;14096:30;-1:-1:-1;;;14142:18:1;;;14135:47;14199:18;;15058:45:0::1;13882:341:1::0;15058:45:0::1;5403:4;15122:6;:21;;;;:65;;;;;5453:4;15164:7;:23;;;;15122:65;:117;;;;;5507:4;15208:11;:31;;;;15122:117;15114:170;;;::::0;-1:-1:-1;;;15114:170:0;;14430:2:1;15114:170:0::1;::::0;::::1;14412:21:1::0;14469:2;14449:18;;;14442:30;14508:25;14488:18;;;14481:53;14551:18;;15114:170:0::1;14228:347:1::0;15114:170:0::1;15295:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;15331:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;15369:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;14959:453::o;14490:110::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;14559:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;14559:33:0;;-1:-1:-1;;;;;178:32:1;;;14559:33:0::1;::::0;::::1;160:51:1::0;14559:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;14559:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14490:110:::0;:::o;13612:140::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13704:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;13704:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13612:140::o;16301:273::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;16446:4:::1;4839:13;4778:2;4839;:13;:::i;:::-;4822:30;::::0;4624:13:::1;4822:30;:::i;:::-;16432:11;::::0;16442:1:::1;16432:11;:::i;:::-;:18;;;;:::i;:::-;16420:7:::0;16409;4839:13:::1;4778:2;4839;:13;:::i;:::-;4822:30;::::0;4624:13:::1;4822:30;:::i;:::-;16399:17;;;;:::i;:::-;16398:29;;;;:::i;:::-;:53;;16390:121;;;::::0;-1:-1:-1;;;16390:121:0;;14782:2:1;16390:121:0::1;::::0;::::1;14764:21:1::0;14821:2;14801:18;;;14794:30;14860:34;14840:18;;;14833:62;14931:25;14911:18;;;14904:53;14974:19;;16390:121:0::1;14580:419:1::0;16390:121:0::1;16559:7:::0;16548;4839:13:::1;4778:2;4839;:13;:::i;:::-;4822:30;::::0;4624:13:::1;4822:30;:::i;:::-;16538:17;;;;:::i;:::-;16537:29;;;;:::i;:::-;16522:12;:44:::0;-1:-1:-1;;16301:273:0:o;17092:189::-;17221:6;;17183:7;;5554:5;;17231:21;;17211:17;;-1:-1:-1;;;;;17221:6:0;17211:9;:17::i;:::-;:41;;;;:::i;:::-;17210:62;;;;:::i;17994:217::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;18124:3:::1;18098:22;:29;;18090:64;;;::::0;-1:-1:-1;;;18090:64:0;;15206:2:1;18090:64:0::1;::::0;::::1;15188:21:1::0;15245:2;15225:18;;;15218:30;-1:-1:-1;;;15264:18:1;;;15257:52;15326:18;;18090:64:0::1;15004:346:1::0;18090:64:0::1;18165:13;:38:::0;17994:217::o;8297:728::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8376:22:0;::::1;8368:66;;;::::0;-1:-1:-1;;;8368:66:0;;15557:2:1;8368:66:0::1;::::0;::::1;15539:21:1::0;15596:2;15576:18;;;15569:30;15635:33;15615:18;;;15608:61;15686:18;;8368:66:0::1;15355:355:1::0;8368:66:0::1;-1:-1:-1::0;;;;;;;8453:16:0;::::1;::::0;8445:60:::1;;;::::0;-1:-1:-1;;;8445:60:0;;15557:2:1;8445:60:0::1;::::0;::::1;15539:21:1::0;15596:2;15576:18;;;15569:30;15635:33;15615:18;;;15608:61;15686:18;;8445:60:0::1;15355:355:1::0;8445:60:0::1;8536:6;::::0;8516:34:::1;::::0;-1:-1:-1;;;;;8536:6:0::1;;8516:19;:34::i;:::-;8561:35;8581:8;8591:4;8561:19;:35::i;:::-;8631:6;::::0;8641:1:::1;::::0;8621:17:::1;::::0;-1:-1:-1;;;;;8631:6:0::1;8621:9;:17::i;:::-;:21;8617:127;;;8676:6;::::0;8659:73:::1;::::0;-1:-1:-1;;;;;8676:6:0::1;8684:8:::0;8694:17:::1;8676:6:::0;8694:9:::1;:17::i;8659:73::-;;8617:127;8783:6;::::0;;-1:-1:-1;;;;;8800:17:0;;::::1;-1:-1:-1::0;;;;;;8800:17:0;::::1;;::::0;;;8833:16:::1;::::0;8783:6;::::1;::::0;8833:16:::1;8783:6;8833:16:::0;;::::1;;8828:134;;-1:-1:-1::0;;;;;8866:27:0;;::::1;8896:5;8866:27:::0;;;:17:::1;:27;::::0;;;;;:35;;-1:-1:-1;;8866:35:0;;::::1;::::0;;;8916:27;;::::1;::::0;;;;:34;;;;::::1;8866:35:::0;8916:34:::1;::::0;;8828:134:::1;9008:8;-1:-1:-1::0;;;;;8977:40:0::1;8998:8;-1:-1:-1::0;;;;;8977:40:0::1;;;;;;;;;;;8357:668;8297:728:::0;:::o;13895:134::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13983:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13983:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13895:134::o;12907:557::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;12982:14:::1;::::0;::::1;;12981:15;12973:24;;;::::0;::::1;;13032:4;-1:-1:-1::0;;;;;13016:21:0;::::1;::::0;13008:48:::1;;;::::0;-1:-1:-1;;;13008:48:0;;15917:2:1;13008:48:0::1;::::0;::::1;15899:21:1::0;15956:2;15936:18;;;15929:30;-1:-1:-1;;;15975:18:1;;;15968:44;16029:18;;13008:48:0::1;15715:338:1::0;13008:48:0::1;13067:11;:31:::0;;-1:-1:-1;;;;;;13067:31:0::1;::::0;-1:-1:-1;;;;;13067:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;13113:23:::1;::::0;;-1:-1:-1;;;13113:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;13113:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;13113:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;13113:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;13109:348;;13446:8;::::0;::::1;13109:348;13200:9;:29:::0;;-1:-1:-1;;;;;;13200:29:0::1;;-1:-1:-1::0;;;;;13200:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;13231:6:::1;:22:::0;;-1:-1:-1;;;;;;13231:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13255:15:0;;;-1:-1:-1;13255:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;13255:22:0::1;::::0;;::::1;::::0;;13302:6:::1;::::0;13318:9;;13293:55:::1;::::0;13302:6;::::1;::::0;13318:9;;::::1;;-1:-1:-1::0;;13293:8:0::1;:55::i;:::-;13395:9;::::0;13363:62:::1;::::0;13380:4:::1;::::0;13395:9:::1;::::0;::::1;-1:-1:-1::0;;;;;13395:9:0::1;-1:-1:-1::0;;13363:8:0::1;:62::i;13109:348::-;12907:557:::0;:::o;16854:108::-;16897:7;16940:13;4778:2;16940;:13;:::i;:::-;16924:12;;:30;;;;:::i;10308:117::-;-1:-1:-1;;;;;10401:16:0;10374:7;10401:16;;;;;;;;;;;;10308:117::o;9033:310::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;9100:14:::1;::::0;::::1;;9092:74;;;::::0;-1:-1:-1;;;9092:74:0;;16650:2:1;9092:74:0::1;::::0;::::1;16632:21:1::0;16689:2;16669:18;;;16662:30;16728:34;16708:18;;;16701:62;-1:-1:-1;;;16779:18:1;;;16772:45;16834:19;;9092:74:0::1;16448:411:1::0;9092:74:0::1;9197:6;::::0;9177:34:::1;::::0;-1:-1:-1;;;;;9197:6:0::1;;9177:19;:34::i;:::-;9241:6;::::0;;-1:-1:-1;;;;;;9258:19:0;::::1;::::0;;;9293:42:::1;::::0;-1:-1:-1;;;;;9241:6:0;;::::1;::::0;9222:16:::1;::::0;9241:6;;9293:42:::1;::::0;9222:16;;9293:42:::1;9081:262;9033:310::o:0;15872:421::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16013:23:0;::::1;::::0;;::::1;::::0;:52:::1;;-1:-1:-1::0;;;;;;16040:25:0;::::1;::::0;::::1;16013:52;:79;;;;-1:-1:-1::0;;;;;;16069:23:0;::::1;::::0;::::1;16013:79;16005:115;;;::::0;-1:-1:-1;;;16005:115:0;;17066:2:1;16005:115:0::1;::::0;::::1;17048:21:1::0;17105:2;17085:18;;;17078:30;17144:25;17124:18;;;17117:53;17187:18;;16005:115:0::1;16864:347:1::0;16005:115:0::1;16131:11;:42:::0;;-1:-1:-1;;;;;16131:42:0;;::::1;-1:-1:-1::0;;;;;;16131:42:0;;::::1;;::::0;;;16184:23;:46;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;16241:21;:42;;;;;::::1;::::0;::::1;;::::0;;15872:421::o;14769:182::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;14922:14:::1;:21:::0;;-1:-1:-1;;14922:21:0::1;14939:4;14922:21;::::0;;14769:182::o;12335:564::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;12417:7:::1;12412:480;;-1:-1:-1::0;;;;;12441:13:0;;::::1;12457:5;12441:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12441:21:0::1;::::0;;12477:11:::1;::::0;:34;;-1:-1:-1;;;12477:34:0;;::::1;::::0;::::1;17384:51:1::0;;;;17451:18;;;17444:50;;;;12477:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;17357:18:1;;12477:34:0::1;17216:284:1::0;12412:480:0::1;12548:17;::::0;:22;12544:135:::1;;12637:6;12617:17;;12599:15;:35;;;;:::i;:::-;:44;12591:72;;;::::0;-1:-1:-1;;;12591:72:0;;17707:2:1;12591:72:0::1;::::0;::::1;17689:21:1::0;17746:2;17726:18;;;17719:30;-1:-1:-1;;;17765:18:1;;;17758:45;17820:18;;12591:72:0::1;17505:339:1::0;12591:72:0::1;-1:-1:-1::0;;;;;12702:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;12701:14;12693:54;;;::::0;-1:-1:-1;;;12693:54:0;;18051:2:1;12693:54:0::1;::::0;::::1;18033:21:1::0;18090:2;18070:18;;;18063:30;18129:29;18109:18;;;18102:57;18176:18;;12693:54:0::1;17849:351:1::0;12693:54:0::1;-1:-1:-1::0;;;;;12762:13:0;;::::1;;::::0;;;12778:4:::1;12762:13;::::0;;;;;;;;:20;;-1:-1:-1;;12762:20:0::1;::::0;::::1;::::0;;12817:15:::1;12797:17;:35:::0;12847:11:::1;::::0;:33;;-1:-1:-1;;;12847:33:0;;::::1;::::0;::::1;17384:51:1::0;;;;17451:18;;;17444:50;12847:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;17357:18:1;;12847:33:0::1;17216:284:1::0;12412:480:0::1;12335:564:::0;;:::o;11093:175::-;8151:6;;11159:4;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;11208:9:::1;::::0;11176:62:::1;::::0;11193:4:::1;::::0;11208:9:::1;::::0;::::1;-1:-1:-1::0;;;;;11208:9:0::1;-1:-1:-1::0;;11176:8:0::1;:62::i;:::-;-1:-1:-1::0;11256:4:0::1;11093:175:::0;:::o;23249:695::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;23311:14:::1;::::0;::::1;;23310:15;23302:52;;;::::0;-1:-1:-1;;;23302:52:0;;18407:2:1;23302:52:0::1;::::0;::::1;18389:21:1::0;18446:2;18426:18;;;18419:30;18485:26;18465:18;;;18458:54;18529:18;;23302:52:0::1;18205:348:1::0;23302:52:0::1;23373:16;::::0;::::1;::::0;::::1;;;23365:53;;;::::0;-1:-1:-1;;;23365:53:0;;18760:2:1;23365:53:0::1;::::0;::::1;18742:21:1::0;18799:2;18779:18;;;18772:30;18838:26;18818:18;;;18811:54;18882:18;;23365:53:0::1;18558:348:1::0;23365:53:0::1;23441:11;::::0;;;::::1;-1:-1:-1::0;;;;;23441:11:0::1;23429:106;;23483:11;:40:::0;;-1:-1:-1;;;;;;23483:40:0::1;23517:4;23483:40:::0;::::1;;::::0;;23429:106:::1;23549:11;::::0;23571:6:::1;::::0;23549:87:::1;::::0;-1:-1:-1;;;23549:87:0;;-1:-1:-1;;;;;23571:6:0;;::::1;23549:87;::::0;::::1;19134:51:1::0;19233:10;23586:12:0::1;19221:23:1::0;19201:18;;;19194:51;19293:18;23608:15:0::1;19281:31:1::0;19261:18;;;19254:59;4778:2:0::1;19329:18:1::0;;;19322:45;23549:11:0;;;::::1;;::::0;:21:::1;::::0;19106:19:1;;23549:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23545:103:::0;23662:11:::1;::::0;23693:6:::1;::::0;-1:-1:-1;;;;;23662:11:0;;;::::1;::::0;::::1;::::0;:20:::1;::::0;23683:17:::1;::::0;23693:6:::1;23683:9;:17::i;:::-;23662:39;;;;;;;;;;;;;368:25:1::0;;356:2;341:18;;222:177;23662:39:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;23662:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;23662:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;23658:207:::0;::::1;;23773:13;:29:::0;;;;23817:10:::1;:27:::0;23658:207:::1;23875:14;:21:::0;;-1:-1:-1;;23875:21:0::1;23892:4;23875:21;::::0;;23921:15:::1;23907:11;:29:::0;23249:695::o;10433:165::-;10511:4;10528:40;10538:10;10550:9;10561:6;10528:9;:40::i;:::-;-1:-1:-1;10586:4:0;;10433:165;-1:-1:-1;;;10433:165:0:o;15420:444::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;15525:7:::1;:33:::0;;::::1;15609:29:::0;;::::1;::::0;::::1;-1:-1:-1::0;;15569:29:0;;::::1;::::0;::::1;-1:-1:-1::0;;15569:29:0;;;15525:33;;::::1;15569:29:::0;;;;;;;::::1;15609;;::::0;;15589:9;15669:23:::1;15629:9:::0;15547:11;15669:23:::1;:::i;:::-;:35;;;;:::i;:::-;15649:7;:55:::0;;-1:-1:-1;;15649:55:0::1;-1:-1:-1::0;;;15649:55:0::1;::::0;;::::1;;;::::0;;15750:9:::1;:17:::0;-1:-1:-1;;15731:36:0::1;::::0;15750:17;;::::1;::::0;::::1;::::0;15731:16:::1;:36;:::i;:::-;15786:7;:17:::0;15715:52:::1;::::0;;::::1;::::0;-1:-1:-1;;;;15786:17:0;::::1;;:26:::0;-1:-1:-1;15786:26:0::1;15778:78;;;::::0;-1:-1:-1;;;15778:78:0;;20003:2:1;15778:78:0::1;::::0;::::1;19985:21:1::0;20042:2;20022:18;;;20015:30;20081:34;20061:18;;;20054:62;-1:-1:-1;;;20132:18:1;;;20125:37;20179:19;;15778:78:0::1;19801:403:1::0;15778:78:0::1;15514:350;15420:444:::0;;;:::o;24142:296::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;24220:16:::1;::::0;::::1;::::0;::::1;;;24216:111;;;24278:4;-1:-1:-1::0;;;;;24261:22:0;::::1;::::0;24253:62:::1;;;::::0;-1:-1:-1;;;24253:62:0;;20411:2:1;24253:62:0::1;::::0;::::1;20393:21:1::0;20450:2;20430:18;;;20423:30;20489:29;20469:18;;;20462:57;20536:18;;24253:62:0::1;20209:351:1::0;24253:62:0::1;24391:6;::::0;24399:30:::1;::::0;-1:-1:-1;;;24399:30:0;;24423:4:::1;24399:30;::::0;::::1;160:51:1::0;24359:5:0;;-1:-1:-1;;;;;24376:14:0;;::::1;::::0;::::1;::::0;24391:6;;;::::1;::::0;24376:14;;24399:15:::1;::::0;133:18:1;;24399:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24376:54;::::0;-1:-1:-1;;;;;;24376:54:0::1;::::0;;;;;;-1:-1:-1;;;;;20946:32:1;;;24376:54:0::1;::::0;::::1;20928:51:1::0;20995:18;;;20988:34;20901:18;;24376:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18219:263::-:0;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;18328:19:::1;:33:::0;;-1:-1:-1;;18328:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;18372:22:::1;:47:::0;;-1:-1:-1;;18372:47:0::1;::::0;::::1;;;::::0;;18435:39:::1;::::0;2196:41:1;;;18435:39:0::1;::::0;2184:2:1;2169:18;18435:39:0::1;;;;;;;;18219:263:::0;;:::o;11590:737::-;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;11670:16:::1;::::0;::::1;::::0;::::1;;;11669:17;11661:60;;;::::0;-1:-1:-1;;;11661:60:0;;21485:2:1;11661:60:0::1;::::0;::::1;21467:21:1::0;21524:2;21504:18;;;21497:30;21563:32;21543:18;;;21536:60;21613:18;;11661:60:0::1;21283:354:1::0;11661:60:0::1;11764:9;::::0;11732:46:::1;::::0;11749:4:::1;::::0;11764:9:::1;::::0;::::1;-1:-1:-1::0;;;;;11764:9:0::1;11776:1;11732:8;:46::i;:::-;11789:20;11822:9;11789:43;;11843:16;11873:10;-1:-1:-1::0;;;;;11873:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11862:40:0::1;;11911:4;11918:10;-1:-1:-1::0;;;;;11918:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11862:74;::::0;-1:-1:-1;;;;;;11862:74:0::1;::::0;;;;;;-1:-1:-1;;;;;22128:15:1;;;11862:74:0::1;::::0;::::1;22110:34:1::0;22180:15;;22160:18;;;22153:43;22045:18;;11862:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11955:6;::::0;-1:-1:-1;;;;;11955:6:0;;::::1;11965:5;11947:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;11947:23:0::1;::::0;;11843:93;;-1:-1:-1;11985:22:0;::::1;11981:200;;12044:10;-1:-1:-1::0;;;;;12044:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12033:43:0::1;;12085:4;12092:10;-1:-1:-1::0;;;;;12092:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12033:77;::::0;-1:-1:-1;;;;;;12033:77:0::1;::::0;;;;;;-1:-1:-1;;;;;22128:15:1;;;12033:77:0::1;::::0;::::1;22110:34:1::0;22180:15;;22160:18;;;22153:43;22045:18;;12033:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12024:6;:86:::0;;-1:-1:-1;;;;;;12024:86:0::1;-1:-1:-1::0;;;;;12024:86:0;;;::::1;::::0;;;::::1;::::0;;11981:200:::1;;;12152:6;:17:::0;;-1:-1:-1;;;;;;12152:17:0::1;-1:-1:-1::0;;;;;12152:17:0;::::1;;::::0;;11981:200:::1;12191:9;:22:::0;;-1:-1:-1;;;;;;12191:22:0::1;;-1:-1:-1::0;;;;;12191:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12232:6:::1;::::0;;::::1;-1:-1:-1::0;12224:15:0;;;-1:-1:-1;12224:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12224:22:0::1;::::0;;::::1;::::0;;12289:9;;12257:62:::1;::::0;12274:4:::1;::::0;12289:9;::::1;;-1:-1:-1::0;;12257:8:0::1;:62::i;23952:182::-:0;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;24019:16:::1;::::0;::::1;::::0;::::1;;;24018:17;24010:58;;;::::0;-1:-1:-1;;;24010:58:0;;22409:2:1;24010:58:0::1;::::0;::::1;22391:21:1::0;22448:2;22428:18;;;22421:30;22487;22467:18;;;22460:58;22535:18;;24010:58:0::1;22207:352:1::0;24010:58:0::1;24087:6;::::0;24079:47:::1;::::0;-1:-1:-1;;;;;24087:6:0;;::::1;::::0;24104:21:::1;24079:47:::0;::::1;;;::::0;24087:6:::1;24079:47:::0;24087:6;24079:47;24104:21;24087:6;24079:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;17289:697:::0;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;17489:16;17469;4839:13:::1;4778:2;4839;:13;:::i;:::-;4822:30;::::0;4624:13:::1;4822:30;:::i;:::-;17459:26;;;;:::i;:::-;17458:47;;;;:::i;:::-;17442:13;:63:::0;17557:13;17540;4839::::1;4778:2;4839;:13;:::i;:::-;4822:30;::::0;4624:13:::1;4822:30;:::i;:::-;17530:23;;;;:::i;:::-;17529:41;;;;:::i;:::-;17516:10;:54:::0;;;17589:13:::1;::::0;:27:::1;;17581:73;;;::::0;-1:-1:-1;;;17581:73:0;;22766:2:1;17581:73:0::1;::::0;::::1;22748:21:1::0;22805:2;22785:18;;;22778:30;22844:34;22824:18;;;22817:62;-1:-1:-1;;;22895:18:1;;;22888:31;22936:19;;17581:73:0::1;22564:397:1::0;17581:73:0::1;17698:6;::::0;5554:5:::1;::::0;17688:17:::1;::::0;-1:-1:-1;;;;;17698:6:0::1;17688:9;:17::i;:::-;:23;::::0;17708:3:::1;17688:23;:::i;:::-;17687:44;;;;:::i;:::-;17673:10;;:58;;17665:106;;;::::0;-1:-1:-1;;;17665:106:0;;23168:2:1;17665:106:0::1;::::0;::::1;23150:21:1::0;23207:2;23187:18;;;23180:30;23246:34;23226:18;;;23219:62;-1:-1:-1;;;23297:18:1;;;23290:33;23340:19;;17665:106:0::1;22966:399:1::0;17665:106:0::1;17814:9;4839:13;4778:2;4839;:13;:::i;:::-;4822:30;::::0;4624:13:::1;4822:30;:::i;:::-;17804:19;;;;:::i;:::-;17790:10;;:33;;17782:91;;;;-1:-1:-1::0;;;17782:91:0::1;;;;;;;:::i;:::-;17919:9;4839:13;4778:2;4839;:13;:::i;:::-;4822:30;::::0;4624:13:::1;4822:30;:::i;:::-;17909:19;;;;:::i;:::-;17892:13;;:36;;17884:94;;;;-1:-1:-1::0;;;17884:94:0::1;;;;;;;:::i;14185:148::-:0;8151:6;;-1:-1:-1;;;;;8151:6:0;8161:10;8151:20;8143:50;;;;-1:-1:-1;;;8143:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14281:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;14281:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14185:148::o;10775:310::-;-1:-1:-1;;;;;10870:20:0;;10862:52;;;;-1:-1:-1;;;10862:52:0;;23986:2:1;10862:52:0;;;23968:21:1;24025:2;24005:18;;;23998:30;-1:-1:-1;;;24044:18:1;;;24037:49;24103:18;;10862:52:0;23784:343:1;10862:52:0;-1:-1:-1;;;;;10933:21:0;;10925:53;;;;-1:-1:-1;;;10925:53:0;;23986:2:1;10925:53:0;;;23968:21:1;24025:2;24005:18;;;23998:30;-1:-1:-1;;;24044:18:1;;;24037:49;24103:18;;10925:53:0;23784:343:1;10925:53:0;-1:-1:-1;;;;;10991:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11044:33;;368:25:1;;;11044:33:0;;341:18:1;11044:33:0;;;;;;;10775:310;;;:::o;18944:2176::-;19023:4;-1:-1:-1;;;;;19048:18:0;;19040:68;;;;-1:-1:-1;;;19040:68:0;;24334:2:1;19040:68:0;;;24316:21:1;24373:2;24353:18;;;24346:30;24412:34;24392:18;;;24385:62;-1:-1:-1;;;24463:18:1;;;24456:35;24508:19;;19040:68:0;24132:401:1;19040:68:0;-1:-1:-1;;;;;19127:16:0;;19119:64;;;;-1:-1:-1;;;19119:64:0;;24740:2:1;19119:64:0;;;24722:21:1;24779:2;24759:18;;;24752:30;24818:34;24798:18;;;24791:62;-1:-1:-1;;;24869:18:1;;;24862:33;24912:19;;19119:64:0;24538:399:1;19119:64:0;19211:1;19202:6;:10;19194:64;;;;-1:-1:-1;;;19194:64:0;;25144:2:1;19194:64:0;;;25126:21:1;25183:2;25163:18;;;25156:30;25222:34;25202:18;;;25195:62;-1:-1:-1;;;25273:18:1;;;25266:39;25322:19;;19194:64:0;24942:405:1;19194:64:0;-1:-1:-1;;;;;19357:13:0;;19269:8;19357:13;;;:7;:13;;;;;;19269:8;;;;19357:13;;19353:162;;;19393:4;19387:10;;19353:162;;;-1:-1:-1;;;;;19419:11:0;;;;;;:7;:11;;;;;;;;19415:100;;;19454:4;19447:11;;19415:100;;;-1:-1:-1;19499:4:0;19415:100;19529:20;19540:4;19546:2;19529:10;:20::i;:::-;19525:874;;;19570:14;;;;19566:319;;19610:5;19605:265;;19640:34;;-1:-1:-1;;;19640:34:0;;25554:2:1;19640:34:0;;;25536:21:1;25593:2;25573:18;;;25566:30;25632:26;25612:18;;;25605:54;25676:18;;19640:34:0;25352:348:1;19605:265:0;-1:-1:-1;;;;;19705:31:0;;;;;;:25;:31;;;;;;;;19704:32;:66;;;;-1:-1:-1;;;;;;19741:29:0;;;;;;:25;:29;;;;;;;;19740:30;19704:66;19700:170;;;19795:55;;-1:-1:-1;;;19795:55:0;;25907:2:1;19795:55:0;;;25889:21:1;25946:2;25926:18;;;25919:30;25985:34;25965:18;;;25958:62;-1:-1:-1;;;26036:18:1;;;26029:43;26089:19;;19795:55:0;25705:409:1;19700:170:0;19903:3;:11;;;;19910:4;19903:11;19899:232;;;-1:-1:-1;;;;;19939:27:0;;;;;;:21;:27;;;;;;;;19938:28;:58;;;;-1:-1:-1;;;;;;19971:25:0;;;;;;:21;:25;;;;;;;;19970:26;19938:58;19934:182;;;20039:12;;20029:6;:22;;20021:75;;;;-1:-1:-1;;;20021:75:0;;26321:2:1;20021:75:0;;;26303:21:1;26360:2;26340:18;;;26333:30;26399:34;26379:18;;;26372:62;-1:-1:-1;;;26450:18:1;;;26443:38;26498:19;;20021:75:0;26119:404:1;20021:75:0;20163:9;;-1:-1:-1;;;;;20149:24:0;;;20163:9;;;;;20149:24;;;;:33;;;20178:4;20177:5;20149:33;20145:243;;;-1:-1:-1;;;;;20208:25:0;;;;;;:21;:25;;;;;;;;20203:170;;20292:14;;20282:6;20266:13;20276:2;20266:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;20258:95;;;;-1:-1:-1;;;20258:95:0;;26730:2:1;20258:95:0;;;26712:21:1;26769:2;26749:18;;;26742:30;26808:34;26788:18;;;26781:62;-1:-1:-1;;;26859:18:1;;;26852:40;26909:19;;20258:95:0;26528:406:1;20258:95:0;20415:4;20411:632;;;20441:6;;;;20436:596;;20472:19;;;;;;;20468:549;;;20516:28;20547:24;20565:4;20547:9;:24::i;:::-;20516:55;;20622:13;;20598:20;:37;20594:404;;20682:10;;20723:22;;;;20719:97;;;20780:13;;20770:6;;5554:5;;20780:13;20760:17;;-1:-1:-1;;;;;20770:6:0;20760:9;:17::i;:::-;:33;;;;:::i;:::-;20759:54;;;;:::i;:::-;20749:64;;20719:97;20870:7;20846:20;:31;20842:72;;20904:7;20881:30;;20842:72;20940:34;20953:20;20940:12;:34::i;:::-;20637:361;20594:404;20493:524;20468:549;21060:52;21077:4;21083:2;21087:6;21095:3;21100:4;21106:5;21060:16;:52::i;:::-;21053:59;18944:2176;-1:-1:-1;;;;;;;18944:2176:0:o;24901:1055::-;25020:4;25041:20;25052:4;25058:2;25041:10;:20::i;:::-;25037:228;;;25096:11;;:39;;-1:-1:-1;;;25096:39:0;;-1:-1:-1;;;;;27197:15:1;;;25096:39:0;;;27179:34:1;27249:15;;;27229:18;;;27222:43;27281:18;;;27274:34;;;25065:12:0;;25096:11;;;;;:21;;27114:18:1;;25096:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;25096:39:0;;;;;;;;-1:-1:-1;;25096:39:0;;;;;;;;;;;;:::i;:::-;;;25092:122;;25203:8;;;25092:122;25186:5;-1:-1:-1;25232:7:0;25228:26;;25243:8;;;25228:26;25063:202;25037:228;-1:-1:-1;;;;;25309:25:0;;25275:12;25309:25;;;:19;:25;;;;;;25290:4;;25309:25;;;:52;;-1:-1:-1;;;;;;25338:23:0;;;;;;:19;:23;;;;;;;;25309:52;25305:99;;;-1:-1:-1;25387:5:0;25305:99;-1:-1:-1;;;;;25414:13:0;;:7;:13;;;;;;;;;;:23;;25431:6;;25414:7;:23;;25431:6;;25414:23;:::i;:::-;;;;-1:-1:-1;25448:22:0;;-1:-1:-1;25474:7:0;25473:55;;25522:6;25473:55;;;25485:34;25495:4;25501:6;25509:3;25514:4;25485:9;:34::i;:::-;25448:80;;25554:14;25539:7;:11;25547:2;-1:-1:-1;;;;;25539:11:0;-1:-1:-1;;;;;25539:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;25599:2;-1:-1:-1;;;;;25584:34:0;25593:4;-1:-1:-1;;;;;25584:34:0;;25603:14;25584:34;;;;368:25:1;;356:2;341:18;;222:177;25584:34:0;;;;;;;;25634:16;;;;;;;25629:298;;25667:28;25686:4;25692:2;25667:18;:28::i;:::-;25715:16;;;;;;;25714:17;:41;;;;;25735:20;25746:4;25752:2;25735:10;:20::i;:::-;25714:77;;;;-1:-1:-1;;;;;;25760:31:0;;;;;;:25;:31;;;;;;;;25759:32;25714:77;:111;;;;-1:-1:-1;;;;;;25796:29:0;;;;;;:25;:29;;;;;;;;25795:30;25714:111;:121;;;;;25830:5;25829:6;25714:121;25710:206;;;25856:44;;-1:-1:-1;;;25856:44:0;;27521:2:1;25856:44:0;;;27503:21:1;27560:2;27540:18;;;27533:30;27599:34;27579:18;;;27572:62;-1:-1:-1;;;27650:18:1;;;27643:32;27692:19;;25856:44:0;27319:398:1;25710:206:0;-1:-1:-1;25944:4:0;;24901:1055;-1:-1:-1;;;;;;;;24901:1055:0:o;18490:446::-;18591:6;;18559:4;;-1:-1:-1;;;;;18583:14:0;;;18591:6;;18583:14;;;;:43;;-1:-1:-1;18620:6:0;;-1:-1:-1;;;;;18614:12:0;;;18620:6;;18614:12;;18583:43;:79;;;;-1:-1:-1;18656:6:0;;-1:-1:-1;;;;;18656:6:0;18643:9;:19;;18583:79;:118;;;;-1:-1:-1;;;;;;18680:21:0;;;;;;:17;:21;;;;;;;;18679:22;18583:118;:159;;;;-1:-1:-1;;;;;;18719:23:0;;;;;;:17;:23;;;;;;;;18718:24;18583:159;:186;;;;-1:-1:-1;;;;;;18759:10:0;;5693:42;18759:10;;18583:186;:219;;;;-1:-1:-1;;;;;;18786:16:0;;;;18583:219;:257;;;;-1:-1:-1;;;;;;18819:21:0;;18835:4;18819:21;;18583:257;:302;;;;-1:-1:-1;18873:11:0;;-1:-1:-1;;;;;18857:28:0;;;18873:11;;;;;18857:28;;18583:302;:345;;;;-1:-1:-1;18916:11:0;;-1:-1:-1;;;;;18902:26:0;;;18916:11;;;;;18902:26;;18583:345;18576:352;18490:446;-1:-1:-1;;;18490:446:0:o;21128:1542::-;6814:6;:13;;-1:-1:-1;;6814:13:0;6823:4;6814:13;;;21211:30:::1;::::0;;::::1;::::0;::::1;::::0;;21234:7:::1;21211:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;21211:30:0;::::1;::::0;;::::1;::::0;;;;;;6814:6;21256:21;21252:60:::1;;21294:7;;;21252:60;21348:4;21328:26;::::0;;;:11:::1;:26;::::0;;;;;;;21363:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;21363:9:0::1;21328:46:::0;;;;;;;;-1:-1:-1;;21328:67:0::1;21324:166;;21432:4;21412:26;::::0;;;:11:::1;:26;::::0;;;;;;;21447:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;21447:9:0::1;21412:46:::0;;;;;;;-1:-1:-1;;21412:66:0;;21324:166:::1;21534:16;::::0;;21548:1:::1;21534:16:::0;;;;;::::1;::::0;;21510:21:::1;::::0;21534:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21534:16:0::1;21510:40;;21579:4;21561;21566:1;21561:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;21561:23:0::1;;;-1:-1:-1::0;;;;;21561:23:0::1;;;::::0;::::1;21605:9;;;;;;;;;-1:-1:-1::0;;;;;21605:9:0::1;-1:-1:-1::0;;;;;21605:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21595:4;21600:1;21595:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21595:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21638:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;21638:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;21713:20;;21748:1:::1;::::0;21764:4;;21791::::1;::::0;21811:15:::1;::::0;21638:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;21634:246;;21862:7;;;;21634:246;22033:16;::::0;::::1;::::0;22011:18;;21913:21:::1;::::0;21892:18:::1;::::0;;;21997:52:::1;::::0;;::::1;::::0;21998:31:::1;::::0;::::1;21913:21:::0;21998:31:::1;:::i;:::-;21997:52;;;;:::i;:::-;21968:81;;22060:24;22121:6;:16;;;22087:50;;22101:6;:16;;;22088:29;;:10;:29;;;;:::i;:::-;22087:50;;;;:::i;:::-;22060:77:::0;-1:-1:-1;22148:24:0::1;22189:37;22208:18:::0;22060:77;22189:37:::1;:::i;:::-;22175:52;::::0;:10;:52:::1;:::i;:::-;22242:16;::::0;::::1;::::0;22148:79;;-1:-1:-1;22242:20:0::1;;::::0;22238:133:::1;;22292:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;22292:21:0;;::::1;::::0;22349:5:::1;::::0;22326:16;;22292:67:::1;::::0;;;22326:16;22292:21;22349:5;22292:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22279:80:0;;-1:-1:-1;;22238:133:0::1;22385:18:::0;;:22:::1;;::::0;22381:139:::1;;22437:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;22437:23:0;;::::1;::::0;22498:5:::1;::::0;22473:18;;22437:71:::1;::::0;;;22473:18;22437:23;22498:5;22437:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22424:84:0;;-1:-1:-1;;22381:139:0::1;22534:16;::::0;::::1;::::0;:20:::1;;::::0;22530:133:::1;;22584:21:::0;;:67:::1;::::0;-1:-1:-1;;;;;22584:21:0;;::::1;::::0;22641:5:::1;::::0;22618:16;;22584:67:::1;::::0;;;22618:16;22584:21;22641:5;22584:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22571:80:0;;-1:-1:-1;;22530:133:0::1;21200:1470;;;;;;;6838:1;-1:-1:-1::0;6850:6:0;:14;;-1:-1:-1;;6850:14:0;;;21128:1542::o;25964:767::-;26052:7;26072:18;26105:3;26101:205;;;-1:-1:-1;26138:9:0;:16;;;26101:205;;;26176:4;26172:134;;;-1:-1:-1;26210:9:0;:17;;;;;;26172:134;;;-1:-1:-1;26273:9:0;:21;;;;;;26172:134;26328:11;;;;;-1:-1:-1;;;;;26328:11:0;26352:4;26320:37;:73;;;;;26374:13;26391:2;26374:19;;26320:73;26316:101;;;-1:-1:-1;26410:4:0;26316:101;26431:10;26445:1;26431:15;26427:39;;26457:6;26450:13;;;;;26427:39;26476:17;5554:5;26496:19;26505:10;26496:6;:19;:::i;:::-;:38;;;;:::i;:::-;26476:58;-1:-1:-1;26549:13:0;;26545:141;;26595:4;26579:7;:22;;;;;;;;;;:35;;26605:9;;26579:7;:35;;26605:9;;26579:35;:::i;:::-;;;;-1:-1:-1;;26634:40:0;;368:25:1;;;26657:4:0;;-1:-1:-1;;;;;26634:40:0;;;;;356:2:1;341:18;26634:40:0;;;;;;;26545:141;26705:18;26714:9;26705:6;:18;:::i;22678:563::-;22761:16;;;;;;;22760:17;22752:65;;;;-1:-1:-1;;;22752:65:0;;29119:2:1;22752:65:0;;;29101:21:1;29158:2;29138:18;;;29131:30;29197:34;29177:18;;;29170:62;-1:-1:-1;;;29248:18:1;;;29241:33;29291:19;;22752:65:0;28917:399:1;22752:65:0;22833:20;22844:4;22850:2;22833:10;:20::i;:::-;22832:21;:37;;;;-1:-1:-1;22863:6:0;;-1:-1:-1;;;;;22857:12:0;;;22863:6;;22857:12;22832:37;22828:406;;;-1:-1:-1;;;;;22886:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;22886:30:0;;;22912:4;22886:30;;;;;;22931:19;:25;;;;;:32;;;;;;;;;;22978:16;:23;;-1:-1:-1;;22978:23:0;22886:30;22978:23;;;;;23028:11;;;;23016:114;;23074:11;:40;;-1:-1:-1;;;;;;23074:40:0;23108:4;23074:40;;;;;23016:114;23144:19;:26;;-1:-1:-1;;23144:26:0;;;;;23190:32;;-1:-1:-1;2196:41:1;;23190:32:0;;2184:2:1;2169:18;23190:32:0;2056:187:1;404:118;490:5;483:13;476:21;469:5;466:32;456:60;;512:1;509;502:12;527:376;589:6;597;650:2;638:9;629:7;625:23;621:32;618:52;;;666:1;663;656:12;618:52;705:9;692:23;724:28;746:5;724:28;:::i;:::-;771:5;-1:-1:-1;828:2:1;813:18;;800:32;841:30;800:32;841:30;:::i;:::-;890:7;880:17;;;527:376;;;;;:::o;1278:548::-;1390:4;1419:2;1448;1437:9;1430:21;1480:6;1474:13;1523:6;1518:2;1507:9;1503:18;1496:34;1548:1;1558:140;1572:6;1569:1;1566:13;1558:140;;;1667:14;;;1663:23;;1657:30;1633:17;;;1652:2;1629:26;1622:66;1587:10;;1558:140;;;1562:3;1747:1;1742:2;1733:6;1722:9;1718:22;1714:31;1707:42;1817:2;1810;1806:7;1801:2;1793:6;1789:15;1785:29;1774:9;1770:45;1766:54;1758:62;;;;1278:548;;;;:::o;2248:131::-;-1:-1:-1;;;;;2323:31:1;;2313:42;;2303:70;;2369:1;2366;2359:12;2384:315;2452:6;2460;2513:2;2501:9;2492:7;2488:23;2484:32;2481:52;;;2529:1;2526;2519:12;2481:52;2568:9;2555:23;2587:31;2612:5;2587:31;:::i;:::-;2637:5;2689:2;2674:18;;;;2661:32;;-1:-1:-1;;;2384:315:1:o;2704:247::-;2763:6;2816:2;2804:9;2795:7;2791:23;2787:32;2784:52;;;2832:1;2829;2822:12;2784:52;2871:9;2858:23;2890:31;2915:5;2890:31;:::i;2956:456::-;3033:6;3041;3049;3102:2;3090:9;3081:7;3077:23;3073:32;3070:52;;;3118:1;3115;3108:12;3070:52;3157:9;3144:23;3176:31;3201:5;3176:31;:::i;:::-;3226:5;-1:-1:-1;3283:2:1;3268:18;;3255:32;3296:33;3255:32;3296:33;:::i;:::-;2956:456;;3348:7;;-1:-1:-1;;;3402:2:1;3387:18;;;;3374:32;;2956:456::o;3417:248::-;3485:6;3493;3546:2;3534:9;3525:7;3521:23;3517:32;3514:52;;;3562:1;3559;3552:12;3514:52;-1:-1:-1;;3585:23:1;;;3655:2;3640:18;;;3627:32;;-1:-1:-1;3417:248:1:o;3670:127::-;3731:10;3726:3;3722:20;3719:1;3712:31;3762:4;3759:1;3752:15;3786:4;3783:1;3776:15;3802:275;3873:2;3867:9;3938:2;3919:13;;-1:-1:-1;;3915:27:1;3903:40;;3973:18;3958:34;;3994:22;;;3955:62;3952:88;;;4020:18;;:::i;:::-;4056:2;4049:22;3802:275;;-1:-1:-1;3802:275:1:o;4082:183::-;4142:4;4175:18;4167:6;4164:30;4161:56;;;4197:18;;:::i;:::-;-1:-1:-1;4242:1:1;4238:14;4254:4;4234:25;;4082:183::o;4270:662::-;4324:5;4377:3;4370:4;4362:6;4358:17;4354:27;4344:55;;4395:1;4392;4385:12;4344:55;4431:6;4418:20;4457:4;4481:60;4497:43;4537:2;4497:43;:::i;:::-;4481:60;:::i;:::-;4575:15;;;4661:1;4657:10;;;;4645:23;;4641:32;;;4606:12;;;;4685:15;;;4682:35;;;4713:1;4710;4703:12;4682:35;4749:2;4741:6;4737:15;4761:142;4777:6;4772:3;4769:15;4761:142;;;4843:17;;4831:30;;4881:12;;;;4794;;4761:142;;;-1:-1:-1;4921:5:1;4270:662;-1:-1:-1;;;;;;4270:662:1:o;4937:1215::-;5055:6;5063;5116:2;5104:9;5095:7;5091:23;5087:32;5084:52;;;5132:1;5129;5122:12;5084:52;5172:9;5159:23;5201:18;5242:2;5234:6;5231:14;5228:34;;;5258:1;5255;5248:12;5228:34;5296:6;5285:9;5281:22;5271:32;;5341:7;5334:4;5330:2;5326:13;5322:27;5312:55;;5363:1;5360;5353:12;5312:55;5399:2;5386:16;5421:4;5445:60;5461:43;5501:2;5461:43;:::i;5445:60::-;5539:15;;;5621:1;5617:10;;;;5609:19;;5605:28;;;5570:12;;;;5645:19;;;5642:39;;;5677:1;5674;5667:12;5642:39;5701:11;;;;5721:217;5737:6;5732:3;5729:15;5721:217;;;5817:3;5804:17;5834:31;5859:5;5834:31;:::i;:::-;5878:18;;5754:12;;;;5916;;;;5721:217;;;5957:5;-1:-1:-1;;6000:18:1;;5987:32;;-1:-1:-1;;6031:16:1;;;6028:36;;;6060:1;6057;6050:12;6028:36;;6083:63;6138:7;6127:8;6116:9;6112:24;6083:63;:::i;:::-;6073:73;;;4937:1215;;;;;:::o;6346:159::-;6413:20;;6473:6;6462:18;;6452:29;;6442:57;;6495:1;6492;6485:12;6442:57;6346:159;;;:::o;6510:328::-;6584:6;6592;6600;6653:2;6641:9;6632:7;6628:23;6624:32;6621:52;;;6669:1;6666;6659:12;6621:52;6692:28;6710:9;6692:28;:::i;:::-;6682:38;;6739:37;6772:2;6761:9;6757:18;6739:37;:::i;:::-;6729:47;;6795:37;6828:2;6817:9;6813:18;6795:37;:::i;:::-;6785:47;;6510:328;;;;;:::o;6843:382::-;6908:6;6916;6969:2;6957:9;6948:7;6944:23;6940:32;6937:52;;;6985:1;6982;6975:12;6937:52;7024:9;7011:23;7043:31;7068:5;7043:31;:::i;7230:180::-;7289:6;7342:2;7330:9;7321:7;7317:23;7313:32;7310:52;;;7358:1;7355;7348:12;7310:52;-1:-1:-1;7381:23:1;;7230:180;-1:-1:-1;7230:180:1:o;7415:553::-;7516:6;7524;7532;7585:2;7573:9;7564:7;7560:23;7556:32;7553:52;;;7601:1;7598;7591:12;7553:52;7640:9;7627:23;7659:31;7684:5;7659:31;:::i;:::-;7709:5;-1:-1:-1;7766:2:1;7751:18;;7738:32;7779:33;7738:32;7779:33;:::i;:::-;7831:7;-1:-1:-1;7890:2:1;7875:18;;7862:32;7903:33;7862:32;7903:33;:::i;:::-;7955:7;7945:17;;;7415:553;;;;;:::o;8422:388::-;8490:6;8498;8551:2;8539:9;8530:7;8526:23;8522:32;8519:52;;;8567:1;8564;8557:12;8519:52;8606:9;8593:23;8625:31;8650:5;8625:31;:::i;:::-;8675:5;-1:-1:-1;8732:2:1;8717:18;;8704:32;8745:33;8704:32;8745:33;:::i;9252:385::-;9338:6;9346;9354;9362;9415:3;9403:9;9394:7;9390:23;9386:33;9383:53;;;9432:1;9429;9422:12;9383:53;-1:-1:-1;;9455:23:1;;;9525:2;9510:18;;9497:32;;-1:-1:-1;9576:2:1;9561:18;;9548:32;;9627:2;9612:18;9599:32;;-1:-1:-1;9252:385:1;-1:-1:-1;9252:385:1:o;9642:341::-;9844:2;9826:21;;;9883:2;9863:18;;;9856:30;-1:-1:-1;;;9917:2:1;9902:18;;9895:47;9974:2;9959:18;;9642:341::o;10261:127::-;10322:10;10317:3;10313:20;10310:1;10303:31;10353:4;10350:1;10343:15;10377:4;10374:1;10367:15;10393:422;10482:1;10525:5;10482:1;10539:270;10560:7;10550:8;10547:21;10539:270;;;10619:4;10615:1;10611:6;10607:17;10601:4;10598:27;10595:53;;;10628:18;;:::i;:::-;10678:7;10668:8;10664:22;10661:55;;;10698:16;;;;10661:55;10777:22;;;;10737:15;;;;10539:270;;;10543:3;10393:422;;;;;:::o;10820:806::-;10869:5;10899:8;10889:80;;-1:-1:-1;10940:1:1;10954:5;;10889:80;10988:4;10978:76;;-1:-1:-1;11025:1:1;11039:5;;10978:76;11070:4;11088:1;11083:59;;;;11156:1;11151:130;;;;11063:218;;11083:59;11113:1;11104:10;;11127:5;;;11151:130;11188:3;11178:8;11175:17;11172:43;;;11195:18;;:::i;:::-;-1:-1:-1;;11251:1:1;11237:16;;11266:5;;11063:218;;11365:2;11355:8;11352:16;11346:3;11340:4;11337:13;11333:36;11327:2;11317:8;11314:16;11309:2;11303:4;11300:12;11296:35;11293:77;11290:159;;;-1:-1:-1;11402:19:1;;;11434:5;;11290:159;11481:34;11506:8;11500:4;11481:34;:::i;:::-;11551:6;11547:1;11543:6;11539:19;11530:7;11527:32;11524:58;;;11562:18;;:::i;:::-;11600:20;;10820:806;-1:-1:-1;;;10820:806:1:o;11631:140::-;11689:5;11718:47;11759:4;11749:8;11745:19;11739:4;11718:47;:::i;11776:217::-;11816:1;11842;11832:132;;11886:10;11881:3;11877:20;11874:1;11867:31;11921:4;11918:1;11911:15;11949:4;11946:1;11939:15;11832:132;-1:-1:-1;11978:9:1;;11776:217::o;11998:168::-;12071:9;;;12102;;12119:15;;;12113:22;;12099:37;12089:71;;12140:18;;:::i;12171:128::-;12238:9;;;12259:11;;;12256:37;;;12273:18;;:::i;13071:127::-;13132:10;13127:3;13123:20;13120:1;13113:31;13163:4;13160:1;13153:15;13187:4;13184:1;13177:15;13550:197;13588:3;13616:6;13657:2;13650:5;13646:14;13684:2;13675:7;13672:15;13669:41;;13690:18;;:::i;:::-;13739:1;13726:15;;13550:197;-1:-1:-1;;;13550:197:1:o;13752:125::-;13817:9;;;13838:10;;;13835:36;;;13851:18;;:::i;16058:385::-;16137:6;16145;16198:2;16186:9;16177:7;16173:23;16169:32;16166:52;;;16214:1;16211;16204:12;16166:52;16246:9;16240:16;16265:31;16290:5;16265:31;:::i;:::-;16365:2;16350:18;;16344:25;16315:5;;-1:-1:-1;16378:33:1;16344:25;16378:33;:::i;19378:245::-;19457:6;19465;19518:2;19506:9;19497:7;19493:23;19489:32;19486:52;;;19534:1;19531;19524:12;19486:52;-1:-1:-1;;19557:16:1;;19613:2;19598:18;;;19592:25;19557:16;;19592:25;;-1:-1:-1;19378:245:1:o;19628:168::-;19695:6;19721:10;;;19733;;;19717:27;;19756:11;;;19753:37;;;19770:18;;:::i;:::-;19753:37;19628:168;;;;:::o;20565:184::-;20635:6;20688:2;20676:9;20667:7;20663:23;20659:32;20656:52;;;20704:1;20701;20694:12;20656:52;-1:-1:-1;20727:16:1;;20565:184;-1:-1:-1;20565:184:1:o;21033:245::-;21100:6;21153:2;21141:9;21132:7;21128:23;21124:32;21121:52;;;21169:1;21166;21159:12;21121:52;21201:9;21195:16;21220:28;21242:5;21220:28;:::i;21642:251::-;21712:6;21765:2;21753:9;21744:7;21740:23;21736:32;21733:52;;;21781:1;21778;21771:12;21733:52;21813:9;21807:16;21832:31;21857:5;21832:31;:::i;23370:409::-;23572:2;23554:21;;;23611:2;23591:18;;;23584:30;23650:34;23645:2;23630:18;;23623:62;-1:-1:-1;;;23716:2:1;23701:18;;23694:43;23769:3;23754:19;;23370:409::o;27722:980::-;27984:4;28032:3;28021:9;28017:19;28063:6;28052:9;28045:25;28089:2;28127:6;28122:2;28111:9;28107:18;28100:34;28170:3;28165:2;28154:9;28150:18;28143:31;28194:6;28229;28223:13;28260:6;28252;28245:22;28298:3;28287:9;28283:19;28276:26;;28337:2;28329:6;28325:15;28311:29;;28358:1;28368:195;28382:6;28379:1;28376:13;28368:195;;;28447:13;;-1:-1:-1;;;;;28443:39:1;28431:52;;28538:15;;;;28503:12;;;;28479:1;28397:9;28368:195;;;-1:-1:-1;;;;;;;28619:32:1;;;;28614:2;28599:18;;28592:60;-1:-1:-1;;;28683:3:1;28668:19;28661:35;28580:3;27722:980;-1:-1:-1;;;27722:980:1:o

Swarm Source

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