ETH Price: $3,485.53 (+3.38%)
Gas: 3 Gwei

Token

Aladdin AI (ALADDIN)
 

Overview

Max Total Supply

100,000,000 ALADDIN

Holders

126

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000849222 ALADDIN

Value
$0.00
0x7673e87a4aec2dbf5775920b1d5e752007eba87d
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:
AladdinAI

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

contract AladdinAI 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;
    mapping (address => bool) private _isBlacklisted;
   
    uint256 constant private startingSupply = 100_000_000;
    string constant private _name = "Aladdin AI";
    string constant private _symbol = "ALADDIN";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

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

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

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable public marketingWallet = payable(0x3e8c6C78B1521Fa0c4BC0626Ce154418Cd72e374);
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxTxAmount = (_tTotal * 5) / 1000;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    bool public blacklistingEnabled = true;
    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;
    }

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

//================================================ BLACKLIST

    function removeBlacklisted(address account) public onlyOwner {
        _isBlacklisted[account] = false;
    }

    function isBlacklisted(address account) public view onlyOwner returns (bool) {
        return _isBlacklisted[account];
    }

    function setBlacklistEnabled(address account, bool enabled) public onlyOwner {
        require(blacklistingEnabled, "Blacklisting disabled.");
        require(account != address(this)
                && !lpPairs[account]
                && lpPair != account
                && account != address(dexRouter), "You are not allowed to blacklist this address.");
        _isBlacklisted[account] = enabled;
    }

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner {
        require(blacklistingEnabled, "Blacklisting disabled.");
        for(uint256 i = 0; i < accounts.length; i++){
            setBlacklistEnabled(accounts[i], enabled);
        }
    }

    function renounceBlacklisting() external onlyOwner {
        require(blacklistingEnabled, "Already disabled.");
        blacklistingEnabled = false;
    }

//================================================ BLACKLIST

    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 setWallets(address payable marketing) external onlyOwner {
        require(marketing != address(0), "Cannot be zero address.");
        marketingWallet = payable(marketing);
    }

    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 getMaxTX() external view returns (uint256) {
        return _maxTxAmount / (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");
        require(!_isBlacklisted[from] && !_isBlacklisted[to], "Blacklisted.");
        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 (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 {
        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;
        }

        bool success;
        (success,) = marketingWallet.call{value: address(this).balance, 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) {
        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":"_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":[{"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":"blacklistingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"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":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"marketingWallet","outputs":[{"internalType":"address payable","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":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceBlacklisting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"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":"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":"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"}],"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"}]

5f600281905560e06040526105dc608081905260a05260c0526009805465ffffffffffff19166305dc05dc179055600c8054600161ff0160a01b031916733e8c6c78b1521fa0c4bc0626ce154418cd72e374179055600a60108190556103e89061006b906012906102b6565b610079906305f5e1006102cb565b6100849060056102cb565b61008e91906102e2565b6011556012805462ffffff191662010000178155601480546001600160a01b031916331790556100bf90600a6102b6565b6100cd906305f5e1006102cb565b601480546001600160a01b039081165f90815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61011e6012600a6102b6565b61012c906305f5e1006102cb565b60405190815260200160405180910390a3601480546001600160a01b039081165f9081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905595549094168352600490915290208054909216179055610301565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561020c578085048111156101f0576101f06101bd565b60018416156101fe57908102905b60019390931c9280026101d5565b935093915050565b5f82610222575060016102b0565b8161022e57505f6102b0565b8160018114610244576002811461024e5761026a565b60019150506102b0565b60ff84111561025f5761025f6101bd565b50506001821b6102b0565b5060208310610133831016604e8410600b841016171561028d575081810a6102b0565b6102995f1984846101d1565b805f19048211156102ac576102ac6101bd565b0290505b92915050565b5f6102c460ff841683610214565b9392505050565b80820281158282048414176102b0576102b06101bd565b5f826102fc57634e487b7160e01b5f52601260045260245ffd5b500490565b613b5f8061030e5f395ff3fe60806040526004361061037f575f3560e01c80635a6f0918116101d3578063b1b08f71116100fd578063eb50e70e1161009d578063fb78680d1161006d578063fb78680d14610a4e578063fdb78c0e14610a6d578063fe575a8714610a8d578063feadde9c14610aac575f80fd5b8063eb50e70e146109dd578063ec602dea146109fc578063ee5d9c2d14610a1b578063eec2744e14610a2f575f80fd5b8063bfc2fc35116100d8578063bfc2fc351461093c578063c6a276c21461095b578063dd62ed3e1461097a578063eafb5a3c146109be575f80fd5b8063b1b08f71146105c2578063b3d514fb146105c2578063b7df8b3614610923575f80fd5b806378648edf116101735780638a8c523c116101435780638a8c523c146108a257806395d89b41146108b6578063a9059cbb146108e5578063ab558e4d14610904575f80fd5b806378648edf1461083e57806380c581d114610852578063893d20e8146108715780638a63bd9b1461088e575f80fd5b80636ebd0078116101ae5780636ebd0078146107d857806370a08231146107ec578063715018a61461080b57806375f0a8741461081f575f80fd5b80635a6f09181461076d5780635c24b074146107825780635cce86cd146107a1575f80fd5b80632b112e49116102b4578063452ed4f1116102545780634fb2e45d116102245780634fb2e45d146106da5780634fbee193146106f957806350a8e01614610730578063590ffdce1461074e575f80fd5b8063452ed4f1146106645780634ada218b146106835780634bbb93eb1461069c5780634e718e48146106bb575f80fd5b8063313ce5671161028f578063313ce567146105ec57806332cde6641461060757806336fddb04146106265780633f3cf56c14610645575f80fd5b80632b112e49146105ae5780632b28fc7a146105c25780632e8fa821146105d7575f80fd5b8063095ea7b31161031f5780631f8e32e3116102fa5780631f8e32e31461054757806323b872dd1461055b5780632610eaca1461057a5780632857775114610599575f80fd5b8063095ea7b3146104dd5780630dcbcf1c146104fc57806318160ddd14610533575f80fd5b8063069d955f1161035a578063069d955f1461040057806306fdde03146104555780630758d9241461049057806307dd79e0146104b4575f80fd5b806303fd2a451461038a5780630445b667146103bc57806305bbedb6146103df575f80fd5b3661038657005b5f80fd5b348015610395575f80fd5b5061039f61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103c7575f80fd5b506103d1600d5481565b6040519081526020016103b3565b3480156103ea575f80fd5b506103fe6103f9366004613520565b610acb565b005b34801561040b575f80fd5b506009546104309061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103b3565b348015610460575f80fd5b5060408051808201909152600a815269416c616464696e20414960b01b60208201525b6040516103b3919061356f565b34801561049b575f80fd5b50600a5461039f9061010090046001600160a01b031681565b3480156104bf575f80fd5b50600a546104cd9060ff1681565b60405190151581526020016103b3565b3480156104e8575f80fd5b506104cd6104f73660046135a4565b610b8a565b348015610507575f80fd5b506104cd6105163660046135ce565b6001600160a01b03165f9081526005602052604090205460ff1690565b34801561053e575f80fd5b506103d1610ba0565b348015610552575f80fd5b506103fe610bc0565b348015610566575f80fd5b506104cd6105753660046135e9565b610c44565b348015610585575f80fd5b506103fe610594366004613627565b610cb9565b3480156105a4575f80fd5b506103d160105481565b3480156105b9575f80fd5b506103d1610e2f565b3480156105cd575f80fd5b506103d16105dc81565b3480156105e2575f80fd5b506103d1600e5481565b3480156105f7575f80fd5b50604051601281526020016103b3565b348015610612575f80fd5b506103fe6106213660046136f6565b610e72565b348015610631575f80fd5b506103fe610640366004613736565b610f9c565b348015610650575f80fd5b506103fe61065f366004613762565b610ff0565b34801561066f575f80fd5b50600b5461039f906001600160a01b031681565b34801561068e575f80fd5b506012546104cd9060ff1681565b3480156106a7575f80fd5b506103d16106b6366004613782565b611127565b3480156106c6575f80fd5b506103fe6106d5366004613782565b611158565b3480156106e5575f80fd5b506103fe6106f43660046135ce565b6111d1565b348015610704575f80fd5b506104cd6107133660046135ce565b6001600160a01b03165f9081526006602052604090205460ff1690565b34801561073b575f80fd5b506012546104cd90610100900460ff1681565b348015610759575f80fd5b506103fe610768366004613736565b6113b1565b348015610778575f80fd5b506103d160135481565b34801561078d575f80fd5b506103fe61079c3660046135ce565b611405565b3480156107ac575f80fd5b506104cd6107bb3660046135ce565b6001600160a01b03165f9081526007602052604090205460ff1690565b3480156107e3575f80fd5b506103d16115a5565b3480156107f7575f80fd5b506103d16108063660046135ce565b6115bf565b348015610816575f80fd5b506103fe6115d9565b34801561082a575f80fd5b50600c5461039f906001600160a01b031681565b348015610849575f80fd5b506103fe6116d0565b34801561085d575f80fd5b506103fe61086c366004613736565b611709565b34801561087c575f80fd5b506014546001600160a01b031661039f565b348015610899575f80fd5b506104cd6118e2565b3480156108ad575f80fd5b506103fe611932565b3480156108c1575f80fd5b5060408051808201909152600781526620a620a22224a760c91b6020820152610483565b3480156108f0575f80fd5b506104cd6108ff3660046135a4565b611b5f565b34801561090f575f80fd5b506103fe61091e3660046135ce565b611b75565b34801561092e575f80fd5b50600f546104cd9060ff1681565b348015610947575f80fd5b506103fe610956366004613799565b611cec565b348015610966575f80fd5b506103fe6109753660046135ce565b611d79565b348015610985575f80fd5b506103d16109943660046137b5565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156109c9575f80fd5b506103fe6109d83660046135ce565b611dc3565b3480156109e8575f80fd5b506103fe6109f73660046135ce565b6121a4565b348015610a07575f80fd5b506012546104cd9062010000900460ff1681565b348015610a26575f80fd5b506103fe612246565b348015610a3a575f80fd5b506103fe610a49366004613736565b6122fe565b348015610a59575f80fd5b506103fe610a683660046137e1565b612470565b348015610a78575f80fd5b50600c546104cd90600160a81b900460ff1681565b348015610a98575f80fd5b506104cd610aa73660046135ce565b612680565b348015610ab7575f80fd5b506103fe610ac6366004613736565b6126ce565b6014546001600160a01b03163314610afe5760405162461bcd60e51b8152600401610af590613810565b60405180910390fd5b60125462010000900460ff16610b4f5760405162461bcd60e51b8152602060048201526016602482015275213630b1b5b634b9ba34b733903234b9b0b13632b21760511b6044820152606401610af5565b5f5b8251811015610b8557610b7d838281518110610b6f57610b6f61383b565b6020026020010151836122fe565b600101610b51565b505050565b5f610b96338484612722565b5060015b92915050565b5f610bad6012600a613946565b610bbb906305f5e100613954565b905090565b6014546001600160a01b03163314610bea5760405162461bcd60e51b8152600401610af590613810565b60125462010000900460ff16610c365760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903234b9b0b13632b21760791b6044820152606401610af5565b6012805462ff000019169055565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610ca6576001600160a01b0384165f90815260036020908152604080832033845290915281208054849290610ca090849061396b565b90915550505b610cb184848461281a565b949350505050565b6014546001600160a01b03163314610ce35760405162461bcd60e51b8152600401610af590613810565b8051825114610d2c5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610af5565b5f5b82518161ffff161015610b8557610d476012600a613946565b828261ffff1681518110610d5d57610d5d61383b565b6020026020010151610d6f9190613954565b610d78336115bf565b1015610dbb5760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610af5565b610e1c33848361ffff1681518110610dd557610dd561383b565b60200260200101516012600a610deb9190613946565b858561ffff1681518110610e0157610e0161383b565b6020026020010151610e139190613954565b5f806001612c87565b5080610e278161397e565b915050610d2e565b5f610e395f6115bf565b610e4461dead6115bf565b610e4e919061399e565b610e5a6012600a613946565b610e68906305f5e100613954565b610bbb919061396b565b6014546001600160a01b03163314610e9c5760405162461bcd60e51b8152600401610af590613810565b600a5460ff1615610ee35760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610af5565b6105dc8361ffff1611158015610eff57506105dc8261ffff1611155b8015610f1157506105dc8161ffff1611155b610f5d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610af5565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6014546001600160a01b03163314610fc65760405162461bcd60e51b8152600401610af590613810565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b6014546001600160a01b0316331461101a5760405162461bcd60e51b8152600401610af590613810565b6103e86110296012600a613946565b611037906305f5e100613954565b611042906005613954565b61104c91906139b1565b818361105a6012600a613946565b611068906305f5e100613954565b6110729190613954565b61107c91906139b1565b10156110f05760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610af5565b80826110fe6012600a613946565b61110c906305f5e100613954565b6111169190613954565b61112091906139b1565b6011555050565b600b545f90612710908390611144906001600160a01b03166115bf565b61114e9190613954565b610b9a91906139b1565b6014546001600160a01b031633146111825760405162461bcd60e51b8152600401610af590613810565b60968111156111cc5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610af5565b601055565b6014546001600160a01b031633146111fb5760405162461bcd60e51b8152600401610af590613810565b6001600160a01b0381166112515760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610af5565b61deac196001600160a01b038216016112ac5760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610af5565b6014546112c2906001600160a01b03165f6113b1565b6112cd8160016113b1565b6014545f906112e4906001600160a01b03166115bf565b111561130657601454611304906001600160a01b031682610e13826115bf565b505b601480546001600160a01b038381166001600160a01b031983161790925560125491169060ff6101009091041661136d576001600160a01b038082165f90815260046020526040808220805460ff1990811690915592851682529020805490911660011790555b816001600160a01b0316816001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6014546001600160a01b031633146113db5760405162461bcd60e51b8152600401610af590613810565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b6014546001600160a01b0316331461142f5760405162461bcd60e51b8152600401610af590613810565b60125460ff161561143e575f80fd5b306001600160a01b038216036114875760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610af5565b601280546301000000600160b81b03191663010000006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301815f875af192505050801561150e575060408051601f3d908101601f1916820190925261150b918101906139d0565b60015b611516575f80fd5b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091555f908152600160208190526040909120805460ff19169091179055601454925461158493831692919004165f19612722565b600a54610b8590309061010090046001600160a01b03165f19612722565b50565b5f6115b26012600a613946565b601154610bbb91906139b1565b6001600160a01b03165f9081526020819052604090205490565b6014546001600160a01b031633146116035760405162461bcd60e51b8152600401610af590613810565b60125460ff1661166d5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610af5565b601454611683906001600160a01b03165f6113b1565b601480546001600160a01b031981169091556040516001600160a01b03909116905f9082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6014546001600160a01b031633146116fa5760405162461bcd60e51b8152600401610af590613810565b600a805460ff19166001179055565b6014546001600160a01b031633146117335760405162461bcd60e51b8152600401610af590613810565b806117be576001600160a01b038281165f81815260016020526040808220805460ff1916905560125490516380c581d160e01b81526004810193909352602483019190915263010000009004909116906380c581d1906044015b5f604051808303815f87803b1580156117a4575f80fd5b505af11580156117b6573d5f803e3d5ffd5b505050505050565b60025415611817576203f480600254426117d8919061396b565b116118175760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610af5565b6001600160a01b0382165f9081526001602052604090205460ff161561187f5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610af5565b6001600160a01b038281165f81815260016020819052604091829020805460ff1916821790554260025560125491516380c581d160e01b81526004810193909352602483015263010000009004909116906380c581d19060440161178d565b5050565b6014545f906001600160a01b0316331461190e5760405162461bcd60e51b8152600401610af590613810565b600a5461192c90309061010090046001600160a01b03165f19612722565b50600190565b6014546001600160a01b0316331461195c5760405162461bcd60e51b8152600401610af590613810565b60125460ff16156119af5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610af5565b601254610100900460ff16611a065760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610af5565b601254630100000090046001600160a01b0316611a3957601280546301000000600160b81b031916306301000000021790555b60128054600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff42166044820152606481019390935263010000009091041690636c115c34906084015f604051808303815f87803b158015611aab575f80fd5b505af1925050508015611abc575060015b50601254600b546001600160a01b0363010000009092048216916325a71cae91611ae691166115bf565b6040518263ffffffff1660e01b8152600401611b0491815260200190565b60408051808303815f875af1925050508015611b3d575060408051601f3d908101601f19168201909252611b3a918101906139fd565b60015b15611b4c57600d91909155600e555b6012805460ff1916600117905542601355565b5f611b6b33848461281a565b5060019392505050565b6014546001600160a01b03163314611b9f5760405162461bcd60e51b8152600401610af590613810565b601254610100900460ff1615611c0757306001600160a01b03821603611c075760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610af5565b6014546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611c5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c809190613a1f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611cc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b859190613a36565b6014546001600160a01b03163314611d165760405162461bcd60e51b8152600401610af590613810565b600c805460ff60a81b1916600160a81b84151590810291909117909155600f805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6014546001600160a01b03163314611da35760405162461bcd60e51b8152600401610af590613810565b6001600160a01b03165f908152600860205260409020805460ff19169055565b6014546001600160a01b03163314611ded5760405162461bcd60e51b8152600401610af590613810565b601254610100900460ff1615611e455760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610af5565b600a54611e6290309061010090046001600160a01b03165f612722565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ea3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ec79190613a51565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f369190613a51565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611f7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fa39190613a51565b600b546001600160a01b039081165f908152600160205260409020805460ff19169055909150811661213157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561200b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061202f9190613a51565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561207a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209e9190613a51565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156120e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061210c9190613a51565b600b80546001600160a01b0319166001600160a01b039290921691909117905561214d565b600b80546001600160a01b0319166001600160a01b0383161790555b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b5482165f908152600160208190526040909120805460ff191690911790559154610b859230929104165f19612722565b6014546001600160a01b031633146121ce5760405162461bcd60e51b8152600401610af590613810565b6001600160a01b0381166122245760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610af5565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b031633146122705760405162461bcd60e51b8152600401610af590613810565b601254610100900460ff16156122c85760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610af5565b6014546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156115a2573d5f803e3d5ffd5b6014546001600160a01b031633146123285760405162461bcd60e51b8152600401610af590613810565b60125462010000900460ff166123795760405162461bcd60e51b8152602060048201526016602482015275213630b1b5b634b9ba34b733903234b9b0b13632b21760511b6044820152606401610af5565b6001600160a01b03821630148015906123aa57506001600160a01b0382165f9081526001602052604090205460ff16155b80156123c45750600b546001600160a01b03838116911614155b80156123e35750600a546001600160a01b038381166101009092041614155b6124465760405162461bcd60e51b815260206004820152602e60248201527f596f7520617265206e6f7420616c6c6f77656420746f20626c61636b6c69737460448201526d103a3434b99030b2323932b9b99760911b6064820152608401610af5565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b6014546001600160a01b0316331461249a5760405162461bcd60e51b8152600401610af590613810565b82846124a86012600a613946565b6124b6906305f5e100613954565b6124c09190613954565b6124ca91906139b1565b600d5580826124db6012600a613946565b6124e9906305f5e100613954565b6124f39190613954565b6124fd91906139b1565b600e819055600d54111561255d5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610af5565b600b5461271090612576906001600160a01b03166115bf565b612581906096613954565b61258b91906139b1565b600e5411156125e85760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610af5565b620f42406125f86012600a613946565b612606906305f5e100613954565b61261091906139b1565b600e5410156126315760405162461bcd60e51b8152600401610af590613a6c565b620f42406126416012600a613946565b61264f906305f5e100613954565b61265991906139b1565b600d54101561267a5760405162461bcd60e51b8152600401610af590613a6c565b50505050565b6014545f906001600160a01b031633146126ac5760405162461bcd60e51b8152600401610af590613810565b506001600160a01b0381165f9081526008602052604090205460ff165b919050565b6014546001600160a01b031633146126f85760405162461bcd60e51b8152600401610af590613810565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b6001600160a01b03831661276e5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610af5565b6001600160a01b0382166127ba5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610af5565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b03841661287f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610af5565b6001600160a01b0383166128e15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610af5565b5f82116129425760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610af5565b6001600160a01b0384165f9081526008602052604090205460ff1615801561298257506001600160a01b0383165f9081526008602052604090205460ff16155b6129bd5760405162461bcd60e51b815260206004820152600c60248201526b213630b1b5b634b9ba32b21760a11b6044820152606401610af5565b6001600160a01b0384165f908152600160205260408120548190819060ff16156129ea5760019250612a17565b6001600160a01b0386165f9081526001602052604090205460ff1615612a135760019150612a17565b5060015b612a218787612e8a565b15612bd65760125460ff16612b205780612a7d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610af5565b6001600160a01b0387165f9081526005602052604090205460ff16158015612abd57506001600160a01b0386165f9081526005602052604090205460ff16155b15612b205760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610af5565b8280612b295750815b15612bd6576001600160a01b0387165f9081526007602052604090205460ff16158015612b6e57506001600160a01b0386165f9081526007602052604090205460ff16155b15612bd657601154851115612bd65760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610af5565b8115612c6e57600c54600160a01b900460ff16612c6e57600c54600160a81b900460ff1615612c6e575f612c09306115bf565b9050600d548110612c6c57600e54600f5460ff1615612c5657601054600b546127109190612c3f906001600160a01b03166115bf565b612c499190613954565b612c5391906139b1565b90505b808210612c61578091505b612c6a82612fa0565b505b505b612c7c878787868686612c87565b979650505050505050565b6001600160a01b0386165f9081526006602052604081205460019060ff1680612cc757506001600160a01b0387165f9081526006602052604090205460ff165b15612ccf57505f5b6001600160a01b0388165f9081526020819052604081208054889290612cf690849061396b565b909155505f905081612d085786612d14565b612d14898888886131d5565b9050805f808a6001600160a01b03166001600160a01b031681526020019081526020015f205f828254612d47919061399e565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d9391815260200190565b60405180910390a3601254610100900460ff16612e7b57612db489896132de565b601254610100900460ff16158015612dd15750612dd18989612e8a565b8015612df557506001600160a01b0389165f9081526005602052604090205460ff16155b8015612e1957506001600160a01b0388165f9081526005602052604090205460ff16155b8015612e23575083155b15612e7b5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610af5565b50600198975050505050505050565b6014545f906001600160a01b03848116911614801590612eb857506014546001600160a01b03838116911614155b8015612ecf57506014546001600160a01b03163214155b8015612ef357506001600160a01b0382165f9081526004602052604090205460ff16155b8015612f1757506001600160a01b0383165f9081526004602052604090205460ff16155b8015612f2e57506001600160a01b03821661dead14155b8015612f4257506001600160a01b03821615155b8015612f5757506001600160a01b0383163014155b8015612f7857506012546001600160a01b0384811663010000009092041614155b8015612f9957506012546001600160a01b0383811663010000009092041614155b9392505050565b600c805460ff60a01b1916600160a01b179055305f908152600360209081526040808320600a5461010090046001600160a01b031684529091529020545f191461301257305f908152600360209081526040808320600a5461010090046001600160a01b0316845290915290205f1990555b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106130455761304561383b565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130da9190613a51565b816001815181106130ed576130ed61383b565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac947906131399085905f90869030904290600401613ab9565b5f604051808303815f87803b158015613150575f80fd5b505af1925050508015613161575060015b61316b57506131c5565b600c546040515f916001600160a01b03169061d6d890479084818181858888f193505050503d805f81146131ba576040519150601f19603f3d011682016040523d82523d5f602084013e6131bf565b606091505b50505050505b50600c805460ff60a01b19169055565b5f8083156131ea575060095461ffff16613214565b8215613203575060095462010000900461ffff16613214565b50600954640100000000900461ffff165b601254630100000090046001600160a01b031630148015613236575046606114155b1561324057506111945b805f036132505784915050610cb1565b5f61271061325e8388613954565b61326891906139b1565b905080156132d457305f908152602081905260408120805483929061328e90849061399e565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612c7c818761396b565b601254610100900460ff16156133425760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610af5565b61334c8282612e8a565b1580156133665750600b546001600160a01b038281169116145b156118de576001600160a01b038083165f908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556012805461ff001916610100179081905563010000009004166133e057601280546301000000600160b81b031916306301000000021790555b600c805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611d6d565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561346157613461613424565b604052919050565b5f67ffffffffffffffff82111561348257613482613424565b5060051b60200190565b6001600160a01b03811681146115a2575f80fd5b5f82601f8301126134af575f80fd5b81356134c26134bd82613469565b613438565b8082825260208201915060208360051b8601019250858311156134e3575f80fd5b602085015b838110156135095780356134fb8161348c565b8352602092830192016134e8565b5095945050505050565b80151581146115a2575f80fd5b5f8060408385031215613531575f80fd5b823567ffffffffffffffff811115613547575f80fd5b613553858286016134a0565b925050602083013561356481613513565b809150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f80604083850312156135b5575f80fd5b82356135c08161348c565b946020939093013593505050565b5f602082840312156135de575f80fd5b8135612f998161348c565b5f805f606084860312156135fb575f80fd5b83356136068161348c565b925060208401356136168161348c565b929592945050506040919091013590565b5f8060408385031215613638575f80fd5b823567ffffffffffffffff81111561364e575f80fd5b61365a858286016134a0565b925050602083013567ffffffffffffffff811115613676575f80fd5b8301601f81018513613686575f80fd5b80356136946134bd82613469565b8082825260208201915060208360051b8501019250878311156136b5575f80fd5b6020840193505b828410156136d75783358252602093840193909101906136bc565b809450505050509250929050565b803561ffff811681146126c9575f80fd5b5f805f60608486031215613708575f80fd5b613711846136e5565b925061371f602085016136e5565b915061372d604085016136e5565b90509250925092565b5f8060408385031215613747575f80fd5b82356137528161348c565b9150602083013561356481613513565b5f8060408385031215613773575f80fd5b50508035926020909101359150565b5f60208284031215613792575f80fd5b5035919050565b5f80604083850312156137aa575f80fd5b823561375281613513565b5f80604083850312156137c6575f80fd5b82356137d18161348c565b915060208301356135648161348c565b5f805f80608085870312156137f4575f80fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561389e578085048111156138825761388261384f565b600184161561389057908102905b60019390931c928002613867565b935093915050565b5f826138b457506001610b9a565b816138c057505f610b9a565b81600181146138d657600281146138e0576138fc565b6001915050610b9a565b60ff8411156138f1576138f161384f565b50506001821b610b9a565b5060208310610133831016604e8410600b841016171561391f575081810a610b9a565b61392b5f198484613863565b805f190482111561393e5761393e61384f565b029392505050565b5f612f9960ff8416836138a6565b8082028115828204841417610b9a57610b9a61384f565b81810381811115610b9a57610b9a61384f565b5f61ffff821661ffff81036139955761399561384f565b60010192915050565b80820180821115610b9a57610b9a61384f565b5f826139cb57634e487b7160e01b5f52601260045260245ffd5b500490565b5f80604083850312156139e1575f80fd5b82516139ec8161348c565b60208401519092506135648161348c565b5f8060408385031215613a0e575f80fd5b505080516020909101519092909150565b5f60208284031215613a2f575f80fd5b5051919050565b5f60208284031215613a46575f80fd5b8151612f9981613513565b5f60208284031215613a61575f80fd5b8151612f998161348c565b6020808252602d908201527f43616e6e6f74206265206c6f776572207468616e20302e3030303125206f662060408201526c3a37ba30b61039bab838363c9760991b606082015260800190565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015613b095783516001600160a01b0316835260209384019390920191600101613ae2565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122001e3c7b4aa697cd0a731e287ff6b7c7ca477461c0611fb0568df6bd9389d046d64736f6c634300081a0033

Deployed Bytecode

0x60806040526004361061037f575f3560e01c80635a6f0918116101d3578063b1b08f71116100fd578063eb50e70e1161009d578063fb78680d1161006d578063fb78680d14610a4e578063fdb78c0e14610a6d578063fe575a8714610a8d578063feadde9c14610aac575f80fd5b8063eb50e70e146109dd578063ec602dea146109fc578063ee5d9c2d14610a1b578063eec2744e14610a2f575f80fd5b8063bfc2fc35116100d8578063bfc2fc351461093c578063c6a276c21461095b578063dd62ed3e1461097a578063eafb5a3c146109be575f80fd5b8063b1b08f71146105c2578063b3d514fb146105c2578063b7df8b3614610923575f80fd5b806378648edf116101735780638a8c523c116101435780638a8c523c146108a257806395d89b41146108b6578063a9059cbb146108e5578063ab558e4d14610904575f80fd5b806378648edf1461083e57806380c581d114610852578063893d20e8146108715780638a63bd9b1461088e575f80fd5b80636ebd0078116101ae5780636ebd0078146107d857806370a08231146107ec578063715018a61461080b57806375f0a8741461081f575f80fd5b80635a6f09181461076d5780635c24b074146107825780635cce86cd146107a1575f80fd5b80632b112e49116102b4578063452ed4f1116102545780634fb2e45d116102245780634fb2e45d146106da5780634fbee193146106f957806350a8e01614610730578063590ffdce1461074e575f80fd5b8063452ed4f1146106645780634ada218b146106835780634bbb93eb1461069c5780634e718e48146106bb575f80fd5b8063313ce5671161028f578063313ce567146105ec57806332cde6641461060757806336fddb04146106265780633f3cf56c14610645575f80fd5b80632b112e49146105ae5780632b28fc7a146105c25780632e8fa821146105d7575f80fd5b8063095ea7b31161031f5780631f8e32e3116102fa5780631f8e32e31461054757806323b872dd1461055b5780632610eaca1461057a5780632857775114610599575f80fd5b8063095ea7b3146104dd5780630dcbcf1c146104fc57806318160ddd14610533575f80fd5b8063069d955f1161035a578063069d955f1461040057806306fdde03146104555780630758d9241461049057806307dd79e0146104b4575f80fd5b806303fd2a451461038a5780630445b667146103bc57806305bbedb6146103df575f80fd5b3661038657005b5f80fd5b348015610395575f80fd5b5061039f61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103c7575f80fd5b506103d1600d5481565b6040519081526020016103b3565b3480156103ea575f80fd5b506103fe6103f9366004613520565b610acb565b005b34801561040b575f80fd5b506009546104309061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103b3565b348015610460575f80fd5b5060408051808201909152600a815269416c616464696e20414960b01b60208201525b6040516103b3919061356f565b34801561049b575f80fd5b50600a5461039f9061010090046001600160a01b031681565b3480156104bf575f80fd5b50600a546104cd9060ff1681565b60405190151581526020016103b3565b3480156104e8575f80fd5b506104cd6104f73660046135a4565b610b8a565b348015610507575f80fd5b506104cd6105163660046135ce565b6001600160a01b03165f9081526005602052604090205460ff1690565b34801561053e575f80fd5b506103d1610ba0565b348015610552575f80fd5b506103fe610bc0565b348015610566575f80fd5b506104cd6105753660046135e9565b610c44565b348015610585575f80fd5b506103fe610594366004613627565b610cb9565b3480156105a4575f80fd5b506103d160105481565b3480156105b9575f80fd5b506103d1610e2f565b3480156105cd575f80fd5b506103d16105dc81565b3480156105e2575f80fd5b506103d1600e5481565b3480156105f7575f80fd5b50604051601281526020016103b3565b348015610612575f80fd5b506103fe6106213660046136f6565b610e72565b348015610631575f80fd5b506103fe610640366004613736565b610f9c565b348015610650575f80fd5b506103fe61065f366004613762565b610ff0565b34801561066f575f80fd5b50600b5461039f906001600160a01b031681565b34801561068e575f80fd5b506012546104cd9060ff1681565b3480156106a7575f80fd5b506103d16106b6366004613782565b611127565b3480156106c6575f80fd5b506103fe6106d5366004613782565b611158565b3480156106e5575f80fd5b506103fe6106f43660046135ce565b6111d1565b348015610704575f80fd5b506104cd6107133660046135ce565b6001600160a01b03165f9081526006602052604090205460ff1690565b34801561073b575f80fd5b506012546104cd90610100900460ff1681565b348015610759575f80fd5b506103fe610768366004613736565b6113b1565b348015610778575f80fd5b506103d160135481565b34801561078d575f80fd5b506103fe61079c3660046135ce565b611405565b3480156107ac575f80fd5b506104cd6107bb3660046135ce565b6001600160a01b03165f9081526007602052604090205460ff1690565b3480156107e3575f80fd5b506103d16115a5565b3480156107f7575f80fd5b506103d16108063660046135ce565b6115bf565b348015610816575f80fd5b506103fe6115d9565b34801561082a575f80fd5b50600c5461039f906001600160a01b031681565b348015610849575f80fd5b506103fe6116d0565b34801561085d575f80fd5b506103fe61086c366004613736565b611709565b34801561087c575f80fd5b506014546001600160a01b031661039f565b348015610899575f80fd5b506104cd6118e2565b3480156108ad575f80fd5b506103fe611932565b3480156108c1575f80fd5b5060408051808201909152600781526620a620a22224a760c91b6020820152610483565b3480156108f0575f80fd5b506104cd6108ff3660046135a4565b611b5f565b34801561090f575f80fd5b506103fe61091e3660046135ce565b611b75565b34801561092e575f80fd5b50600f546104cd9060ff1681565b348015610947575f80fd5b506103fe610956366004613799565b611cec565b348015610966575f80fd5b506103fe6109753660046135ce565b611d79565b348015610985575f80fd5b506103d16109943660046137b5565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156109c9575f80fd5b506103fe6109d83660046135ce565b611dc3565b3480156109e8575f80fd5b506103fe6109f73660046135ce565b6121a4565b348015610a07575f80fd5b506012546104cd9062010000900460ff1681565b348015610a26575f80fd5b506103fe612246565b348015610a3a575f80fd5b506103fe610a49366004613736565b6122fe565b348015610a59575f80fd5b506103fe610a683660046137e1565b612470565b348015610a78575f80fd5b50600c546104cd90600160a81b900460ff1681565b348015610a98575f80fd5b506104cd610aa73660046135ce565b612680565b348015610ab7575f80fd5b506103fe610ac6366004613736565b6126ce565b6014546001600160a01b03163314610afe5760405162461bcd60e51b8152600401610af590613810565b60405180910390fd5b60125462010000900460ff16610b4f5760405162461bcd60e51b8152602060048201526016602482015275213630b1b5b634b9ba34b733903234b9b0b13632b21760511b6044820152606401610af5565b5f5b8251811015610b8557610b7d838281518110610b6f57610b6f61383b565b6020026020010151836122fe565b600101610b51565b505050565b5f610b96338484612722565b5060015b92915050565b5f610bad6012600a613946565b610bbb906305f5e100613954565b905090565b6014546001600160a01b03163314610bea5760405162461bcd60e51b8152600401610af590613810565b60125462010000900460ff16610c365760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903234b9b0b13632b21760791b6044820152606401610af5565b6012805462ff000019169055565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610ca6576001600160a01b0384165f90815260036020908152604080832033845290915281208054849290610ca090849061396b565b90915550505b610cb184848461281a565b949350505050565b6014546001600160a01b03163314610ce35760405162461bcd60e51b8152600401610af590613810565b8051825114610d2c5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610af5565b5f5b82518161ffff161015610b8557610d476012600a613946565b828261ffff1681518110610d5d57610d5d61383b565b6020026020010151610d6f9190613954565b610d78336115bf565b1015610dbb5760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610af5565b610e1c33848361ffff1681518110610dd557610dd561383b565b60200260200101516012600a610deb9190613946565b858561ffff1681518110610e0157610e0161383b565b6020026020010151610e139190613954565b5f806001612c87565b5080610e278161397e565b915050610d2e565b5f610e395f6115bf565b610e4461dead6115bf565b610e4e919061399e565b610e5a6012600a613946565b610e68906305f5e100613954565b610bbb919061396b565b6014546001600160a01b03163314610e9c5760405162461bcd60e51b8152600401610af590613810565b600a5460ff1615610ee35760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610af5565b6105dc8361ffff1611158015610eff57506105dc8261ffff1611155b8015610f1157506105dc8161ffff1611155b610f5d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610af5565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6014546001600160a01b03163314610fc65760405162461bcd60e51b8152600401610af590613810565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b6014546001600160a01b0316331461101a5760405162461bcd60e51b8152600401610af590613810565b6103e86110296012600a613946565b611037906305f5e100613954565b611042906005613954565b61104c91906139b1565b818361105a6012600a613946565b611068906305f5e100613954565b6110729190613954565b61107c91906139b1565b10156110f05760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610af5565b80826110fe6012600a613946565b61110c906305f5e100613954565b6111169190613954565b61112091906139b1565b6011555050565b600b545f90612710908390611144906001600160a01b03166115bf565b61114e9190613954565b610b9a91906139b1565b6014546001600160a01b031633146111825760405162461bcd60e51b8152600401610af590613810565b60968111156111cc5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610af5565b601055565b6014546001600160a01b031633146111fb5760405162461bcd60e51b8152600401610af590613810565b6001600160a01b0381166112515760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610af5565b61deac196001600160a01b038216016112ac5760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610af5565b6014546112c2906001600160a01b03165f6113b1565b6112cd8160016113b1565b6014545f906112e4906001600160a01b03166115bf565b111561130657601454611304906001600160a01b031682610e13826115bf565b505b601480546001600160a01b038381166001600160a01b031983161790925560125491169060ff6101009091041661136d576001600160a01b038082165f90815260046020526040808220805460ff1990811690915592851682529020805490911660011790555b816001600160a01b0316816001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6014546001600160a01b031633146113db5760405162461bcd60e51b8152600401610af590613810565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b6014546001600160a01b0316331461142f5760405162461bcd60e51b8152600401610af590613810565b60125460ff161561143e575f80fd5b306001600160a01b038216036114875760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610af5565b601280546301000000600160b81b03191663010000006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301815f875af192505050801561150e575060408051601f3d908101601f1916820190925261150b918101906139d0565b60015b611516575f80fd5b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091555f908152600160208190526040909120805460ff19169091179055601454925461158493831692919004165f19612722565b600a54610b8590309061010090046001600160a01b03165f19612722565b50565b5f6115b26012600a613946565b601154610bbb91906139b1565b6001600160a01b03165f9081526020819052604090205490565b6014546001600160a01b031633146116035760405162461bcd60e51b8152600401610af590613810565b60125460ff1661166d5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610af5565b601454611683906001600160a01b03165f6113b1565b601480546001600160a01b031981169091556040516001600160a01b03909116905f9082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6014546001600160a01b031633146116fa5760405162461bcd60e51b8152600401610af590613810565b600a805460ff19166001179055565b6014546001600160a01b031633146117335760405162461bcd60e51b8152600401610af590613810565b806117be576001600160a01b038281165f81815260016020526040808220805460ff1916905560125490516380c581d160e01b81526004810193909352602483019190915263010000009004909116906380c581d1906044015b5f604051808303815f87803b1580156117a4575f80fd5b505af11580156117b6573d5f803e3d5ffd5b505050505050565b60025415611817576203f480600254426117d8919061396b565b116118175760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610af5565b6001600160a01b0382165f9081526001602052604090205460ff161561187f5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610af5565b6001600160a01b038281165f81815260016020819052604091829020805460ff1916821790554260025560125491516380c581d160e01b81526004810193909352602483015263010000009004909116906380c581d19060440161178d565b5050565b6014545f906001600160a01b0316331461190e5760405162461bcd60e51b8152600401610af590613810565b600a5461192c90309061010090046001600160a01b03165f19612722565b50600190565b6014546001600160a01b0316331461195c5760405162461bcd60e51b8152600401610af590613810565b60125460ff16156119af5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610af5565b601254610100900460ff16611a065760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610af5565b601254630100000090046001600160a01b0316611a3957601280546301000000600160b81b031916306301000000021790555b60128054600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff42166044820152606481019390935263010000009091041690636c115c34906084015f604051808303815f87803b158015611aab575f80fd5b505af1925050508015611abc575060015b50601254600b546001600160a01b0363010000009092048216916325a71cae91611ae691166115bf565b6040518263ffffffff1660e01b8152600401611b0491815260200190565b60408051808303815f875af1925050508015611b3d575060408051601f3d908101601f19168201909252611b3a918101906139fd565b60015b15611b4c57600d91909155600e555b6012805460ff1916600117905542601355565b5f611b6b33848461281a565b5060019392505050565b6014546001600160a01b03163314611b9f5760405162461bcd60e51b8152600401610af590613810565b601254610100900460ff1615611c0757306001600160a01b03821603611c075760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610af5565b6014546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611c5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c809190613a1f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611cc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b859190613a36565b6014546001600160a01b03163314611d165760405162461bcd60e51b8152600401610af590613810565b600c805460ff60a81b1916600160a81b84151590810291909117909155600f805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6014546001600160a01b03163314611da35760405162461bcd60e51b8152600401610af590613810565b6001600160a01b03165f908152600860205260409020805460ff19169055565b6014546001600160a01b03163314611ded5760405162461bcd60e51b8152600401610af590613810565b601254610100900460ff1615611e455760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610af5565b600a54611e6290309061010090046001600160a01b03165f612722565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ea3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ec79190613a51565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f369190613a51565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611f7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fa39190613a51565b600b546001600160a01b039081165f908152600160205260409020805460ff19169055909150811661213157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561200b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061202f9190613a51565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561207a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209e9190613a51565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156120e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061210c9190613a51565b600b80546001600160a01b0319166001600160a01b039290921691909117905561214d565b600b80546001600160a01b0319166001600160a01b0383161790555b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b5482165f908152600160208190526040909120805460ff191690911790559154610b859230929104165f19612722565b6014546001600160a01b031633146121ce5760405162461bcd60e51b8152600401610af590613810565b6001600160a01b0381166122245760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610af5565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6014546001600160a01b031633146122705760405162461bcd60e51b8152600401610af590613810565b601254610100900460ff16156122c85760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610af5565b6014546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156115a2573d5f803e3d5ffd5b6014546001600160a01b031633146123285760405162461bcd60e51b8152600401610af590613810565b60125462010000900460ff166123795760405162461bcd60e51b8152602060048201526016602482015275213630b1b5b634b9ba34b733903234b9b0b13632b21760511b6044820152606401610af5565b6001600160a01b03821630148015906123aa57506001600160a01b0382165f9081526001602052604090205460ff16155b80156123c45750600b546001600160a01b03838116911614155b80156123e35750600a546001600160a01b038381166101009092041614155b6124465760405162461bcd60e51b815260206004820152602e60248201527f596f7520617265206e6f7420616c6c6f77656420746f20626c61636b6c69737460448201526d103a3434b99030b2323932b9b99760911b6064820152608401610af5565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b6014546001600160a01b0316331461249a5760405162461bcd60e51b8152600401610af590613810565b82846124a86012600a613946565b6124b6906305f5e100613954565b6124c09190613954565b6124ca91906139b1565b600d5580826124db6012600a613946565b6124e9906305f5e100613954565b6124f39190613954565b6124fd91906139b1565b600e819055600d54111561255d5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610af5565b600b5461271090612576906001600160a01b03166115bf565b612581906096613954565b61258b91906139b1565b600e5411156125e85760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610af5565b620f42406125f86012600a613946565b612606906305f5e100613954565b61261091906139b1565b600e5410156126315760405162461bcd60e51b8152600401610af590613a6c565b620f42406126416012600a613946565b61264f906305f5e100613954565b61265991906139b1565b600d54101561267a5760405162461bcd60e51b8152600401610af590613a6c565b50505050565b6014545f906001600160a01b031633146126ac5760405162461bcd60e51b8152600401610af590613810565b506001600160a01b0381165f9081526008602052604090205460ff165b919050565b6014546001600160a01b031633146126f85760405162461bcd60e51b8152600401610af590613810565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b6001600160a01b03831661276e5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610af5565b6001600160a01b0382166127ba5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610af5565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b03841661287f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610af5565b6001600160a01b0383166128e15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610af5565b5f82116129425760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610af5565b6001600160a01b0384165f9081526008602052604090205460ff1615801561298257506001600160a01b0383165f9081526008602052604090205460ff16155b6129bd5760405162461bcd60e51b815260206004820152600c60248201526b213630b1b5b634b9ba32b21760a11b6044820152606401610af5565b6001600160a01b0384165f908152600160205260408120548190819060ff16156129ea5760019250612a17565b6001600160a01b0386165f9081526001602052604090205460ff1615612a135760019150612a17565b5060015b612a218787612e8a565b15612bd65760125460ff16612b205780612a7d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610af5565b6001600160a01b0387165f9081526005602052604090205460ff16158015612abd57506001600160a01b0386165f9081526005602052604090205460ff16155b15612b205760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610af5565b8280612b295750815b15612bd6576001600160a01b0387165f9081526007602052604090205460ff16158015612b6e57506001600160a01b0386165f9081526007602052604090205460ff16155b15612bd657601154851115612bd65760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610af5565b8115612c6e57600c54600160a01b900460ff16612c6e57600c54600160a81b900460ff1615612c6e575f612c09306115bf565b9050600d548110612c6c57600e54600f5460ff1615612c5657601054600b546127109190612c3f906001600160a01b03166115bf565b612c499190613954565b612c5391906139b1565b90505b808210612c61578091505b612c6a82612fa0565b505b505b612c7c878787868686612c87565b979650505050505050565b6001600160a01b0386165f9081526006602052604081205460019060ff1680612cc757506001600160a01b0387165f9081526006602052604090205460ff165b15612ccf57505f5b6001600160a01b0388165f9081526020819052604081208054889290612cf690849061396b565b909155505f905081612d085786612d14565b612d14898888886131d5565b9050805f808a6001600160a01b03166001600160a01b031681526020019081526020015f205f828254612d47919061399e565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d9391815260200190565b60405180910390a3601254610100900460ff16612e7b57612db489896132de565b601254610100900460ff16158015612dd15750612dd18989612e8a565b8015612df557506001600160a01b0389165f9081526005602052604090205460ff16155b8015612e1957506001600160a01b0388165f9081526005602052604090205460ff16155b8015612e23575083155b15612e7b5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610af5565b50600198975050505050505050565b6014545f906001600160a01b03848116911614801590612eb857506014546001600160a01b03838116911614155b8015612ecf57506014546001600160a01b03163214155b8015612ef357506001600160a01b0382165f9081526004602052604090205460ff16155b8015612f1757506001600160a01b0383165f9081526004602052604090205460ff16155b8015612f2e57506001600160a01b03821661dead14155b8015612f4257506001600160a01b03821615155b8015612f5757506001600160a01b0383163014155b8015612f7857506012546001600160a01b0384811663010000009092041614155b8015612f9957506012546001600160a01b0383811663010000009092041614155b9392505050565b600c805460ff60a01b1916600160a01b179055305f908152600360209081526040808320600a5461010090046001600160a01b031684529091529020545f191461301257305f908152600360209081526040808320600a5461010090046001600160a01b0316845290915290205f1990555b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106130455761304561383b565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130da9190613a51565b816001815181106130ed576130ed61383b565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac947906131399085905f90869030904290600401613ab9565b5f604051808303815f87803b158015613150575f80fd5b505af1925050508015613161575060015b61316b57506131c5565b600c546040515f916001600160a01b03169061d6d890479084818181858888f193505050503d805f81146131ba576040519150601f19603f3d011682016040523d82523d5f602084013e6131bf565b606091505b50505050505b50600c805460ff60a01b19169055565b5f8083156131ea575060095461ffff16613214565b8215613203575060095462010000900461ffff16613214565b50600954640100000000900461ffff165b601254630100000090046001600160a01b031630148015613236575046606114155b1561324057506111945b805f036132505784915050610cb1565b5f61271061325e8388613954565b61326891906139b1565b905080156132d457305f908152602081905260408120805483929061328e90849061399e565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612c7c818761396b565b601254610100900460ff16156133425760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610af5565b61334c8282612e8a565b1580156133665750600b546001600160a01b038281169116145b156118de576001600160a01b038083165f908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556012805461ff001916610100179081905563010000009004166133e057601280546301000000600160b81b031916306301000000021790555b600c805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611d6d565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561346157613461613424565b604052919050565b5f67ffffffffffffffff82111561348257613482613424565b5060051b60200190565b6001600160a01b03811681146115a2575f80fd5b5f82601f8301126134af575f80fd5b81356134c26134bd82613469565b613438565b8082825260208201915060208360051b8601019250858311156134e3575f80fd5b602085015b838110156135095780356134fb8161348c565b8352602092830192016134e8565b5095945050505050565b80151581146115a2575f80fd5b5f8060408385031215613531575f80fd5b823567ffffffffffffffff811115613547575f80fd5b613553858286016134a0565b925050602083013561356481613513565b809150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f80604083850312156135b5575f80fd5b82356135c08161348c565b946020939093013593505050565b5f602082840312156135de575f80fd5b8135612f998161348c565b5f805f606084860312156135fb575f80fd5b83356136068161348c565b925060208401356136168161348c565b929592945050506040919091013590565b5f8060408385031215613638575f80fd5b823567ffffffffffffffff81111561364e575f80fd5b61365a858286016134a0565b925050602083013567ffffffffffffffff811115613676575f80fd5b8301601f81018513613686575f80fd5b80356136946134bd82613469565b8082825260208201915060208360051b8501019250878311156136b5575f80fd5b6020840193505b828410156136d75783358252602093840193909101906136bc565b809450505050509250929050565b803561ffff811681146126c9575f80fd5b5f805f60608486031215613708575f80fd5b613711846136e5565b925061371f602085016136e5565b915061372d604085016136e5565b90509250925092565b5f8060408385031215613747575f80fd5b82356137528161348c565b9150602083013561356481613513565b5f8060408385031215613773575f80fd5b50508035926020909101359150565b5f60208284031215613792575f80fd5b5035919050565b5f80604083850312156137aa575f80fd5b823561375281613513565b5f80604083850312156137c6575f80fd5b82356137d18161348c565b915060208301356135648161348c565b5f805f80608085870312156137f4575f80fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561389e578085048111156138825761388261384f565b600184161561389057908102905b60019390931c928002613867565b935093915050565b5f826138b457506001610b9a565b816138c057505f610b9a565b81600181146138d657600281146138e0576138fc565b6001915050610b9a565b60ff8411156138f1576138f161384f565b50506001821b610b9a565b5060208310610133831016604e8410600b841016171561391f575081810a610b9a565b61392b5f198484613863565b805f190482111561393e5761393e61384f565b029392505050565b5f612f9960ff8416836138a6565b8082028115828204841417610b9a57610b9a61384f565b81810381811115610b9a57610b9a61384f565b5f61ffff821661ffff81036139955761399561384f565b60010192915050565b80820180821115610b9a57610b9a61384f565b5f826139cb57634e487b7160e01b5f52601260045260245ffd5b500490565b5f80604083850312156139e1575f80fd5b82516139ec8161348c565b60208401519092506135648161348c565b5f8060408385031215613a0e575f80fd5b505080516020909101519092909150565b5f60208284031215613a2f575f80fd5b5051919050565b5f60208284031215613a46575f80fd5b8151612f9981613513565b5f60208284031215613a61575f80fd5b8151612f998161348c565b6020808252602d908201527f43616e6e6f74206265206c6f776572207468616e20302e3030303125206f662060408201526c3a37ba30b61039bab838363c9760991b606082015260800190565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015613b095783516001600160a01b0316835260209384019390920191600101613ae2565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122001e3c7b4aa697cd0a731e287ff6b7c7ca477461c0611fb0568df6bd9389d046d64736f6c634300081a0033

Deployed Bytecode Sourcemap

3889:20526:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5242:73;;;;;;;;;;;;5273:42;5242:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5242:73:0;;;;;;;;5491:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;5491:28:0;222:177:1;14193:292:0;;;;;;;;;;-1:-1:-1;14193:292:0;;;;;:::i;:::-;;:::i;:::-;;4827:109;;;;;;;;;;-1:-1:-1;4827:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;2720:6:1;2708:19;;;2690:38;;2764:19;;;2759:2;2744:18;;2737:47;2820:19;;2800:18;;;2793:47;;;;2678:2;2663:18;4827:109:0;2494:352:1;8962:80:0;;;;;;;;;;-1:-1:-1;9034:5:0;;;;;;;;;;;;-1:-1:-1;;;9034:5:0;;;;8962:80;;;;;;;:::i;5181:26::-;;;;;;;;;;-1:-1:-1;5181:26:0;;;;;;;-1:-1:-1;;;;;5181:26:0;;;5148;;;;;;;;;;-1:-1:-1;5148:26:0;;;;;;;;;;;3664:14:1;;3657:22;3639:41;;3627:2;3612:18;5148:26:0;3499:187:1;9570:161:0;;;;;;;;;;-1:-1:-1;9570:161:0;;;;;:::i;:::-;;:::i;13001:140::-;;;;;;;;;;-1:-1:-1;13001:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;13099:34:0;13075:4;13099:34;;;:25;:34;;;;;;;;;13001:140;8697:83;;;;;;;;;;;;;:::i;14493:157::-;;;;;;;;;;;;;:::i;10240:306::-;;;;;;;;;;-1:-1:-1;10240:306:0;;;;;:::i;:::-;;:::i;22365:447::-;;;;;;;;;;-1:-1:-1;22365:447:0;;;;;:::i;:::-;;:::i;5599:33::-;;;;;;;;;;;;;;;;13305:141;;;;;;;;;;;;;:::i;4945:42::-;;;;;;;;;;;;4983:4;4945:42;;5526:25;;;;;;;;;;;;;;;;8786:80;;;;;;;;;;-1:-1:-1;8786:80:0;;4638:2;6157:36:1;;6145:2;6130:18;8786:80:0;6015:184:1;14912:453:0;;;;;;;;;;-1:-1:-1;14912:453:0;;;;;:::i;:::-;;:::i;12576:140::-;;;;;;;;;;-1:-1:-1;12576:140:0;;;;;:::i;:::-;;:::i;15572:273::-;;;;;;;;;;-1:-1:-1;15572:273:0;;;;;:::i;:::-;;:::i;5214:21::-;;;;;;;;;;-1:-1:-1;5214:21:0;;;;-1:-1:-1;;;;;5214:21:0;;;5705:34;;;;;;;;;;-1:-1:-1;5705:34:0;;;;;;;;15969:189;;;;;;;;;;-1:-1:-1;15969:189:0;;;;;:::i;:::-;;:::i;16871:217::-;;;;;;;;;;-1:-1:-1;16871:217:0;;;;;:::i;:::-;;:::i;7245:738::-;;;;;;;;;;-1:-1:-1;7245:738:0;;;;;:::i;:::-;;:::i;12724:127::-;;;;;;;;;;-1:-1:-1;12724:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;12815:28:0;12791:4;12815:28;;;:19;:28;;;;;;;;;12724:127;5746:36;;;;;;;;;;-1:-1:-1;5746:36:0;;;;;;;;;;;12859:134;;;;;;;;;;-1:-1:-1;12859:134:0;;;;;:::i;:::-;;:::i;5864:26::-;;;;;;;;;;;;;;;;11871:557;;;;;;;;;;-1:-1:-1;11871:557:0;;;;;:::i;:::-;;:::i;12436:132::-;;;;;;;;;;-1:-1:-1;12436:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;12530:30:0;12506:4;12530:30;;;:21;:30;;;;;;;;;12436:132;15853:108;;;;;;;;;;;;;:::i;9272:117::-;;;;;;;;;;-1:-1:-1;9272:117:0;;;;;:::i;:::-;;:::i;7991:310::-;;;;;;;;;;;;;:::i;5322:92::-;;;;;;;;;;-1:-1:-1;5322:92:0;;;;-1:-1:-1;;;;;5322:92:0;;;14722:182;;;;;;;;;;;;;:::i;11299:564::-;;;;;;;;;;-1:-1:-1;11299:564:0;;;;;:::i;:::-;;:::i;9048:79::-;;;;;;;;;;-1:-1:-1;9118:6:0;;-1:-1:-1;;;;;9118:6:0;9048:79;;10057:175;;;;;;;;;;;;;:::i;21168:695::-;;;;;;;;;;;;;:::i;8872:84::-;;;;;;;;;;-1:-1:-1;8946:7:0;;;;;;;;;;;;-1:-1:-1;;;8946:7:0;;;;8872:84;;9397:165;;;;;;;;;;-1:-1:-1;9397:165:0;;;;;:::i;:::-;;:::i;22061:296::-;;;;;;;;;;-1:-1:-1;22061:296:0;;;;;:::i;:::-;;:::i;5558:34::-;;;;;;;;;;-1:-1:-1;5558:34:0;;;;;;;;17096:263;;;;;;;;;;-1:-1:-1;17096:263:0;;;;;:::i;:::-;;:::i;13518:111::-;;;;;;;;;;-1:-1:-1;13518:111:0;;;;;:::i;:::-;;:::i;9133:133::-;;;;;;;;;;-1:-1:-1;9133:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9235:19:0;;;9217:7;9235:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9133:133;10554:737;;;;;;;;;;-1:-1:-1;10554:737:0;;;;;:::i;:::-;;:::i;15373:191::-;;;;;;;;;;-1:-1:-1;15373:191:0;;;;;:::i;:::-;;:::i;5789:38::-;;;;;;;;;;-1:-1:-1;5789:38:0;;;;;;;;;;;21871:182;;;;;;;;;;;;;:::i;13771:414::-;;;;;;;;;;-1:-1:-1;13771:414:0;;;;;:::i;:::-;;:::i;16166:697::-;;;;;;;;;;-1:-1:-1;16166:697:0;;;;;:::i;:::-;;:::i;5445:39::-;;;;;;;;;;-1:-1:-1;5445:39:0;;;;-1:-1:-1;;;5445:39:0;;;;;;13637:126;;;;;;;;;;-1:-1:-1;13637:126:0;;;;;:::i;:::-;;:::i;13149:148::-;;;;;;;;;;-1:-1:-1;13149:148:0;;;;;:::i;:::-;;:::i;14193:292::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;;;;;;;;;14309:19:::1;::::0;;;::::1;;;14301:54;;;::::0;-1:-1:-1;;;14301:54:0;;10068:2:1;14301:54:0::1;::::0;::::1;10050:21:1::0;10107:2;10087:18;;;10080:30;-1:-1:-1;;;10126:18:1;;;10119:52;10188:18;;14301:54:0::1;9866:346:1::0;14301:54:0::1;14370:9;14366:112;14389:8;:15;14385:1;:19;14366:112;;;14425:41;14445:8;14454:1;14445:11;;;;;;;;:::i;:::-;;;;;;;14458:7;14425:19;:41::i;:::-;14406:3;;14366:112;;;;14193:292:::0;;:::o;9570:161::-;9647:4;9664:37;9673:10;9685:7;9694:6;9664:8;:37::i;:::-;-1:-1:-1;9719:4:0;9570:161;;;;;:::o;8697:83::-;8752:7;4699:13;4638:2;4699;:13;:::i;:::-;4682:30;;4484:11;4682:30;:::i;:::-;8763:14;;8697:83;:::o;14493:157::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;14563:19:::1;::::0;;;::::1;;;14555:49;;;::::0;-1:-1:-1;;;14555:49:0;;12288:2:1;14555:49:0::1;::::0;::::1;12270:21:1::0;12327:2;12307:18;;;12300:30;-1:-1:-1;;;12346:18:1;;;12339:47;12403:18;;14555:49:0::1;12086:341:1::0;14555:49:0::1;14615:19;:27:::0;;-1:-1:-1;;14615:27:0::1;::::0;;14493:157::o;10240:306::-;-1:-1:-1;;;;;10361:19:0;;10340:4;10361:19;;;:11;:19;;;;;;;;10381:10;10361:31;;;;;;;;-1:-1:-1;;10361:52:0;10357:126;;-1:-1:-1;;;;;10430:19:0;;;;;;:11;:19;;;;;;;;10450:10;10430:31;;;;;;;:41;;10465:6;;10430:19;:41;;10465:6;;10430:41;:::i;:::-;;;;-1:-1:-1;;10357:126:0;10502:36;10512:6;10520:9;10531:6;10502:9;:36::i;:::-;10495:43;10240:306;-1:-1:-1;;;;10240:306:0:o;22365:447::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;22500:7:::1;:14;22481:8;:15;:33;22473:67;;;::::0;-1:-1:-1;;;22473:67:0;;12767:2:1;22473:67:0::1;::::0;::::1;12749:21:1::0;12806:2;12786:18;;;12779:30;-1:-1:-1;;;12825:18:1;;;12818:51;12886:18;;22473:67:0::1;12565:345:1::0;22473:67:0::1;22556:8;22551:254;22574:8;:15;22570:1;:19;;;22551:254;;;22655:13;4638:2;22655;:13;:::i;:::-;22644:7;22652:1;22644:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;22619:21;22629:10;22619:9;:21::i;:::-;:49;;22611:80;;;::::0;-1:-1:-1;;;22611:80:0;;13117:2:1;22611:80:0::1;::::0;::::1;13099:21:1::0;13156:2;13136:18;;;13129:30;-1:-1:-1;;;13175:18:1;;;13168:48;13233:18;;22611:80:0::1;12915:342:1::0;22611:80:0::1;22706:87;22723:10;22735:8;22744:1;22735:11;;;;;;;;;;:::i;:::-;;;;;;;4638:2;22759;:13;;;;:::i;:::-;22748:7;22756:1;22748:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;22774:5;22781::::0;22788:4:::1;22706:16;:87::i;:::-;-1:-1:-1::0;22591:3:0;::::1;::::0;::::1;:::i;:::-;;;;22551:254;;13305:141:::0;13358:7;13415:21;13433:1;13415:9;:21::i;:::-;13397:15;5273:42;13397:9;:15::i;:::-;:39;;;;:::i;:::-;4699:13;4638:2;4699;:13;:::i;:::-;4682:30;;4484:11;4682:30;:::i;:::-;13386:51;;;;:::i;14912:453::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;15020:14:::1;::::0;::::1;;15019:15;15011:45;;;::::0;-1:-1:-1;;;15011:45:0;;13779:2:1;15011:45:0::1;::::0;::::1;13761:21:1::0;13818:2;13798:18;;;13791:30;-1:-1:-1;;;13837:18:1;;;13830:47;13894:18;;15011:45:0::1;13577:341:1::0;15011:45:0::1;4983:4;15075:6;:21;;;;:65;;;;;5033:4;15117:7;:23;;;;15075:65;:117;;;;;5087:4;15161:11;:31;;;;15075:117;15067:170;;;::::0;-1:-1:-1;;;15067:170:0;;14125:2:1;15067:170:0::1;::::0;::::1;14107:21:1::0;14164:2;14144:18;;;14137:30;14203:25;14183:18;;;14176:53;14246:18;;15067:170:0::1;13923:347:1::0;15067:170:0::1;15248:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;15284:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;15322:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;14912:453::o;12576:140::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12668:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;12668:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12576:140::o;15572:273::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;15717:4:::1;4699:13;4638:2;4699;:13;:::i;:::-;4682:30;::::0;4484:11:::1;4682:30;:::i;:::-;15703:11;::::0;15713:1:::1;15703:11;:::i;:::-;:18;;;;:::i;:::-;15691:7:::0;15680;4699:13:::1;4638:2;4699;:13;:::i;:::-;4682:30;::::0;4484:11:::1;4682:30;:::i;:::-;15670:17;;;;:::i;:::-;15669:29;;;;:::i;:::-;:53;;15661:121;;;::::0;-1:-1:-1;;;15661:121:0;;14699:2:1;15661:121:0::1;::::0;::::1;14681:21:1::0;14738:2;14718:18;;;14711:30;14777:34;14757:18;;;14750:62;14848:25;14828:18;;;14821:53;14891:19;;15661:121:0::1;14497:419:1::0;15661:121:0::1;15830:7:::0;15819;4699:13:::1;4638:2;4699;:13;:::i;:::-;4682:30;::::0;4484:11:::1;4682:30;:::i;:::-;15809:17;;;;:::i;:::-;15808:29;;;;:::i;:::-;15793:12;:44:::0;-1:-1:-1;;15572:273:0:o;15969:189::-;16098:6;;16060:7;;5134:5;;16108:21;;16088:17;;-1:-1:-1;;;;;16098:6:0;16088:9;:17::i;:::-;:41;;;;:::i;:::-;16087:62;;;;:::i;16871:217::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;17001:3:::1;16975:22;:29;;16967:64;;;::::0;-1:-1:-1;;;16967:64:0;;15123:2:1;16967:64:0::1;::::0;::::1;15105:21:1::0;15162:2;15142:18;;;15135:30;-1:-1:-1;;;15181:18:1;;;15174:52;15243:18;;16967:64:0::1;14921:346:1::0;16967:64:0::1;17042:13;:38:::0;16871:217::o;7245:738::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7324:22:0;::::1;7316:66;;;::::0;-1:-1:-1;;;7316:66:0;;15474:2:1;7316:66:0::1;::::0;::::1;15456:21:1::0;15513:2;15493:18;;;15486:30;15552:33;15532:18;;;15525:61;15603:18;;7316:66:0::1;15272:355:1::0;7316:66:0::1;-1:-1:-1::0;;;;;;;7401:16:0;::::1;::::0;7393:60:::1;;;::::0;-1:-1:-1;;;7393:60:0;;15474:2:1;7393:60:0::1;::::0;::::1;15456:21:1::0;15513:2;15493:18;;;15486:30;15552:33;15532:18;;;15525:61;15603:18;;7393:60:0::1;15272:355:1::0;7393:60:0::1;7484:6;::::0;7464:34:::1;::::0;-1:-1:-1;;;;;7484:6:0::1;;7464:19;:34::i;:::-;7509:35;7529:8;7539:4;7509:19;:35::i;:::-;7579:6;::::0;7589:1:::1;::::0;7569:17:::1;::::0;-1:-1:-1;;;;;7579:6:0::1;7569:9;:17::i;:::-;:21;7565:127;;;7624:6;::::0;7607:73:::1;::::0;-1:-1:-1;;;;;7624:6:0::1;7632:8:::0;7642:17:::1;7624:6:::0;7642:9:::1;:17::i;7607:73::-;;7565:127;7731:6;::::0;;-1:-1:-1;;;;;7748:17:0;;::::1;-1:-1:-1::0;;;;;;7748:17:0;::::1;;::::0;;;7781:16:::1;::::0;7731:6;::::1;::::0;7781:16:::1;7731:6;7781:16:::0;;::::1;;7776:134;;-1:-1:-1::0;;;;;7814:27:0;;::::1;7844:5;7814:27:::0;;;:17:::1;:27;::::0;;;;;:35;;-1:-1:-1;;7814:35:0;;::::1;::::0;;;7864:27;;::::1;::::0;;;;:34;;;;::::1;7814:35:::0;7864:34:::1;::::0;;7776:134:::1;7956:8;-1:-1:-1::0;;;;;7925:40:0::1;7946:8;-1:-1:-1::0;;;;;7925:40:0::1;;;;;;;;;;;7305:678;7245:738:::0;:::o;12859:134::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12947:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;12947:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12859:134::o;11871:557::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;11946:14:::1;::::0;::::1;;11945:15;11937:24;;;::::0;::::1;;11996:4;-1:-1:-1::0;;;;;11980:21:0;::::1;::::0;11972:48:::1;;;::::0;-1:-1:-1;;;11972:48:0;;15834:2:1;11972:48:0::1;::::0;::::1;15816:21:1::0;15873:2;15853:18;;;15846:30;-1:-1:-1;;;15892:18:1;;;15885:44;15946:18;;11972:48:0::1;15632:338:1::0;11972:48:0::1;12031:11;:31:::0;;-1:-1:-1;;;;;;12031:31:0::1;::::0;-1:-1:-1;;;;;12031:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12077:23:::1;::::0;;-1:-1:-1;;;12077:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;12077:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;12077:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;12077:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;12073:348;;12410:8;::::0;::::1;12073:348;12164:9;:29:::0;;-1:-1:-1;;;;;;12164:29:0::1;;-1:-1:-1::0;;;;;12164:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12195:6:::1;:22:::0;;-1:-1:-1;;;;;;12195:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12219:15:0;;;-1:-1:-1;12219:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12219:22:0::1;::::0;;::::1;::::0;;12266:6:::1;::::0;12282:9;;12257:55:::1;::::0;12266:6;::::1;::::0;12282:9;;::::1;;-1:-1:-1::0;;12257:8:0::1;:55::i;:::-;12359:9;::::0;12327:62:::1;::::0;12344:4:::1;::::0;12359:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12359:9:0::1;-1:-1:-1::0;;12327:8:0::1;:62::i;12073:348::-;11871:557:::0;:::o;15853:108::-;15896:7;15939:13;4638:2;15939;:13;:::i;:::-;15923:12;;:30;;;;:::i;9272:117::-;-1:-1:-1;;;;;9365:16:0;9338:7;9365:16;;;;;;;;;;;;9272:117::o;7991:310::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;8058:14:::1;::::0;::::1;;8050:74;;;::::0;-1:-1:-1;;;8050:74:0;;16567:2:1;8050:74:0::1;::::0;::::1;16549:21:1::0;16606:2;16586:18;;;16579:30;16645:34;16625:18;;;16618:62;-1:-1:-1;;;16696:18:1;;;16689:45;16751:19;;8050:74:0::1;16365:411:1::0;8050:74:0::1;8155:6;::::0;8135:34:::1;::::0;-1:-1:-1;;;;;8155:6:0::1;;8135:19;:34::i;:::-;8199:6;::::0;;-1:-1:-1;;;;;;8216:19:0;::::1;::::0;;;8251:42:::1;::::0;-1:-1:-1;;;;;8199:6:0;;::::1;::::0;8180:16:::1;::::0;8199:6;;8251:42:::1;::::0;8180:16;;8251:42:::1;8039:262;7991:310::o:0;14722:182::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;14875:14:::1;:21:::0;;-1:-1:-1;;14875:21:0::1;14892:4;14875:21;::::0;;14722:182::o;11299:564::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;11381:7:::1;11376:480;;-1:-1:-1::0;;;;;11405:13:0;;::::1;11421:5;11405:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;11405:21:0::1;::::0;;11441:11:::1;::::0;:34;;-1:-1:-1;;;11441:34:0;;::::1;::::0;::::1;16949:51:1::0;;;;17016:18;;;17009:50;;;;11441:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;16922:18:1;;11441:34:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11299:564:::0;;:::o;11376:480::-:1;11512:17;::::0;:22;11508:135:::1;;11601:6;11581:17;;11563:15;:35;;;;:::i;:::-;:44;11555:72;;;::::0;-1:-1:-1;;;11555:72:0;;17272:2:1;11555:72:0::1;::::0;::::1;17254:21:1::0;17311:2;17291:18;;;17284:30;-1:-1:-1;;;17330:18:1;;;17323:45;17385:18;;11555:72:0::1;17070:339:1::0;11555:72:0::1;-1:-1:-1::0;;;;;11666:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;11665:14;11657:54;;;::::0;-1:-1:-1;;;11657:54:0;;17616:2:1;11657:54:0::1;::::0;::::1;17598:21:1::0;17655:2;17635:18;;;17628:30;17694:29;17674:18;;;17667:57;17741:18;;11657:54:0::1;17414:351:1::0;11657:54:0::1;-1:-1:-1::0;;;;;11726:13:0;;::::1;;::::0;;;11742:4:::1;11726:13;::::0;;;;;;;;:20;;-1:-1:-1;;11726:20:0::1;::::0;::::1;::::0;;11781:15:::1;11761:17;:35:::0;11811:11:::1;::::0;:33;;-1:-1:-1;;;11811:33:0;;::::1;::::0;::::1;16949:51:1::0;;;;17016:18;;;17009:50;11811:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;16922:18:1;;11811:33:0::1;16781:284:1::0;11376:480:0::1;11299:564:::0;;:::o;10057:175::-;7099:6;;10123:4;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;10172:9:::1;::::0;10140:62:::1;::::0;10157:4:::1;::::0;10172:9:::1;::::0;::::1;-1:-1:-1::0;;;;;10172:9:0::1;-1:-1:-1::0;;10140:8:0::1;:62::i;:::-;-1:-1:-1::0;10220:4:0::1;10057:175:::0;:::o;21168:695::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;21230:14:::1;::::0;::::1;;21229:15;21221:52;;;::::0;-1:-1:-1;;;21221:52:0;;17972:2:1;21221:52:0::1;::::0;::::1;17954:21:1::0;18011:2;17991:18;;;17984:30;18050:26;18030:18;;;18023:54;18094:18;;21221:52:0::1;17770:348:1::0;21221:52:0::1;21292:16;::::0;::::1;::::0;::::1;;;21284:53;;;::::0;-1:-1:-1;;;21284:53:0;;18325:2:1;21284:53:0::1;::::0;::::1;18307:21:1::0;18364:2;18344:18;;;18337:30;18403:26;18383:18;;;18376:54;18447:18;;21284:53:0::1;18123:348:1::0;21284:53:0::1;21360:11;::::0;;;::::1;-1:-1:-1::0;;;;;21360:11:0::1;21348:106;;21402:11;:40:::0;;-1:-1:-1;;;;;;21402:40:0::1;21436:4;21402:40:::0;::::1;;::::0;;21348:106:::1;21468:11;::::0;;21490:6:::1;::::0;21468:87:::1;::::0;-1:-1:-1;;;21468:87:0;;-1:-1:-1;;;;;21490:6:0;;::::1;21468:87;::::0;::::1;18699:51:1::0;18798:10;21505:12:0::1;18786:23:1::0;18766:18;;;18759:51;18858:18;21527:15:0::1;18846:31:1::0;18826:18;;;18819:59;18894:18;;;18887:45;;;;21468:11:0;;;::::1;;::::0;:21:::1;::::0;18671:19:1;;21468:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;21464:103:::0;21581:11:::1;::::0;21612:6:::1;::::0;-1:-1:-1;;;;;21581:11:0;;;::::1;::::0;::::1;::::0;:20:::1;::::0;21602:17:::1;::::0;21612:6:::1;21602:9;:17::i;:::-;21581:39;;;;;;;;;;;;;368:25:1::0;;356:2;341:18;;222:177;21581:39:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;21581:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;21581:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;21577:207:::0;::::1;;21692:13;:29:::0;;;;21736:10:::1;:27:::0;21577:207:::1;21794:14;:21:::0;;-1:-1:-1;;21794:21:0::1;21811:4;21794:21;::::0;;21840:15:::1;21826:11;:29:::0;21168:695::o;9397:165::-;9475:4;9492:40;9502:10;9514:9;9525:6;9492:9;:40::i;:::-;-1:-1:-1;9550:4:0;;9397:165;-1:-1:-1;;;9397:165:0:o;22061:296::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;22139:16:::1;::::0;::::1;::::0;::::1;;;22135:111;;;22197:4;-1:-1:-1::0;;;;;22180:22:0;::::1;::::0;22172:62:::1;;;::::0;-1:-1:-1;;;22172:62:0;;19493:2:1;22172:62:0::1;::::0;::::1;19475:21:1::0;19532:2;19512:18;;;19505:30;19571:29;19551:18;;;19544:57;19618:18;;22172:62:0::1;19291:351:1::0;22172:62:0::1;22310:6;::::0;22318:30:::1;::::0;-1:-1:-1;;;22318:30:0;;22342:4:::1;22318:30;::::0;::::1;160:51:1::0;22278:5:0;;-1:-1:-1;;;;;22295:14:0;;::::1;::::0;::::1;::::0;22310:6;;;::::1;::::0;22295:14;;22318:15:::1;::::0;133:18:1;;22318:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22295:54;::::0;-1:-1:-1;;;;;;22295:54:0::1;::::0;;;;;;-1:-1:-1;;;;;20074:32:1;;;22295:54:0::1;::::0;::::1;20056:51:1::0;20123:18;;;20116:34;20029:18;;22295:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17096:263::-:0;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;17205:19:::1;:33:::0;;-1:-1:-1;;;;17205:33:0::1;-1:-1:-1::0;;;17205:33:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;17249:22:::1;:47:::0;;-1:-1:-1;;17249:47:0::1;::::0;::::1;;;::::0;;17312:39:::1;::::0;3639:41:1;;;17312:39:0::1;::::0;3627:2:1;3612:18;17312:39:0::1;;;;;;;;17096:263:::0;;:::o;13518:111::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13590:23:0::1;13616:5;13590:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;13590:31:0::1;::::0;;13518:111::o;10554:737::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;10634:16:::1;::::0;::::1;::::0;::::1;;;10633:17;10625:60;;;::::0;-1:-1:-1;;;10625:60:0;;20613:2:1;10625:60:0::1;::::0;::::1;20595:21:1::0;20652:2;20632:18;;;20625:30;20691:32;20671:18;;;20664:60;20741:18;;10625:60:0::1;20411:354:1::0;10625:60:0::1;10728:9;::::0;10696:46:::1;::::0;10713:4:::1;::::0;10728:9:::1;::::0;::::1;-1:-1:-1::0;;;;;10728:9:0::1;10740:1;10696:8;:46::i;:::-;10753:20;10786:9;10753:43;;10807:16;10837:10;-1:-1:-1::0;;;;;10837:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10826:40:0::1;;10875:4;10882:10;-1:-1:-1::0;;;;;10882:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10826:74;::::0;-1:-1:-1;;;;;;10826:74:0::1;::::0;;;;;;-1:-1:-1;;;;;21218:32:1;;;10826:74:0::1;::::0;::::1;21200:51:1::0;21287:32;;21267:18;;;21260:60;21173:18;;10826:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10919:6;::::0;-1:-1:-1;;;;;10919:6:0;;::::1;10929:5;10911:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;10911:23:0::1;::::0;;10807:93;;-1:-1:-1;10949:22:0;::::1;10945:200;;11008:10;-1:-1:-1::0;;;;;11008:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10997:43:0::1;;11049:4;11056:10;-1:-1:-1::0;;;;;11056:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10997:77;::::0;-1:-1:-1;;;;;;10997:77:0::1;::::0;;;;;;-1:-1:-1;;;;;21218:32:1;;;10997:77:0::1;::::0;::::1;21200:51:1::0;21287:32;;21267:18;;;21260:60;21173:18;;10997:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10988:6;:86:::0;;-1:-1:-1;;;;;;10988:86:0::1;-1:-1:-1::0;;;;;10988:86:0;;;::::1;::::0;;;::::1;::::0;;10945:200:::1;;;11116:6;:17:::0;;-1:-1:-1;;;;;;11116:17:0::1;-1:-1:-1::0;;;;;11116:17:0;::::1;;::::0;;10945:200:::1;11155:9;:22:::0;;-1:-1:-1;;;;;;11155:22:0::1;;-1:-1:-1::0;;;;;11155:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;11196:6:::1;::::0;;::::1;-1:-1:-1::0;11188:15:0;;;-1:-1:-1;11188:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;11188:22:0::1;::::0;;::::1;::::0;;11253:9;;11221:62:::1;::::0;11238:4:::1;::::0;11253:9;::::1;;-1:-1:-1::0;;11221:8:0::1;:62::i;15373:191::-:0;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15458:23:0;::::1;15450:59;;;::::0;-1:-1:-1;;;15450:59:0;;21533:2:1;15450:59:0::1;::::0;::::1;21515:21:1::0;21572:2;21552:18;;;21545:30;21611:25;21591:18;;;21584:53;21654:18;;15450:59:0::1;21331:347:1::0;15450:59:0::1;15520:15;:36:::0;;-1:-1:-1;;;;;;15520:36:0::1;-1:-1:-1::0;;;;;15520:36:0;;;::::1;::::0;;;::::1;::::0;;15373:191::o;21871:182::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;21938:16:::1;::::0;::::1;::::0;::::1;;;21937:17;21929:58;;;::::0;-1:-1:-1;;;21929:58:0;;21885:2:1;21929:58:0::1;::::0;::::1;21867:21:1::0;21924:2;21904:18;;;21897:30;21963;21943:18;;;21936:58;22011:18;;21929:58:0::1;21683:352:1::0;21929:58:0::1;22006:6;::::0;21998:47:::1;::::0;-1:-1:-1;;;;;22006:6:0;;::::1;::::0;22023:21:::1;21998:47:::0;::::1;;;::::0;22006:6:::1;21998:47:::0;22006:6;21998:47;22023:21;22006:6;21998:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;13771:414:::0;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;13867:19:::1;::::0;;;::::1;;;13859:54;;;::::0;-1:-1:-1;;;13859:54:0;;10068:2:1;13859:54:0::1;::::0;::::1;10050:21:1::0;10107:2;10087:18;;;10080:30;-1:-1:-1;;;10126:18:1;;;10119:52;10188:18;;13859:54:0::1;9866:346:1::0;13859:54:0::1;-1:-1:-1::0;;;;;13932:24:0;::::1;13951:4;13932:24;::::0;::::1;::::0;:62:::1;;-1:-1:-1::0;;;;;;13978:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;::::1;;13977:17;13932:62;:100;;;;-1:-1:-1::0;14015:6:0::1;::::0;-1:-1:-1;;;;;14015:17:0;;::::1;:6:::0;::::1;:17;;13932:100;:150;;;;-1:-1:-1::0;14072:9:0::1;::::0;-1:-1:-1;;;;;14053:29:0;;::::1;14072:9;::::0;;::::1;;14053:29;;13932:150;13924:209;;;::::0;-1:-1:-1;;;13924:209:0;;22242:2:1;13924:209:0::1;::::0;::::1;22224:21:1::0;22281:2;22261:18;;;22254:30;22320:34;22300:18;;;22293:62;-1:-1:-1;;;22371:18:1;;;22364:44;22425:19;;13924:209:0::1;22040:410:1::0;13924:209:0::1;-1:-1:-1::0;;;;;14144:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:33;;-1:-1:-1;;14144:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13771:414::o;16166:697::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;16366:16;16346;4699:13:::1;4638:2;4699;:13;:::i;:::-;4682:30;::::0;4484:11:::1;4682:30;:::i;:::-;16336:26;;;;:::i;:::-;16335:47;;;;:::i;:::-;16319:13;:63:::0;16434:13;16417;4699::::1;4638:2;4699;:13;:::i;:::-;4682:30;::::0;4484:11:::1;4682:30;:::i;:::-;16407:23;;;;:::i;:::-;16406:41;;;;:::i;:::-;16393:10;:54:::0;;;16466:13:::1;::::0;:27:::1;;16458:73;;;::::0;-1:-1:-1;;;16458:73:0;;22657:2:1;16458:73:0::1;::::0;::::1;22639:21:1::0;22696:2;22676:18;;;22669:30;22735:34;22715:18;;;22708:62;-1:-1:-1;;;22786:18:1;;;22779:31;22827:19;;16458:73:0::1;22455:397:1::0;16458:73:0::1;16575:6;::::0;5134:5:::1;::::0;16565:17:::1;::::0;-1:-1:-1;;;;;16575:6:0::1;16565:9;:17::i;:::-;:23;::::0;16585:3:::1;16565:23;:::i;:::-;16564:44;;;;:::i;:::-;16550:10;;:58;;16542:106;;;::::0;-1:-1:-1;;;16542:106:0;;23059:2:1;16542:106:0::1;::::0;::::1;23041:21:1::0;23098:2;23078:18;;;23071:30;23137:34;23117:18;;;23110:62;-1:-1:-1;;;23188:18:1;;;23181:33;23231:19;;16542:106:0::1;22857:399:1::0;16542:106:0::1;16691:9;4699:13;4638:2;4699;:13;:::i;:::-;4682:30;::::0;4484:11:::1;4682:30;:::i;:::-;16681:19;;;;:::i;:::-;16667:10;;:33;;16659:91;;;;-1:-1:-1::0;;;16659:91:0::1;;;;;;;:::i;:::-;16796:9;4699:13;4638:2;4699;:13;:::i;:::-;4682:30;::::0;4484:11:::1;4682:30;:::i;:::-;16786:19;;;;:::i;:::-;16769:13;;:36;;16761:94;;;;-1:-1:-1::0;;;16761:94:0::1;;;;;;;:::i;:::-;16166:697:::0;;;;:::o;13637:126::-;7099:6;;13708:4;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;13732:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;;::::1;;7143:1;13637:126:::0;;;:::o;13149:148::-;7099:6;;-1:-1:-1;;;;;7099:6:0;7109:10;7099:20;7091:50;;;;-1:-1:-1;;;7091:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13245:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;13245:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13149:148::o;9739:310::-;-1:-1:-1;;;;;9834:20:0;;9826:52;;;;-1:-1:-1;;;9826:52:0;;23877:2:1;9826:52:0;;;23859:21:1;23916:2;23896:18;;;23889:30;-1:-1:-1;;;23935:18:1;;;23928:49;23994:18;;9826:52:0;23675:343:1;9826:52:0;-1:-1:-1;;;;;9897:21:0;;9889:53;;;;-1:-1:-1;;;9889:53:0;;23877:2:1;9889:53:0;;;23859:21:1;23916:2;23896:18;;;23889:30;-1:-1:-1;;;23935:18:1;;;23928:49;23994:18;;9889:53:0;23675:343:1;9889:53:0;-1:-1:-1;;;;;9955:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10008:33;;368:25:1;;;10008:33:0;;341:18:1;10008:33:0;;;;;;;9739:310;;;:::o;17821:1999::-;17900:4;-1:-1:-1;;;;;17925:18:0;;17917:68;;;;-1:-1:-1;;;17917:68:0;;24225:2:1;17917:68:0;;;24207:21:1;24264:2;24244:18;;;24237:30;24303:34;24283:18;;;24276:62;-1:-1:-1;;;24354:18:1;;;24347:35;24399:19;;17917:68:0;24023:401:1;17917:68:0;-1:-1:-1;;;;;18004:16:0;;17996:64;;;;-1:-1:-1;;;17996:64:0;;24631:2:1;17996:64:0;;;24613:21:1;24670:2;24650:18;;;24643:30;24709:34;24689:18;;;24682:62;-1:-1:-1;;;24760:18:1;;;24753:33;24803:19;;17996:64:0;24429:399:1;17996:64:0;18088:1;18079:6;:10;18071:64;;;;-1:-1:-1;;;18071:64:0;;25035:2:1;18071:64:0;;;25017:21:1;25074:2;25054:18;;;25047:30;25113:34;25093:18;;;25086:62;-1:-1:-1;;;25164:18:1;;;25157:39;25213:19;;18071:64:0;24833:405:1;18071:64:0;-1:-1:-1;;;;;18155:20:0;;;;;;:14;:20;;;;;;;;18154:21;:44;;;;-1:-1:-1;;;;;;18180:18:0;;;;;;:14;:18;;;;;;;;18179:19;18154:44;18146:69;;;;-1:-1:-1;;;18146:69:0;;25445:2:1;18146:69:0;;;25427:21:1;25484:2;25464:18;;;25457:30;-1:-1:-1;;;25503:18:1;;;25496:42;25555:18;;18146:69:0;25243:336:1;18146:69:0;-1:-1:-1;;;;;18314:13:0;;18226:8;18314:13;;;:7;:13;;;;;;18226:8;;;;18314:13;;18310:162;;;18350:4;18344:10;;18310:162;;;-1:-1:-1;;;;;18376:11:0;;;;;;:7;:11;;;;;;;;18372:100;;;18411:4;18404:11;;18372:100;;;-1:-1:-1;18456:4:0;18372:100;18486:20;18497:4;18503:2;18486:10;:20::i;:::-;18482:617;;;18527:14;;;;18523:319;;18567:5;18562:265;;18597:34;;-1:-1:-1;;;18597:34:0;;25786:2:1;18597:34:0;;;25768:21:1;25825:2;25805:18;;;25798:30;25864:26;25844:18;;;25837:54;25908:18;;18597:34:0;25584:348:1;18562:265:0;-1:-1:-1;;;;;18662:31:0;;;;;;:25;:31;;;;;;;;18661:32;:66;;;;-1:-1:-1;;;;;;18698:29:0;;;;;;:25;:29;;;;;;;;18697:30;18661:66;18657:170;;;18752:55;;-1:-1:-1;;;18752:55:0;;26139:2:1;18752:55:0;;;26121:21:1;26178:2;26158:18;;;26151:30;26217:34;26197:18;;;26190:62;-1:-1:-1;;;26268:18:1;;;26261:43;26321:19;;18752:55:0;25937:409:1;18657:170:0;18860:3;:11;;;;18867:4;18860:11;18856:232;;;-1:-1:-1;;;;;18896:27:0;;;;;;:21;:27;;;;;;;;18895:28;:58;;;;-1:-1:-1;;;;;;18928:25:0;;;;;;:21;:25;;;;;;;;18927:26;18895:58;18891:182;;;18996:12;;18986:6;:22;;18978:75;;;;-1:-1:-1;;;18978:75:0;;26553:2:1;18978:75:0;;;26535:21:1;26592:2;26572:18;;;26565:30;26631:34;26611:18;;;26604:62;-1:-1:-1;;;26682:18:1;;;26675:38;26730:19;;18978:75:0;26351:404:1;18978:75:0;19115:4;19111:632;;;19141:6;;-1:-1:-1;;;19141:6:0;;;;19136:596;;19172:19;;-1:-1:-1;;;19172:19:0;;;;19168:549;;;19216:28;19247:24;19265:4;19247:9;:24::i;:::-;19216:55;;19322:13;;19298:20;:37;19294:404;;19382:10;;19423:22;;;;19419:97;;;19480:13;;19470:6;;5134:5;;19480:13;19460:17;;-1:-1:-1;;;;;19470:6:0;19460:9;:17::i;:::-;:33;;;;:::i;:::-;19459:54;;;;:::i;:::-;19449:64;;19419:97;19570:7;19546:20;:31;19542:72;;19604:7;19581:30;;19542:72;19640:34;19653:20;19640:12;:34::i;:::-;19337:361;19294:404;19193:524;19168:549;19760:52;19777:4;19783:2;19787:6;19795:3;19800:4;19806:5;19760:16;:52::i;:::-;19753:59;17821:1999;-1:-1:-1;;;;;;;17821:1999:0:o;22820:817::-;-1:-1:-1;;;;;22990:25:0;;22939:4;22990:25;;;:19;:25;;;;;;22971:4;;22990:25;;;:52;;-1:-1:-1;;;;;;23019:23:0;;;;;;:19;:23;;;;;;;;22990:52;22986:99;;;-1:-1:-1;23068:5:0;22986:99;-1:-1:-1;;;;;23095:13:0;;:7;:13;;;;;;;;;;:23;;23112:6;;23095:7;:23;;23112:6;;23095:23;:::i;:::-;;;;-1:-1:-1;23129:22:0;;-1:-1:-1;23155:7:0;23154:55;;23203:6;23154:55;;;23166:34;23176:4;23182:6;23190:3;23195:4;23166:9;:34::i;:::-;23129:80;;23235:14;23220:7;:11;23228:2;-1:-1:-1;;;;;23220:11:0;-1:-1:-1;;;;;23220:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;23280:2;-1:-1:-1;;;;;23265:34:0;23274:4;-1:-1:-1;;;;;23265:34:0;;23284:14;23265:34;;;;368:25:1;;356:2;341:18;;222:177;23265:34:0;;;;;;;;23315:16;;;;;;;23310:298;;23348:28;23367:4;23373:2;23348:18;:28::i;:::-;23396:16;;;;;;;23395:17;:41;;;;;23416:20;23427:4;23433:2;23416:10;:20::i;:::-;23395:77;;;;-1:-1:-1;;;;;;23441:31:0;;;;;;:25;:31;;;;;;;;23440:32;23395:77;:111;;;;-1:-1:-1;;;;;;23477:29:0;;;;;;:25;:29;;;;;;;;23476:30;23395:111;:121;;;;;23511:5;23510:6;23395:121;23391:206;;;23537:44;;-1:-1:-1;;;23537:44:0;;26962:2:1;23537:44:0;;;26944:21:1;27001:2;26981:18;;;26974:30;27040:34;27020:18;;;27013:62;-1:-1:-1;;;27091:18:1;;;27084:32;27133:19;;23537:44:0;26760:398:1;23391:206:0;-1:-1:-1;23625:4:0;;22820:817;-1:-1:-1;;;;;;;;22820:817:0:o;17367:446::-;17468:6;;17436:4;;-1:-1:-1;;;;;17460:14:0;;;17468:6;;17460:14;;;;:43;;-1:-1:-1;17497:6:0;;-1:-1:-1;;;;;17491:12:0;;;17497:6;;17491:12;;17460:43;:79;;;;-1:-1:-1;17533:6:0;;-1:-1:-1;;;;;17533:6:0;17520:9;:19;;17460:79;:118;;;;-1:-1:-1;;;;;;17557:21:0;;;;;;:17;:21;;;;;;;;17556:22;17460:118;:159;;;;-1:-1:-1;;;;;;17596:23:0;;;;;;:17;:23;;;;;;;;17595:24;17460:159;:186;;;;-1:-1:-1;;;;;;17636:10:0;;5273:42;17636:10;;17460:186;:219;;;;-1:-1:-1;;;;;;17663:16:0;;;;17460:219;:257;;;;-1:-1:-1;;;;;;17696:21:0;;17712:4;17696:21;;17460:257;:302;;;;-1:-1:-1;17750:11:0;;-1:-1:-1;;;;;17734:28:0;;;17750:11;;;;;17734:28;;17460:302;:345;;;;-1:-1:-1;17793:11:0;;-1:-1:-1;;;;;17779:26:0;;;17793:11;;;;;17779:26;;17460:345;17453:352;17367:446;-1:-1:-1;;;17367:446:0:o;19828:761::-;6055:6;:13;;-1:-1:-1;;;;6055:13:0;-1:-1:-1;;;6055:13:0;;;19935:4:::1;6055:13:::0;19915:26;;;:11:::1;:26;::::0;;;;;;;19950:9:::1;::::0;6055:13;19950:9;::::1;-1:-1:-1::0;;;;;19950:9:0::1;19915:46:::0;;;;;;;;-1:-1:-1;;19915:67:0::1;19911:166;;20019:4;19999:26;::::0;;;:11:::1;:26;::::0;;;;;;;20034:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;20034:9:0::1;19999:46:::0;;;;;;;-1:-1:-1;;19999:66:0;;19911:166:::1;20121:16;::::0;;20135:1:::1;20121:16:::0;;;;;::::1;::::0;;20097:21:::1;::::0;20121:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20121:16:0::1;20097:40;;20166:4;20148;20153:1;20148:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;20148:23:0::1;;;-1:-1:-1::0;;;;;20148:23:0::1;;;::::0;::::1;20192:9;;;;;;;;;-1:-1:-1::0;;;;;20192:9:0::1;-1:-1:-1::0;;;;;20192:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20182:4;20187:1;20182:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20182:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;20225:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;20225:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;20300:20;;20335:1:::1;::::0;20351:4;;20378::::1;::::0;20398:15:::1;::::0;20225:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;20221:246;;20449:7;;;20221:246;20515:15;::::0;:66:::1;::::0;20479:12:::1;::::0;-1:-1:-1;;;;;20515:15:0::1;::::0;20571:5:::1;::::0;20543:21:::1;::::0;20479:12;20515:66;20479:12;20515:66;20543:21;20515:15;20571:5;20515:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6079:1:0::1;-1:-1:-1::0;6091:6:0;:14;;-1:-1:-1;;;;6091:14:0;;;19828:761::o;23645:767::-;23733:7;23753:18;23786:3;23782:205;;;-1:-1:-1;23819:9:0;:16;;;23782:205;;;23857:4;23853:134;;;-1:-1:-1;23891:9:0;:17;;;;;;23853:134;;;-1:-1:-1;23954:9:0;:21;;;;;;23853:134;24009:11;;;;;-1:-1:-1;;;;;24009:11:0;24033:4;24001:37;:73;;;;;24055:13;24072:2;24055:19;;24001:73;23997:101;;;-1:-1:-1;24091:4:0;23997:101;24112:10;24126:1;24112:15;24108:39;;24138:6;24131:13;;;;;24108:39;24157:17;5134:5;24177:19;24186:10;24177:6;:19;:::i;:::-;:38;;;;:::i;:::-;24157:58;-1:-1:-1;24230:13:0;;24226:141;;24276:4;24260:7;:22;;;;;;;;;;:35;;24286:9;;24260:7;:35;;24286:9;;24260:35;:::i;:::-;;;;-1:-1:-1;;24315:40:0;;368:25:1;;;24338:4:0;;-1:-1:-1;;;;;24315:40:0;;;;;356:2:1;341:18;24315:40:0;;;;;;;24226:141;24386:18;24395:9;24386:6;:18;:::i;20597:563::-;20680:16;;;;;;;20679:17;20671:65;;;;-1:-1:-1;;;20671:65:0;;28539:2:1;20671:65:0;;;28521:21:1;28578:2;28558:18;;;28551:30;28617:34;28597:18;;;28590:62;-1:-1:-1;;;28668:18:1;;;28661:33;28711:19;;20671:65:0;28337:399:1;20671:65:0;20752:20;20763:4;20769:2;20752:10;:20::i;:::-;20751:21;:37;;;;-1:-1:-1;20782:6:0;;-1:-1:-1;;;;;20776:12:0;;;20782:6;;20776:12;20751:37;20747:406;;;-1:-1:-1;;;;;20805:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;20805:30:0;;;20831:4;20805:30;;;;;;20850:19;:25;;;;;:32;;;;;;;;;;20897:16;:23;;-1:-1:-1;;20897:23:0;20805:30;20897:23;;;;;20947:11;;;;20935:114;;20993:11;:40;;-1:-1:-1;;;;;;20993:40:0;21027:4;20993:40;;;;;20935:114;21063:19;:26;;-1:-1:-1;;;;21063:26:0;-1:-1:-1;;;21063:26:0;;;21109:32;;-1:-1:-1;3639:41:1;;21109:32:0;;3627:2:1;3612:18;21109:32:0;3499:187:1;404:127;465:10;460:3;456:20;453:1;446:31;496:4;493:1;486:15;520:4;517:1;510:15;536:275;607:2;601:9;672:2;653:13;;-1:-1:-1;;649:27:1;637:40;;707:18;692:34;;728:22;;;689:62;686:88;;;754:18;;:::i;:::-;790:2;783:22;536:275;;-1:-1:-1;536:275:1:o;816:183::-;876:4;909:18;901:6;898:30;895:56;;;931:18;;:::i;:::-;-1:-1:-1;976:1:1;972:14;988:4;968:25;;816:183::o;1004:131::-;-1:-1:-1;;;;;1079:31:1;;1069:42;;1059:70;;1125:1;1122;1115:12;1140:744;1194:5;1247:3;1240:4;1232:6;1228:17;1224:27;1214:55;;1265:1;1262;1255:12;1214:55;1305:6;1292:20;1332:64;1348:47;1388:6;1348:47;:::i;:::-;1332:64;:::i;:::-;1420:3;1444:6;1439:3;1432:19;1476:4;1471:3;1467:14;1460:21;;1537:4;1527:6;1524:1;1520:14;1512:6;1508:27;1504:38;1490:52;;1565:3;1557:6;1554:15;1551:35;;;1582:1;1579;1572:12;1551:35;1618:4;1610:6;1606:17;1632:221;1648:6;1643:3;1640:15;1632:221;;;1730:3;1717:17;1747:31;1772:5;1747:31;:::i;:::-;1791:18;;1838:4;1829:14;;;;1665;1632:221;;;-1:-1:-1;1871:7:1;1140:744;-1:-1:-1;;;;;1140:744:1:o;1889:118::-;1975:5;1968:13;1961:21;1954:5;1951:32;1941:60;;1997:1;1994;1987:12;2012:477;2102:6;2110;2163:2;2151:9;2142:7;2138:23;2134:32;2131:52;;;2179:1;2176;2169:12;2131:52;2219:9;2206:23;2252:18;2244:6;2241:30;2238:50;;;2284:1;2281;2274:12;2238:50;2307:61;2360:7;2351:6;2340:9;2336:22;2307:61;:::i;:::-;2297:71;;;2418:2;2407:9;2403:18;2390:32;2431:28;2453:5;2431:28;:::i;:::-;2478:5;2468:15;;;2012:477;;;;;:::o;2851:418::-;3000:2;2989:9;2982:21;2963:4;3032:6;3026:13;3075:6;3070:2;3059:9;3055:18;3048:34;3134:6;3129:2;3121:6;3117:15;3112:2;3101:9;3097:18;3091:50;3190:1;3185:2;3176:6;3165:9;3161:22;3157:31;3150:42;3260:2;3253;3249:7;3244:2;3236:6;3232:15;3228:29;3217:9;3213:45;3209:54;3201:62;;;2851:418;;;;:::o;3691:367::-;3759:6;3767;3820:2;3808:9;3799:7;3795:23;3791:32;3788:52;;;3836:1;3833;3826:12;3788:52;3875:9;3862:23;3894:31;3919:5;3894:31;:::i;:::-;3944:5;4022:2;4007:18;;;;3994:32;;-1:-1:-1;;;3691:367:1:o;4063:247::-;4122:6;4175:2;4163:9;4154:7;4150:23;4146:32;4143:52;;;4191:1;4188;4181:12;4143:52;4230:9;4217:23;4249:31;4274:5;4249:31;:::i;4315:508::-;4392:6;4400;4408;4461:2;4449:9;4440:7;4436:23;4432:32;4429:52;;;4477:1;4474;4467:12;4429:52;4516:9;4503:23;4535:31;4560:5;4535:31;:::i;:::-;4585:5;-1:-1:-1;4642:2:1;4627:18;;4614:32;4655:33;4614:32;4655:33;:::i;:::-;4315:508;;4707:7;;-1:-1:-1;;;4787:2:1;4772:18;;;;4759:32;;4315:508::o;4828:1182::-;4946:6;4954;5007:2;4995:9;4986:7;4982:23;4978:32;4975:52;;;5023:1;5020;5013:12;4975:52;5063:9;5050:23;5096:18;5088:6;5085:30;5082:50;;;5128:1;5125;5118:12;5082:50;5151:61;5204:7;5195:6;5184:9;5180:22;5151:61;:::i;:::-;5141:71;;;5265:2;5254:9;5250:18;5237:32;5294:18;5284:8;5281:32;5278:52;;;5326:1;5323;5316:12;5278:52;5349:24;;5404:4;5396:13;;5392:27;-1:-1:-1;5382:55:1;;5433:1;5430;5423:12;5382:55;5473:2;5460:16;5496:64;5512:47;5552:6;5512:47;:::i;5496:64::-;5582:3;5606:6;5601:3;5594:19;5638:2;5633:3;5629:12;5622:19;;5693:2;5683:6;5680:1;5676:14;5672:2;5668:23;5664:32;5650:46;;5719:7;5711:6;5708:19;5705:39;;;5740:1;5737;5730:12;5705:39;5772:2;5768;5764:11;5753:22;;5784:196;5800:6;5795:3;5792:15;5784:196;;;5890:17;;5920:18;;5967:2;5817:12;;;;5958;;;;5784:196;;;5999:5;5989:15;;;;;;4828:1182;;;;;:::o;6204:159::-;6271:20;;6331:6;6320:18;;6310:29;;6300:57;;6353:1;6350;6343:12;6368:328;6442:6;6450;6458;6511:2;6499:9;6490:7;6486:23;6482:32;6479:52;;;6527:1;6524;6517:12;6479:52;6550:28;6568:9;6550:28;:::i;:::-;6540:38;;6597:37;6630:2;6619:9;6615:18;6597:37;:::i;:::-;6587:47;;6653:37;6686:2;6675:9;6671:18;6653:37;:::i;:::-;6643:47;;6368:328;;;;;:::o;6701:382::-;6766:6;6774;6827:2;6815:9;6806:7;6802:23;6798:32;6795:52;;;6843:1;6840;6833:12;6795:52;6882:9;6869:23;6901:31;6926:5;6901:31;:::i;:::-;6951:5;-1:-1:-1;7008:2:1;6993:18;;6980:32;7021:30;6980:32;7021:30;:::i;7088:346::-;7156:6;7164;7217:2;7205:9;7196:7;7192:23;7188:32;7185:52;;;7233:1;7230;7223:12;7185:52;-1:-1:-1;;7278:23:1;;;7398:2;7383:18;;;7370:32;;-1:-1:-1;7088:346:1:o;7439:226::-;7498:6;7551:2;7539:9;7530:7;7526:23;7522:32;7519:52;;;7567:1;7564;7557:12;7519:52;-1:-1:-1;7612:23:1;;7439:226;-1:-1:-1;7439:226:1:o;7894:376::-;7956:6;7964;8017:2;8005:9;7996:7;7992:23;7988:32;7985:52;;;8033:1;8030;8023:12;7985:52;8072:9;8059:23;8091:28;8113:5;8091:28;:::i;8275:388::-;8343:6;8351;8404:2;8392:9;8383:7;8379:23;8375:32;8372:52;;;8420:1;8417;8410:12;8372:52;8459:9;8446:23;8478:31;8503:5;8478:31;:::i;:::-;8528:5;-1:-1:-1;8585:2:1;8570:18;;8557:32;8598:33;8557:32;8598:33;:::i;8928:587::-;9014:6;9022;9030;9038;9091:3;9079:9;9070:7;9066:23;9062:33;9059:53;;;9108:1;9105;9098:12;9059:53;-1:-1:-1;;9153:23:1;;;9273:2;9258:18;;9245:32;;-1:-1:-1;9376:2:1;9361:18;;9348:32;;9479:2;9464:18;9451:32;;-1:-1:-1;8928:587:1;-1:-1:-1;8928:587:1:o;9520:341::-;9722:2;9704:21;;;9761:2;9741:18;;;9734:30;-1:-1:-1;;;9795:2:1;9780:18;;9773:47;9852:2;9837:18;;9520:341::o;10217:127::-;10278:10;10273:3;10269:20;10266:1;10259:31;10309:4;10306:1;10299:15;10333:4;10330:1;10323:15;10349:127;10410:10;10405:3;10401:20;10398:1;10391:31;10441:4;10438:1;10431:15;10465:4;10462:1;10455:15;10481:375;10569:1;10587:5;10601:249;10622:1;10612:8;10609:15;10601:249;;;10672:4;10667:3;10663:14;10657:4;10654:24;10651:50;;;10681:18;;:::i;:::-;10731:1;10721:8;10717:16;10714:49;;;10745:16;;;;10714:49;10828:1;10824:16;;;;;10784:15;;10601:249;;;10481:375;;;;;;:::o;10861:902::-;10910:5;10940:8;10930:80;;-1:-1:-1;10981:1:1;10995:5;;10930:80;11029:4;11019:76;;-1:-1:-1;11066:1:1;11080:5;;11019:76;11111:4;11129:1;11124:59;;;;11197:1;11192:174;;;;11104:262;;11124:59;11154:1;11145:10;;11168:5;;;11192:174;11229:3;11219:8;11216:17;11213:43;;;11236:18;;:::i;:::-;-1:-1:-1;;11292:1:1;11278:16;;11351:5;;11104:262;;11450:2;11440:8;11437:16;11431:3;11425:4;11422:13;11418:36;11412:2;11402:8;11399:16;11394:2;11388:4;11385:12;11381:35;11378:77;11375:203;;;-1:-1:-1;11487:19:1;;;11563:5;;11375:203;11610:42;-1:-1:-1;;11635:8:1;11629:4;11610:42;:::i;:::-;11688:6;11684:1;11680:6;11676:19;11667:7;11664:32;11661:58;;;11699:18;;:::i;:::-;11737:20;;10861:902;-1:-1:-1;;;10861:902:1:o;11768:140::-;11826:5;11855:47;11896:4;11886:8;11882:19;11876:4;11855:47;:::i;11913:168::-;11986:9;;;12017;;12034:15;;;12028:22;;12014:37;12004:71;;12055:18;;:::i;12432:128::-;12499:9;;;12520:11;;;12517:37;;;12534:18;;:::i;13262:180::-;13300:3;13344:6;13337:5;13333:18;13375:6;13366:7;13363:19;13360:45;;13385:18;;:::i;:::-;13434:1;13421:15;;13262:180;-1:-1:-1;;13262:180:1:o;13447:125::-;13512:9;;;13533:10;;;13530:36;;;13546:18;;:::i;14275:217::-;14315:1;14341;14331:132;;14385:10;14380:3;14376:20;14373:1;14366:31;14420:4;14417:1;14410:15;14448:4;14445:1;14438:15;14331:132;-1:-1:-1;14477:9:1;;14275:217::o;15975:385::-;16054:6;16062;16115:2;16103:9;16094:7;16090:23;16086:32;16083:52;;;16131:1;16128;16121:12;16083:52;16163:9;16157:16;16182:31;16207:5;16182:31;:::i;:::-;16282:2;16267:18;;16261:25;16232:5;;-1:-1:-1;16295:33:1;16261:25;16295:33;:::i;18943:343::-;19022:6;19030;19083:2;19071:9;19062:7;19058:23;19054:32;19051:52;;;19099:1;19096;19089:12;19051:52;-1:-1:-1;;19144:16:1;;19250:2;19235:18;;;19229:25;19144:16;;19229:25;;-1:-1:-1;18943:343:1:o;19647:230::-;19717:6;19770:2;19758:9;19749:7;19745:23;19741:32;19738:52;;;19786:1;19783;19776:12;19738:52;-1:-1:-1;19831:16:1;;19647:230;-1:-1:-1;19647:230:1:o;20161:245::-;20228:6;20281:2;20269:9;20260:7;20256:23;20252:32;20249:52;;;20297:1;20294;20287:12;20249:52;20329:9;20323:16;20348:28;20370:5;20348:28;:::i;20770:251::-;20840:6;20893:2;20881:9;20872:7;20868:23;20864:32;20861:52;;;20909:1;20906;20899:12;20861:52;20941:9;20935:16;20960:31;20985:5;20960:31;:::i;23261:409::-;23463:2;23445:21;;;23502:2;23482:18;;;23475:30;23541:34;23536:2;23521:18;;23514:62;-1:-1:-1;;;23607:2:1;23592:18;;23585:43;23660:3;23645:19;;23261:409::o;27163:959::-;27425:4;27473:3;27462:9;27458:19;27504:6;27493:9;27486:25;27547:6;27542:2;27531:9;27527:18;27520:34;27590:3;27585:2;27574:9;27570:18;27563:31;27614:6;27649;27643:13;27680:6;27672;27665:22;27718:3;27707:9;27703:19;27696:26;;27757:2;27749:6;27745:15;27731:29;;27778:1;27788:195;27802:6;27799:1;27796:13;27788:195;;;27867:13;;-1:-1:-1;;;;;27863:39:1;27851:52;;27932:2;27958:15;;;;27923:12;;;;27899:1;27817:9;27788:195;;;-1:-1:-1;;;;;;;28039:32:1;;;;28034:2;28019:18;;28012:60;-1:-1:-1;;28103:3:1;28088:19;28081:35;28000:3;27163:959;-1:-1:-1;;;27163:959:1:o

Swarm Source

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