ETH Price: $2,532.80 (-0.02%)

Token

BrainAI ($BRAIN)
 

Overview

Max Total Supply

1,000,000,000,000 $BRAIN

Holders

171 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.425225891 $BRAIN

Value
$0.00
0xe0a5d3d34f35f32332f856dbd5f390061924e179
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

BrainAI ($BRAIN) combines the power of AI, crypto and limitless possibilities. Monetize your expertise, engage with advanced AI, and earn $BRAIN tokens.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BrainAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-05
*/

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

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

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

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

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

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

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

contract BrainAI 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 presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 1_000_000_000_000;
    string constant private _name = "BrainAI";
    string constant private _symbol = "$BRAIN";
    uint8 constant private _decimals = 9;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

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

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

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

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

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

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

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        originalDeployer = 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 to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

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

    address public originalDeployer;
    address public operator;

    // Function to set an operator to allow someone other the deployer to create things such as launchpads.
    // Only callable by original deployer.
    function setOperator(address newOperator) public {
        require(msg.sender == originalDeployer, "Can only be called by original deployer.");
        address oldOperator = operator;
        if (oldOperator != address(0)) {
            _liquidityHolders[oldOperator] = false;
            setExcludedFromFees(oldOperator, false);
        }
        operator = newOperator;
        _liquidityHolders[newOperator] = true;
        setExcludedFromFees(newOperator, true);
    }

    function renounceOriginalDeployer() external {
        require(msg.sender == originalDeployer, "Can only be called by original deployer.");
        setOperator(address(0));
        originalDeployer = 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.");
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        lpPairs[lpPair] = false;
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function excludePresaleAddresses(address router, address presale) external onlyOwner {
        require(allowedPresaleExclusion);
        require(router != address(this) 
                && presale != address(this) 
                && lpPair != router 
                && lpPair != presale, "Just don't.");
        if (router == presale) {
            _liquidityHolders[presale] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(presale, true);
        } else {
            _liquidityHolders[router] = true;
            _liquidityHolders[presale] = true;
            presaleAddresses[router] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(router, true);
            setExcludedFromFees(presale, true);
        }
    }

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

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

        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled
                   && !presaleAddresses[to]
                   && !presaleAddresses[from]
                ) {
                    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;
        allowedPresaleExclusion = false;
        launchStamp = block.timestamp;
    }

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

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

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

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

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

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_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":"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":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"originalDeployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOriginalDeployer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"init","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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"}]

600060028190556009805460ff1916600117815560e0604052608082905260c860a05260c091909152600a805465ffffffffffff191662c80000178155600d8054600161ff0160a01b03191673c281c0b053d8d6478b27ecc77a995791db68926617905560118190556103e89162000077916200033b565b620000889064e8d4a5100062000353565b6200009590601962000353565b620000a191906200036d565b6012556103e8620000b56009600a6200033b565b620000c69064e8d4a5100062000353565b620000d390601962000353565b620000df91906200036d565b6013556014805461ffff1916905560168054336001600160a01b031991821681179092556017805490911690911790556200011d6009600a6200033b565b6200012e9064e8d4a5100062000353565b601680546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001826009600a6200033b565b620001939064e8d4a5100062000353565b60405190815260200160405180910390a3601680546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280548216831790559554909416835260049091529020805490921617905562000390565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200027d57816000190482111562000261576200026162000226565b808516156200026f57918102915b93841c939080029062000241565b509250929050565b600082620002965750600162000335565b81620002a55750600062000335565b8160018114620002be5760028114620002c957620002e9565b600191505062000335565b60ff841115620002dd57620002dd62000226565b50506001821b62000335565b5060208310610133831016604e8410600b84101617156200030e575081810a62000335565b6200031a83836200023c565b806000190482111562000331576200033162000226565b0290505b92915050565b60006200034c60ff84168362000285565b9392505050565b808202811582820484141762000335576200033562000226565b6000826200038b57634e487b7160e01b600052601260045260246000fd5b500490565b6143a780620003a06000396000f3fe6080604052600436106103b15760003560e01c806350a8e016116101e75780638a8c523c1161010d578063bfc2fc35116100a0578063ee5d9c2d1161006f578063ee5d9c2d14610b2b578063fb78680d14610b40578063fdb78c0e14610b60578063feadde9c14610b8157600080fd5b8063bfc2fc3514610a85578063dd62ed3e14610aa5578063eafb5a3c14610aeb578063eb50e70e14610b0b57600080fd5b8063b1b08f71116100dc578063b1b08f7114610642578063b3ab15fb14610a4b578063b3d514fb14610642578063b7df8b3614610a6b57600080fd5b80638a8c523c146109c757806395d89b41146109dc578063a9059cbb14610a0b578063ab558e4d14610a2b57600080fd5b806370a082311161018557806380c581d11161015457806380c581d11461095457806381cf58a914610974578063893d20e8146109945780638a63bd9b146109b257600080fd5b806370a08231146108d4578063715018a61461090a57806375f0a8741461091f57806378648edf1461093f57600080fd5b80635a6f0918116101c15780635a6f0918146108505780635c24b074146108665780635cce86cd146108865780636ebd0078146108bf57600080fd5b806350a8e016146107f1578063570ca73514610810578063590ffdce1461083057600080fd5b806328577751116102d757806339a059021161026a5780634bbb93eb116102395780634bbb93eb146107585780634e718e48146107785780634fb2e45d146107985780634fbee193146107b857600080fd5b806339a05902146106e95780633f3cf56c146106fe578063452ed4f11461071e5780634ada218b1461073e57600080fd5b8063313ce567116102a6578063313ce5671461066d57806332cde6641461068957806333251a0b146106a957806336fddb04146106c957600080fd5b806328577751146106175780632b112e491461062d5780632b28fc7a146106425780632e8fa8211461065757600080fd5b8063095ea7b31161034f57806318160ddd1161031e57806318160ddd146105a257806323b872dd146105b757806326003957146105d75780632610eaca146105f757600080fd5b8063095ea7b3146105145780630dcbcf1c146105345780630fa604e41461056d57806313b4a7f41461058257600080fd5b8063069d955f1161038b578063069d955f1461043657806306fdde031461048c5780630758d924146104c557806307dd79e0146104ea57600080fd5b806303fd2a45146103bd5780630445b667146103f0578063044df7261461041457600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103d361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103fc57600080fd5b50610406600e5481565b6040519081526020016103e7565b34801561042057600080fd5b5061043461042f366004613cca565b610ba1565b005b34801561044257600080fd5b50600a546104679061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103e7565b34801561049857600080fd5b50604080518082019091526007815266427261696e414960c81b60208201525b6040516103e79190613d03565b3480156104d157600080fd5b50600b546103d39061010090046001600160a01b031681565b3480156104f657600080fd5b50600b546105049060ff1681565b60405190151581526020016103e7565b34801561052057600080fd5b5061050461052f366004613d66565b610c5f565b34801561054057600080fd5b5061050461054f366004613d92565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561057957600080fd5b50610406610c76565b34801561058e57600080fd5b5061043461059d366004613daf565b610c96565b3480156105ae57600080fd5b50610406610e54565b3480156105c357600080fd5b506105046105d2366004613ddd565b610e71565b3480156105e357600080fd5b506104346105f2366004613e1e565b610ee9565b34801561060357600080fd5b50610434610612366004613f16565b611035565b34801561062357600080fd5b5061040660115481565b34801561063957600080fd5b506104066111ea565b34801561064e57600080fd5b5061040660c881565b34801561066357600080fd5b50610406600f5481565b34801561067957600080fd5b50604051600981526020016103e7565b34801561069557600080fd5b506104346106a4366004613fef565b611269565b3480156106b557600080fd5b506104346106c4366004613d92565b6113ba565b3480156106d557600080fd5b506104346106e4366004614032565b61146b565b3480156106f557600080fd5b506104346114de565b34801561070a57600080fd5b50610434610719366004613e1e565b611565565b34801561072a57600080fd5b50600c546103d3906001600160a01b031681565b34801561074a57600080fd5b506014546105049060ff1681565b34801561076457600080fd5b50610406610773366004614050565b6116bd565b34801561078457600080fd5b50610434610793366004614050565b6116f1565b3480156107a457600080fd5b506104346107b3366004613d92565b61178f565b3480156107c457600080fd5b506105046107d3366004613d92565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107fd57600080fd5b5060145461050490610100900460ff1681565b34801561081c57600080fd5b506018546103d3906001600160a01b031681565b34801561083c57600080fd5b5061043461084b366004614032565b611991565b34801561085c57600080fd5b5061040660155481565b34801561087257600080fd5b50610434610881366004613d92565b611a04565b34801561089257600080fd5b506105046108a1366004613d92565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108cb57600080fd5b50610406611be2565b3480156108e057600080fd5b506104066108ef366004613d92565b6001600160a01b031660009081526020819052604090205490565b34801561091657600080fd5b50610434611bfd565b34801561092b57600080fd5b50600d546103d3906001600160a01b031681565b34801561094b57600080fd5b50610434611d22565b34801561096057600080fd5b5061043461096f366004614032565b611d79565b34801561098057600080fd5b506017546103d3906001600160a01b031681565b3480156109a057600080fd5b506016546001600160a01b03166103d3565b3480156109be57600080fd5b50610504611f63565b3480156109d357600080fd5b50610434611fd3565b3480156109e857600080fd5b5060408051808201909152600681526512212920a4a760d11b60208201526104b8565b348015610a1757600080fd5b50610504610a26366004613d66565b612229565b348015610a3757600080fd5b50610434610a46366004613d92565b612240565b348015610a5757600080fd5b50610434610a66366004613d92565b6123da565b348015610a7757600080fd5b506010546105049060ff1681565b348015610a9157600080fd5b50610434610aa0366004613cca565b6124c7565b348015610ab157600080fd5b50610406610ac0366004613daf565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610af757600080fd5b50610434610b06366004613d92565b612572565b348015610b1757600080fd5b50610434610b26366004613d92565b612973565b348015610b3757600080fd5b50610434612a33565b348015610b4c57600080fd5b50610434610b5b366004614069565b612b0c565b348015610b6c57600080fd5b50600d5461050490600160a81b900460ff1681565b348015610b8d57600080fd5b50610434610b9c366004614032565b612dd2565b6016546001600160a01b03163314610bee5760405162461bcd60e51b8152602060048201526011602482015260008051602061435283398151915260448201526064015b60405180910390fd5b60145460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c4357600080fd5b505af1158015610c57573d6000803e3d6000fd5b505050505050565b6000610c6c338484612e45565b5060015b92915050565b6000610c846009600a614195565b601354610c9191906141a4565b905090565b6016546001600160a01b03163314610cde5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b60095460ff16610ced57600080fd5b6001600160a01b0382163014801590610d0f57506001600160a01b0381163014155b8015610d295750600c546001600160a01b03838116911614155b8015610d435750600c546001600160a01b03828116911614155b610d7d5760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610be5565b806001600160a01b0316826001600160a01b031603610ddf576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560089093529220805490911682179055610ddb908290611991565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526008909252808320805486168317905592825291902080549092168117909155610e49908390611991565b610ddb816001611991565b6000610e626009600a614195565b610c919064e8d4a510006141c6565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610ed6576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610ed09084906141dd565b90915550505b610ee1848484612f3e565b949350505050565b6016546001600160a01b03163314610f315760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b6064610f3f6009600a614195565b610f4e9064e8d4a510006141c6565b610f5891906141a4565b8183610f666009600a614195565b610f759064e8d4a510006141c6565b610f7f91906141c6565b610f8991906141a4565b1015610ffd5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610be5565b808261100b6009600a614195565b61101a9064e8d4a510006141c6565b61102491906141c6565b61102e91906141a4565b6013555050565b6016546001600160a01b0316331461107d5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b80518251146110ce5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610be5565b60005b82518161ffff1610156111e5576110ea6009600a614195565b828261ffff1681518110611100576111006141f0565b602002602001015161111291906141c6565b3360009081526020819052604090205410156111705760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610be5565b6111d233848361ffff168151811061118a5761118a6141f0565b60200260200101516009600a6111a09190614195565b858561ffff16815181106111b6576111b66141f0565b60200260200101516111c891906141c6565b600080600161345e565b50806111dd81614206565b9150506110d1565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546112449190614227565b6112506009600a614195565b61125f9064e8d4a510006141c6565b610c9191906141dd565b6016546001600160a01b031633146112b15760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b600b5460ff16156113045760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610be5565b60c88361ffff161115801561131e575060c88261ffff1611155b801561132f575060c88161ffff1611155b61137b5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610be5565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6016546001600160a01b031633146114025760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b6014546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561145057600080fd5b505af1158015611464573d6000803e3d6000fd5b5050505050565b6016546001600160a01b031633146114b35760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6017546001600160a01b031633146115495760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610be5565b61155360006123da565b601780546001600160a01b0319169055565b6016546001600160a01b031633146115ad5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b6103e86115bc6009600a614195565b6115cb9064e8d4a510006141c6565b6115d69060056141c6565b6115e091906141a4565b81836115ee6009600a614195565b6115fd9064e8d4a510006141c6565b61160791906141c6565b61161191906141a4565b10156116855760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610be5565b80826116936009600a614195565b6116a29064e8d4a510006141c6565b6116ac91906141c6565b6116b691906141a4565b6012555050565b600c546001600160a01b0316600090815260208190526040812054612710906116e79084906141c6565b610c7091906141a4565b6016546001600160a01b031633146117395760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b609681111561178a5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610be5565b601155565b6016546001600160a01b031633146117d75760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b6001600160a01b0381166118535760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610be5565b61deac196001600160a01b038216016118d45760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610be5565b6016546118eb906001600160a01b03166000611991565b6118f6816001611991565b6016546001600160a01b03166000908152602081905260409020541561193f576016546001600160a01b031660008181526020819052604090205461193d919083906111c8565b505b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6016546001600160a01b031633146119d95760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6016546001600160a01b03163314611a4c5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b60145460ff1615611a5c57600080fd5b306001600160a01b03821603611ab45760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610be5565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611b3a575060408051601f3d908101601f19168201909252611b379181019061423a565b60015b611b4357600080fd5b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff191690911790556016549254611bc09383169291900416600019612e45565b600b546111e590309061010090046001600160a01b0316600019612e45565b50565b6000611bf06009600a614195565b601254610c9191906141a4565b6016546001600160a01b03163314611c455760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b60145460ff16611cbd5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610be5565b601654611cd4906001600160a01b03166000611991565b601680546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6016546001600160a01b03163314611d6a5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b600b805460ff19166001179055565b6016546001600160a01b03163314611dc15760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b80611e34576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610c4357600080fd5b60025415611e9b576203f48060025442611e4e91906141dd565b11611e9b5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610be5565b6001600160a01b03821660009081526001602052604090205460ff1615611f045760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610be5565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610c29565b6016546000906001600160a01b03163314611fae5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b600b54611fcd90309061010090046001600160a01b0316600019612e45565b50600190565b6016546001600160a01b0316331461201b5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b60145460ff161561206e5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610be5565b601454610100900460ff166120c55760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610be5565b6014546201000090046001600160a01b03166120f5576014805462010000600160b01b0319163062010000021790555b601454600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561216757600080fd5b505af1925050508015612178575060015b50601454600c546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af19250505080156121fb575060408051601f3d908101601f191682019092526121f891810190614269565b60015b1561220a57600e91909155600f555b6014805460ff1990811660011790915560098054909116905542601555565b6000612236338484612f3e565b5060019392505050565b6016546001600160a01b031633146122885760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b601454610100900460ff16156122f057306001600160a01b038216036122f05760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610be5565b6016546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015612347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236b919061428d565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156123b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e591906142a6565b6017546001600160a01b031633146124455760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610be5565b6018546001600160a01b03168015612482576001600160a01b0381166000908152600460205260408120805460ff19169055612482908290611991565b601880546001600160a01b0319166001600160a01b0384169081179091556000908152600460205260409020805460ff19166001908117909155610ddb908390611991565b6016546001600160a01b0316331461250f5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b600d805460ff60a81b1916600160a81b841515908102919091179091556010805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6016546001600160a01b031633146125ba5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b601454610100900460ff16156126125760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610be5565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267b91906142c3565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ec91906142c3565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275b91906142c3565b600c546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166128f157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ea91906142c3565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285b91906142c3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156128a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128cc91906142c3565b600c80546001600160a01b0319166001600160a01b039290921691909117905561290d565b600c80546001600160a01b0319166001600160a01b0383161790555b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c5482166000908152600160208190526040909120805460ff1916909117905591546111e5923092910416600019612e45565b6016546001600160a01b031633146129bb5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b6001600160a01b038116612a115760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610be5565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6016546001600160a01b03163314612a7b5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b601454610100900460ff1615612ad35760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610be5565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611bdf573d6000803e3d6000fd5b6016546001600160a01b03163314612b545760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b8284612b626009600a614195565b612b719064e8d4a510006141c6565b612b7b91906141c6565b612b8591906141a4565b600e558082612b966009600a614195565b612ba59064e8d4a510006141c6565b612baf91906141c6565b612bb991906141a4565b600f819055600e541115612c195760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610be5565b600c546001600160a01b031660009081526020819052604090205461271090612c439060966141c6565b612c4d91906141a4565b600f541115612caa5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610be5565b620f4240612cba6009600a614195565b612cc99064e8d4a510006141c6565b612cd391906141a4565b600f541015612d3b5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610be5565b620f4240612d4b6009600a614195565b612d5a9064e8d4a510006141c6565b612d6491906141a4565b600e541015612dcc5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610be5565b50505050565b6016546001600160a01b03163314612e1a5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612e915760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610be5565b6001600160a01b038216612edd5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610be5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612fa45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610be5565b6001600160a01b0383166130065760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610be5565b600082116130685760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610be5565b6001600160a01b0384166000908152600160205260408120548190819060ff161561309657600192506130c4565b6001600160a01b03861660009081526001602052604090205460ff16156130c057600191506130c4565b5060015b6130ce8787613711565b1561335b5760145460ff166131cf578061312a5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610be5565b6001600160a01b03871660009081526005602052604090205460ff1615801561316c57506001600160a01b03861660009081526005602052604090205460ff16155b156131cf5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610be5565b82806131d85750815b15613287576001600160a01b03871660009081526007602052604090205460ff1615801561321f57506001600160a01b03861660009081526007602052604090205460ff16155b15613287576012548511156132875760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610be5565b600b546001600160a01b0387811661010090920416148015906132a8575081155b1561335b576001600160a01b03861660009081526007602052604090205460ff1661335b57601354856132f0886001600160a01b031660009081526020819052604090205490565b6132fa9190614227565b111561335b5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610be5565b811561344557600d54600160a01b900460ff1661344557600d54600160a81b900460ff1680156133a457506001600160a01b03861660009081526008602052604090205460ff16155b80156133c957506001600160a01b03871660009081526008602052604090205460ff16155b156134455730600090815260208190526040902054600e54811061344357600f5460105460ff161561342d57601154600c546001600160a01b031660009081526020819052604090205461271091613420916141c6565b61342a91906141a4565b90505b808210613438578091505b61344182613828565b505b505b61345387878786868661345e565b979650505050505050565b600061346a8787613711565b156135045760145460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156134ed575060408051601f3d908101601f191682019092526134ea918101906142a6565b60015b6134f657600080fd5b90508061350257600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061354657506001600160a01b03871660009081526006602052604090205460ff165b1561354f575060005b6001600160a01b038816600090815260208190526040812080548892906135779084906141dd565b90915550600090508161358a5786613596565b61359689888888613a6c565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546135cc9190614227565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161361891815260200190565b60405180910390a3601454610100900460ff16613702576136398989613b78565b601454610100900460ff1615801561365657506136568989613711565b801561367b57506001600160a01b03891660009081526005602052604090205460ff16155b80156136a057506001600160a01b03881660009081526005602052604090205460ff16155b80156136aa575083155b156137025760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610be5565b50600198975050505050505050565b6016546000906001600160a01b0384811691161480159061374057506016546001600160a01b03838116911614155b801561375757506016546001600160a01b03163214155b801561377c57506001600160a01b03821660009081526004602052604090205460ff16155b80156137a157506001600160a01b03831660009081526004602052604090205460ff16155b80156137b857506001600160a01b03821661dead14155b80156137cc57506001600160a01b03821615155b80156137e157506001600160a01b0383163014155b801561380157506014546001600160a01b03848116620100009092041614155b801561382157506014546001600160a01b03838116620100009092041614155b9392505050565b600d805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600b5461010090046001600160a01b031684529091529020546000191461389e57306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106138d3576138d36141f0565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396a91906142c3565b8160018151811061397d5761397d6141f0565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac947906139ca9085906000908690309042906004016142e0565b600060405180830381600087803b1580156139e457600080fd5b505af19250505080156139f5575060015b6139ff5750613a5c565b600d546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d8060008114613a51576040519150601f19603f3d011682016040523d82523d6000602084013e613a56565b606091505b50505050505b50600d805460ff60a01b19169055565b6000808315613a825750600a5461ffff16613aac565b8215613a9b5750600a5462010000900461ffff16613aac565b50600a54640100000000900461ffff165b80600003613abd5784915050610ee1565b6014546201000090046001600160a01b031630148015613ade575046606114155b15613ae857506111945b6000612710613af783886141c6565b613b0191906141a4565b90508015613b6e573060009081526020819052604081208054839290613b28908490614227565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61345381876141dd565b601454610100900460ff1615613bdc5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610be5565b613be68282613711565b158015613c005750600c546001600160a01b038281169116145b15610ddb576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff001916610100179081905562010000900416613c78576014805462010000600160b01b0319163062010000021790555b600d805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612566565b8015158114611bdf57600080fd5b60008060408385031215613cdd57600080fd5b8235613ce881613cbc565b91506020830135613cf881613cbc565b809150509250929050565b600060208083528351808285015260005b81811015613d3057858101830151858201604001528201613d14565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611bdf57600080fd5b60008060408385031215613d7957600080fd5b8235613d8481613d51565b946020939093013593505050565b600060208284031215613da457600080fd5b813561382181613d51565b60008060408385031215613dc257600080fd5b8235613dcd81613d51565b91506020830135613cf881613d51565b600080600060608486031215613df257600080fd5b8335613dfd81613d51565b92506020840135613e0d81613d51565b929592945050506040919091013590565b60008060408385031215613e3157600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613e7f57613e7f613e40565b604052919050565b600067ffffffffffffffff821115613ea157613ea1613e40565b5060051b60200190565b600082601f830112613ebc57600080fd5b81356020613ed1613ecc83613e87565b613e56565b82815260059290921b84018101918181019086841115613ef057600080fd5b8286015b84811015613f0b5780358352918301918301613ef4565b509695505050505050565b60008060408385031215613f2957600080fd5b823567ffffffffffffffff80821115613f4157600080fd5b818501915085601f830112613f5557600080fd5b81356020613f65613ecc83613e87565b82815260059290921b84018101918181019089841115613f8457600080fd5b948201945b83861015613fab578535613f9c81613d51565b82529482019490820190613f89565b96505086013592505080821115613fc157600080fd5b50613fce85828601613eab565b9150509250929050565b803561ffff81168114613fea57600080fd5b919050565b60008060006060848603121561400457600080fd5b61400d84613fd8565b925061401b60208501613fd8565b915061402960408501613fd8565b90509250925092565b6000806040838503121561404557600080fd5b8235613ce881613d51565b60006020828403121561406257600080fd5b5035919050565b6000806000806080858703121561407f57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156140ec5781600019048211156140d2576140d261409b565b808516156140df57918102915b93841c93908002906140b6565b509250929050565b60008261410357506001610c70565b8161411057506000610c70565b816001811461412657600281146141305761414c565b6001915050610c70565b60ff8411156141415761414161409b565b50506001821b610c70565b5060208310610133831016604e8410600b841016171561416f575081810a610c70565b61417983836140b1565b806000190482111561418d5761418d61409b565b029392505050565b600061382160ff8416836140f4565b6000826141c157634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610c7057610c7061409b565b81810381811115610c7057610c7061409b565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361421d5761421d61409b565b6001019392505050565b80820180821115610c7057610c7061409b565b6000806040838503121561424d57600080fd5b825161425881613d51565b6020840151909250613cf881613d51565b6000806040838503121561427c57600080fd5b505080516020909101519092909150565b60006020828403121561429f57600080fd5b5051919050565b6000602082840312156142b857600080fd5b815161382181613cbc565b6000602082840312156142d557600080fd5b815161382181613d51565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156143305784516001600160a01b03168352938301939183019160010161430b565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a264697066735822122028fd1393bb8fc3908ad60c56571c2ff5ecb0a18d4ce6368b87ebebcd8b5fc4ca64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103b15760003560e01c806350a8e016116101e75780638a8c523c1161010d578063bfc2fc35116100a0578063ee5d9c2d1161006f578063ee5d9c2d14610b2b578063fb78680d14610b40578063fdb78c0e14610b60578063feadde9c14610b8157600080fd5b8063bfc2fc3514610a85578063dd62ed3e14610aa5578063eafb5a3c14610aeb578063eb50e70e14610b0b57600080fd5b8063b1b08f71116100dc578063b1b08f7114610642578063b3ab15fb14610a4b578063b3d514fb14610642578063b7df8b3614610a6b57600080fd5b80638a8c523c146109c757806395d89b41146109dc578063a9059cbb14610a0b578063ab558e4d14610a2b57600080fd5b806370a082311161018557806380c581d11161015457806380c581d11461095457806381cf58a914610974578063893d20e8146109945780638a63bd9b146109b257600080fd5b806370a08231146108d4578063715018a61461090a57806375f0a8741461091f57806378648edf1461093f57600080fd5b80635a6f0918116101c15780635a6f0918146108505780635c24b074146108665780635cce86cd146108865780636ebd0078146108bf57600080fd5b806350a8e016146107f1578063570ca73514610810578063590ffdce1461083057600080fd5b806328577751116102d757806339a059021161026a5780634bbb93eb116102395780634bbb93eb146107585780634e718e48146107785780634fb2e45d146107985780634fbee193146107b857600080fd5b806339a05902146106e95780633f3cf56c146106fe578063452ed4f11461071e5780634ada218b1461073e57600080fd5b8063313ce567116102a6578063313ce5671461066d57806332cde6641461068957806333251a0b146106a957806336fddb04146106c957600080fd5b806328577751146106175780632b112e491461062d5780632b28fc7a146106425780632e8fa8211461065757600080fd5b8063095ea7b31161034f57806318160ddd1161031e57806318160ddd146105a257806323b872dd146105b757806326003957146105d75780632610eaca146105f757600080fd5b8063095ea7b3146105145780630dcbcf1c146105345780630fa604e41461056d57806313b4a7f41461058257600080fd5b8063069d955f1161038b578063069d955f1461043657806306fdde031461048c5780630758d924146104c557806307dd79e0146104ea57600080fd5b806303fd2a45146103bd5780630445b667146103f0578063044df7261461041457600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103d361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103fc57600080fd5b50610406600e5481565b6040519081526020016103e7565b34801561042057600080fd5b5061043461042f366004613cca565b610ba1565b005b34801561044257600080fd5b50600a546104679061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103e7565b34801561049857600080fd5b50604080518082019091526007815266427261696e414960c81b60208201525b6040516103e79190613d03565b3480156104d157600080fd5b50600b546103d39061010090046001600160a01b031681565b3480156104f657600080fd5b50600b546105049060ff1681565b60405190151581526020016103e7565b34801561052057600080fd5b5061050461052f366004613d66565b610c5f565b34801561054057600080fd5b5061050461054f366004613d92565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561057957600080fd5b50610406610c76565b34801561058e57600080fd5b5061043461059d366004613daf565b610c96565b3480156105ae57600080fd5b50610406610e54565b3480156105c357600080fd5b506105046105d2366004613ddd565b610e71565b3480156105e357600080fd5b506104346105f2366004613e1e565b610ee9565b34801561060357600080fd5b50610434610612366004613f16565b611035565b34801561062357600080fd5b5061040660115481565b34801561063957600080fd5b506104066111ea565b34801561064e57600080fd5b5061040660c881565b34801561066357600080fd5b50610406600f5481565b34801561067957600080fd5b50604051600981526020016103e7565b34801561069557600080fd5b506104346106a4366004613fef565b611269565b3480156106b557600080fd5b506104346106c4366004613d92565b6113ba565b3480156106d557600080fd5b506104346106e4366004614032565b61146b565b3480156106f557600080fd5b506104346114de565b34801561070a57600080fd5b50610434610719366004613e1e565b611565565b34801561072a57600080fd5b50600c546103d3906001600160a01b031681565b34801561074a57600080fd5b506014546105049060ff1681565b34801561076457600080fd5b50610406610773366004614050565b6116bd565b34801561078457600080fd5b50610434610793366004614050565b6116f1565b3480156107a457600080fd5b506104346107b3366004613d92565b61178f565b3480156107c457600080fd5b506105046107d3366004613d92565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107fd57600080fd5b5060145461050490610100900460ff1681565b34801561081c57600080fd5b506018546103d3906001600160a01b031681565b34801561083c57600080fd5b5061043461084b366004614032565b611991565b34801561085c57600080fd5b5061040660155481565b34801561087257600080fd5b50610434610881366004613d92565b611a04565b34801561089257600080fd5b506105046108a1366004613d92565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108cb57600080fd5b50610406611be2565b3480156108e057600080fd5b506104066108ef366004613d92565b6001600160a01b031660009081526020819052604090205490565b34801561091657600080fd5b50610434611bfd565b34801561092b57600080fd5b50600d546103d3906001600160a01b031681565b34801561094b57600080fd5b50610434611d22565b34801561096057600080fd5b5061043461096f366004614032565b611d79565b34801561098057600080fd5b506017546103d3906001600160a01b031681565b3480156109a057600080fd5b506016546001600160a01b03166103d3565b3480156109be57600080fd5b50610504611f63565b3480156109d357600080fd5b50610434611fd3565b3480156109e857600080fd5b5060408051808201909152600681526512212920a4a760d11b60208201526104b8565b348015610a1757600080fd5b50610504610a26366004613d66565b612229565b348015610a3757600080fd5b50610434610a46366004613d92565b612240565b348015610a5757600080fd5b50610434610a66366004613d92565b6123da565b348015610a7757600080fd5b506010546105049060ff1681565b348015610a9157600080fd5b50610434610aa0366004613cca565b6124c7565b348015610ab157600080fd5b50610406610ac0366004613daf565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610af757600080fd5b50610434610b06366004613d92565b612572565b348015610b1757600080fd5b50610434610b26366004613d92565b612973565b348015610b3757600080fd5b50610434612a33565b348015610b4c57600080fd5b50610434610b5b366004614069565b612b0c565b348015610b6c57600080fd5b50600d5461050490600160a81b900460ff1681565b348015610b8d57600080fd5b50610434610b9c366004614032565b612dd2565b6016546001600160a01b03163314610bee5760405162461bcd60e51b8152602060048201526011602482015260008051602061435283398151915260448201526064015b60405180910390fd5b60145460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c4357600080fd5b505af1158015610c57573d6000803e3d6000fd5b505050505050565b6000610c6c338484612e45565b5060015b92915050565b6000610c846009600a614195565b601354610c9191906141a4565b905090565b6016546001600160a01b03163314610cde5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b60095460ff16610ced57600080fd5b6001600160a01b0382163014801590610d0f57506001600160a01b0381163014155b8015610d295750600c546001600160a01b03838116911614155b8015610d435750600c546001600160a01b03828116911614155b610d7d5760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610be5565b806001600160a01b0316826001600160a01b031603610ddf576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560089093529220805490911682179055610ddb908290611991565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526008909252808320805486168317905592825291902080549092168117909155610e49908390611991565b610ddb816001611991565b6000610e626009600a614195565b610c919064e8d4a510006141c6565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610ed6576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610ed09084906141dd565b90915550505b610ee1848484612f3e565b949350505050565b6016546001600160a01b03163314610f315760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b6064610f3f6009600a614195565b610f4e9064e8d4a510006141c6565b610f5891906141a4565b8183610f666009600a614195565b610f759064e8d4a510006141c6565b610f7f91906141c6565b610f8991906141a4565b1015610ffd5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610be5565b808261100b6009600a614195565b61101a9064e8d4a510006141c6565b61102491906141c6565b61102e91906141a4565b6013555050565b6016546001600160a01b0316331461107d5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b80518251146110ce5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610be5565b60005b82518161ffff1610156111e5576110ea6009600a614195565b828261ffff1681518110611100576111006141f0565b602002602001015161111291906141c6565b3360009081526020819052604090205410156111705760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610be5565b6111d233848361ffff168151811061118a5761118a6141f0565b60200260200101516009600a6111a09190614195565b858561ffff16815181106111b6576111b66141f0565b60200260200101516111c891906141c6565b600080600161345e565b50806111dd81614206565b9150506110d1565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546112449190614227565b6112506009600a614195565b61125f9064e8d4a510006141c6565b610c9191906141dd565b6016546001600160a01b031633146112b15760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b600b5460ff16156113045760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610be5565b60c88361ffff161115801561131e575060c88261ffff1611155b801561132f575060c88161ffff1611155b61137b5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610be5565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6016546001600160a01b031633146114025760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b6014546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561145057600080fd5b505af1158015611464573d6000803e3d6000fd5b5050505050565b6016546001600160a01b031633146114b35760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6017546001600160a01b031633146115495760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610be5565b61155360006123da565b601780546001600160a01b0319169055565b6016546001600160a01b031633146115ad5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b6103e86115bc6009600a614195565b6115cb9064e8d4a510006141c6565b6115d69060056141c6565b6115e091906141a4565b81836115ee6009600a614195565b6115fd9064e8d4a510006141c6565b61160791906141c6565b61161191906141a4565b10156116855760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610be5565b80826116936009600a614195565b6116a29064e8d4a510006141c6565b6116ac91906141c6565b6116b691906141a4565b6012555050565b600c546001600160a01b0316600090815260208190526040812054612710906116e79084906141c6565b610c7091906141a4565b6016546001600160a01b031633146117395760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b609681111561178a5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610be5565b601155565b6016546001600160a01b031633146117d75760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b6001600160a01b0381166118535760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610be5565b61deac196001600160a01b038216016118d45760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610be5565b6016546118eb906001600160a01b03166000611991565b6118f6816001611991565b6016546001600160a01b03166000908152602081905260409020541561193f576016546001600160a01b031660008181526020819052604090205461193d919083906111c8565b505b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6016546001600160a01b031633146119d95760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6016546001600160a01b03163314611a4c5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b60145460ff1615611a5c57600080fd5b306001600160a01b03821603611ab45760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610be5565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611b3a575060408051601f3d908101601f19168201909252611b379181019061423a565b60015b611b4357600080fd5b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff191690911790556016549254611bc09383169291900416600019612e45565b600b546111e590309061010090046001600160a01b0316600019612e45565b50565b6000611bf06009600a614195565b601254610c9191906141a4565b6016546001600160a01b03163314611c455760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b60145460ff16611cbd5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610be5565b601654611cd4906001600160a01b03166000611991565b601680546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6016546001600160a01b03163314611d6a5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b600b805460ff19166001179055565b6016546001600160a01b03163314611dc15760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b80611e34576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610c4357600080fd5b60025415611e9b576203f48060025442611e4e91906141dd565b11611e9b5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610be5565b6001600160a01b03821660009081526001602052604090205460ff1615611f045760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610be5565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610c29565b6016546000906001600160a01b03163314611fae5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b600b54611fcd90309061010090046001600160a01b0316600019612e45565b50600190565b6016546001600160a01b0316331461201b5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b60145460ff161561206e5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610be5565b601454610100900460ff166120c55760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610be5565b6014546201000090046001600160a01b03166120f5576014805462010000600160b01b0319163062010000021790555b601454600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561216757600080fd5b505af1925050508015612178575060015b50601454600c546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af19250505080156121fb575060408051601f3d908101601f191682019092526121f891810190614269565b60015b1561220a57600e91909155600f555b6014805460ff1990811660011790915560098054909116905542601555565b6000612236338484612f3e565b5060019392505050565b6016546001600160a01b031633146122885760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b601454610100900460ff16156122f057306001600160a01b038216036122f05760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610be5565b6016546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015612347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236b919061428d565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156123b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e591906142a6565b6017546001600160a01b031633146124455760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610be5565b6018546001600160a01b03168015612482576001600160a01b0381166000908152600460205260408120805460ff19169055612482908290611991565b601880546001600160a01b0319166001600160a01b0384169081179091556000908152600460205260409020805460ff19166001908117909155610ddb908390611991565b6016546001600160a01b0316331461250f5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b600d805460ff60a81b1916600160a81b841515908102919091179091556010805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6016546001600160a01b031633146125ba5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b601454610100900460ff16156126125760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610be5565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267b91906142c3565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ec91906142c3565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275b91906142c3565b600c546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166128f157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ea91906142c3565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285b91906142c3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156128a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128cc91906142c3565b600c80546001600160a01b0319166001600160a01b039290921691909117905561290d565b600c80546001600160a01b0319166001600160a01b0383161790555b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c5482166000908152600160208190526040909120805460ff1916909117905591546111e5923092910416600019612e45565b6016546001600160a01b031633146129bb5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b6001600160a01b038116612a115760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610be5565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6016546001600160a01b03163314612a7b5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b601454610100900460ff1615612ad35760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610be5565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611bdf573d6000803e3d6000fd5b6016546001600160a01b03163314612b545760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b8284612b626009600a614195565b612b719064e8d4a510006141c6565b612b7b91906141c6565b612b8591906141a4565b600e558082612b966009600a614195565b612ba59064e8d4a510006141c6565b612baf91906141c6565b612bb991906141a4565b600f819055600e541115612c195760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610be5565b600c546001600160a01b031660009081526020819052604090205461271090612c439060966141c6565b612c4d91906141a4565b600f541115612caa5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610be5565b620f4240612cba6009600a614195565b612cc99064e8d4a510006141c6565b612cd391906141a4565b600f541015612d3b5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610be5565b620f4240612d4b6009600a614195565b612d5a9064e8d4a510006141c6565b612d6491906141a4565b600e541015612dcc5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610be5565b50505050565b6016546001600160a01b03163314612e1a5760405162461bcd60e51b815260206004820152601160248201526000805160206143528339815191526044820152606401610be5565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612e915760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610be5565b6001600160a01b038216612edd5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610be5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612fa45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610be5565b6001600160a01b0383166130065760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610be5565b600082116130685760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610be5565b6001600160a01b0384166000908152600160205260408120548190819060ff161561309657600192506130c4565b6001600160a01b03861660009081526001602052604090205460ff16156130c057600191506130c4565b5060015b6130ce8787613711565b1561335b5760145460ff166131cf578061312a5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610be5565b6001600160a01b03871660009081526005602052604090205460ff1615801561316c57506001600160a01b03861660009081526005602052604090205460ff16155b156131cf5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610be5565b82806131d85750815b15613287576001600160a01b03871660009081526007602052604090205460ff1615801561321f57506001600160a01b03861660009081526007602052604090205460ff16155b15613287576012548511156132875760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610be5565b600b546001600160a01b0387811661010090920416148015906132a8575081155b1561335b576001600160a01b03861660009081526007602052604090205460ff1661335b57601354856132f0886001600160a01b031660009081526020819052604090205490565b6132fa9190614227565b111561335b5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610be5565b811561344557600d54600160a01b900460ff1661344557600d54600160a81b900460ff1680156133a457506001600160a01b03861660009081526008602052604090205460ff16155b80156133c957506001600160a01b03871660009081526008602052604090205460ff16155b156134455730600090815260208190526040902054600e54811061344357600f5460105460ff161561342d57601154600c546001600160a01b031660009081526020819052604090205461271091613420916141c6565b61342a91906141a4565b90505b808210613438578091505b61344182613828565b505b505b61345387878786868661345e565b979650505050505050565b600061346a8787613711565b156135045760145460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156134ed575060408051601f3d908101601f191682019092526134ea918101906142a6565b60015b6134f657600080fd5b90508061350257600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061354657506001600160a01b03871660009081526006602052604090205460ff165b1561354f575060005b6001600160a01b038816600090815260208190526040812080548892906135779084906141dd565b90915550600090508161358a5786613596565b61359689888888613a6c565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546135cc9190614227565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161361891815260200190565b60405180910390a3601454610100900460ff16613702576136398989613b78565b601454610100900460ff1615801561365657506136568989613711565b801561367b57506001600160a01b03891660009081526005602052604090205460ff16155b80156136a057506001600160a01b03881660009081526005602052604090205460ff16155b80156136aa575083155b156137025760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610be5565b50600198975050505050505050565b6016546000906001600160a01b0384811691161480159061374057506016546001600160a01b03838116911614155b801561375757506016546001600160a01b03163214155b801561377c57506001600160a01b03821660009081526004602052604090205460ff16155b80156137a157506001600160a01b03831660009081526004602052604090205460ff16155b80156137b857506001600160a01b03821661dead14155b80156137cc57506001600160a01b03821615155b80156137e157506001600160a01b0383163014155b801561380157506014546001600160a01b03848116620100009092041614155b801561382157506014546001600160a01b03838116620100009092041614155b9392505050565b600d805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600b5461010090046001600160a01b031684529091529020546000191461389e57306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106138d3576138d36141f0565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396a91906142c3565b8160018151811061397d5761397d6141f0565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac947906139ca9085906000908690309042906004016142e0565b600060405180830381600087803b1580156139e457600080fd5b505af19250505080156139f5575060015b6139ff5750613a5c565b600d546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d8060008114613a51576040519150601f19603f3d011682016040523d82523d6000602084013e613a56565b606091505b50505050505b50600d805460ff60a01b19169055565b6000808315613a825750600a5461ffff16613aac565b8215613a9b5750600a5462010000900461ffff16613aac565b50600a54640100000000900461ffff165b80600003613abd5784915050610ee1565b6014546201000090046001600160a01b031630148015613ade575046606114155b15613ae857506111945b6000612710613af783886141c6565b613b0191906141a4565b90508015613b6e573060009081526020819052604081208054839290613b28908490614227565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61345381876141dd565b601454610100900460ff1615613bdc5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610be5565b613be68282613711565b158015613c005750600c546001600160a01b038281169116145b15610ddb576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff001916610100179081905562010000900416613c78576014805462010000600160b01b0319163062010000021790555b600d805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612566565b8015158114611bdf57600080fd5b60008060408385031215613cdd57600080fd5b8235613ce881613cbc565b91506020830135613cf881613cbc565b809150509250929050565b600060208083528351808285015260005b81811015613d3057858101830151858201604001528201613d14565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611bdf57600080fd5b60008060408385031215613d7957600080fd5b8235613d8481613d51565b946020939093013593505050565b600060208284031215613da457600080fd5b813561382181613d51565b60008060408385031215613dc257600080fd5b8235613dcd81613d51565b91506020830135613cf881613d51565b600080600060608486031215613df257600080fd5b8335613dfd81613d51565b92506020840135613e0d81613d51565b929592945050506040919091013590565b60008060408385031215613e3157600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613e7f57613e7f613e40565b604052919050565b600067ffffffffffffffff821115613ea157613ea1613e40565b5060051b60200190565b600082601f830112613ebc57600080fd5b81356020613ed1613ecc83613e87565b613e56565b82815260059290921b84018101918181019086841115613ef057600080fd5b8286015b84811015613f0b5780358352918301918301613ef4565b509695505050505050565b60008060408385031215613f2957600080fd5b823567ffffffffffffffff80821115613f4157600080fd5b818501915085601f830112613f5557600080fd5b81356020613f65613ecc83613e87565b82815260059290921b84018101918181019089841115613f8457600080fd5b948201945b83861015613fab578535613f9c81613d51565b82529482019490820190613f89565b96505086013592505080821115613fc157600080fd5b50613fce85828601613eab565b9150509250929050565b803561ffff81168114613fea57600080fd5b919050565b60008060006060848603121561400457600080fd5b61400d84613fd8565b925061401b60208501613fd8565b915061402960408501613fd8565b90509250925092565b6000806040838503121561404557600080fd5b8235613ce881613d51565b60006020828403121561406257600080fd5b5035919050565b6000806000806080858703121561407f57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156140ec5781600019048211156140d2576140d261409b565b808516156140df57918102915b93841c93908002906140b6565b509250929050565b60008261410357506001610c70565b8161411057506000610c70565b816001811461412657600281146141305761414c565b6001915050610c70565b60ff8411156141415761414161409b565b50506001821b610c70565b5060208310610133831016604e8410600b841016171561416f575081810a610c70565b61417983836140b1565b806000190482111561418d5761418d61409b565b029392505050565b600061382160ff8416836140f4565b6000826141c157634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610c7057610c7061409b565b81810381811115610c7057610c7061409b565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361421d5761421d61409b565b6001019392505050565b80820180821115610c7057610c7061409b565b6000806040838503121561424d57600080fd5b825161425881613d51565b6020840151909250613cf881613d51565b6000806040838503121561427c57600080fd5b505080516020909101519092909150565b60006020828403121561429f57600080fd5b5051919050565b6000602082840312156142b857600080fd5b815161382181613cbc565b6000602082840312156142d557600080fd5b815161382181613d51565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156143305784516001600160a01b03168352938301939183019160010161430b565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a264697066735822122028fd1393bb8fc3908ad60c56571c2ff5ecb0a18d4ce6368b87ebebcd8b5fc4ca64736f6c63430008130033

Deployed Bytecode Sourcemap

4090:22221:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5487:73;;;;;;;;;;;;5518:42;5487:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5487:73:0;;;;;;;;5736:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;5736:28:0;245:177:1;14677:153:0;;;;;;;;;;-1:-1:-1;14677:153:0;;;;;:::i;:::-;;:::i;:::-;;5079:105;;;;;;;;;;-1:-1:-1;5079:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;1137:6:1;1170:15;;;1152:34;;1222:15;;;1217:2;1202:18;;1195:43;1274:15;;1254:18;;;1247:43;;;;1115:2;1100:18;5079:105:0;931:365:1;10124:80:0;;;;;;;;;;-1:-1:-1;10196:5:0;;;;;;;;;;;;-1:-1:-1;;;10196:5:0;;;;10124:80;;;;;;;:::i;5426:26::-;;;;;;;;;;-1:-1:-1;5426:26:0;;;;;;;-1:-1:-1;;;;;5426:26:0;;;5393;;;;;;;;;;-1:-1:-1;5393:26:0;;;;;;;;;;;2267:14:1;;2260:22;2242:41;;2230:2;2215:18;5393:26:0;2102:187:1;10732:161:0;;;;;;;;;;-1:-1:-1;10732:161:0;;;;;:::i;:::-;;:::i;14106:140::-;;;;;;;;;;-1:-1:-1;14106:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14204:34:0;14180:4;14204:34;;;:25;:34;;;;;;;;;14106:140;16357:114;;;;;;;;;;;;;:::i;17879:809::-;;;;;;;;;;-1:-1:-1;17879:809:0;;;;;:::i;:::-;;:::i;9859:83::-;;;;;;;;;;;;;:::i;11402:306::-;;;;;;;;;;-1:-1:-1;11402:306:0;;;;;:::i;:::-;;:::i;15969:264::-;;;;;;;;;;-1:-1:-1;15969:264:0;;;;;:::i;:::-;;:::i;24023:447::-;;;;;;;;;;-1:-1:-1;24023:447:0;;;;;:::i;:::-;;:::i;5844:33::-;;;;;;;;;;;;;;;;14410:141;;;;;;;;;;;;;:::i;5193:41::-;;;;;;;;;;;;5231:3;5193:41;;5771:25;;;;;;;;;;;;;;;;9948:80;;;;;;;;;;-1:-1:-1;9948:80:0;;4891:1;6761:36:1;;6749:2;6734:18;9948:80:0;6619:184:1;15028:453:0;;;;;;;;;;-1:-1:-1;15028:453:0;;;;;:::i;:::-;;:::i;14559:110::-;;;;;;;;;;-1:-1:-1;14559:110:0;;;;;:::i;:::-;;:::i;13681:140::-;;;;;;;;;;-1:-1:-1;13681:140:0;;;;;:::i;:::-;;:::i;9242:221::-;;;;;;;;;;;;;:::i;15688:273::-;;;;;;;;;;-1:-1:-1;15688:273:0;;;;;:::i;:::-;;:::i;5459:21::-;;;;;;;;;;-1:-1:-1;5459:21:0;;;;-1:-1:-1;;;;;5459:21:0;;;6012:34;;;;;;;;;;-1:-1:-1;6012:34:0;;;;;;;;16479:189;;;;;;;;;;-1:-1:-1;16479:189:0;;;;;:::i;:::-;;:::i;17383:217::-;;;;;;;;;;-1:-1:-1;17383:217:0;;;;;:::i;:::-;;:::i;7549:654::-;;;;;;;;;;-1:-1:-1;7549:654:0;;;;;:::i;:::-;;:::i;13829:127::-;;;;;;;;;;-1:-1:-1;13829:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13920:28:0;13896:4;13920:28;;;:19;:28;;;;;;;;;13829:127;6053:36;;;;;;;;;;-1:-1:-1;6053:36:0;;;;;;;;;;;8567:23;;;;;;;;;;-1:-1:-1;8567:23:0;;;;-1:-1:-1;;;;;8567:23:0;;;13964:134;;;;;;;;;;-1:-1:-1;13964:134:0;;;;;:::i;:::-;;:::i;6126:26::-;;;;;;;;;;;;;;;;12976:557;;;;;;;;;;-1:-1:-1;12976:557:0;;;;;:::i;:::-;;:::i;13541:132::-;;;;;;;;;;-1:-1:-1;13541:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;13635:30:0;13611:4;13635:30;;;:21;:30;;;;;;;;;13541:132;16241:108;;;;;;;;;;;;;:::i;10434:117::-;;;;;;;;;;-1:-1:-1;10434:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;10527:16:0;10500:7;10527:16;;;;;;;;;;;;10434:117;8211:310;;;;;;;;;;;;;:::i;5567:92::-;;;;;;;;;;-1:-1:-1;5567:92:0;;;;-1:-1:-1;;;;;5567:92:0;;;14838:182;;;;;;;;;;;;;:::i;12404:564::-;;;;;;;;;;-1:-1:-1;12404:564:0;;;;;:::i;:::-;;:::i;8529:31::-;;;;;;;;;;-1:-1:-1;8529:31:0;;;;-1:-1:-1;;;;;8529:31:0;;;10210:79;;;;;;;;;;-1:-1:-1;10280:6:0;;-1:-1:-1;;;;;10280:6:0;10210:79;;11219:175;;;;;;;;;;;;;:::i;22784:737::-;;;;;;;;;;;;;:::i;10034:84::-;;;;;;;;;;-1:-1:-1;10108:7:0;;;;;;;;;;;;-1:-1:-1;;;10108:7:0;;;;10034:84;;10559:165;;;;;;;;;;-1:-1:-1;10559:165:0;;;;;:::i;:::-;;:::i;23719:296::-;;;;;;;;;;-1:-1:-1;23719:296:0;;;;;:::i;:::-;;:::i;8752:482::-;;;;;;;;;;-1:-1:-1;8752:482:0;;;;;:::i;:::-;;:::i;5803:34::-;;;;;;;;;;-1:-1:-1;5803:34:0;;;;;;;;17608:263;;;;;;;;;;-1:-1:-1;17608:263:0;;;;;:::i;:::-;;:::i;10295:133::-;;;;;;;;;;-1:-1:-1;10295:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10397:19:0;;;10379:7;10397:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10295:133;11716:680;;;;;;;;;;-1:-1:-1;11716:680:0;;;;;:::i;:::-;;:::i;15489:191::-;;;;;;;;;;-1:-1:-1;15489:191:0;;;;;:::i;:::-;;:::i;23529:182::-;;;;;;;;;;;;;:::i;16676:699::-;;;;;;;;;;-1:-1:-1;16676:699:0;;;;;:::i;:::-;;:::i;5690:39::-;;;;;;;;;;-1:-1:-1;5690:39:0;;;;-1:-1:-1;;;5690:39:0;;;;;;14254:148;;;;;;;;;;-1:-1:-1;14254:148:0;;;;;:::i;:::-;;:::i;14677:153::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;;;;;;;;;14772:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;14772:50:0;;9307:14:1;;9300:22;14772:50:0::1;::::0;::::1;9282:41:1::0;9366:14;;9359:22;9339:18;;;9332:50;14772:11:0;;;::::1;-1:-1:-1::0;;;;;14772:11:0::1;::::0;:26:::1;::::0;9255:18:1;;14772:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14677:153:::0;;:::o;10732:161::-;10809:4;10826:37;10835:10;10847:7;10856:6;10826:8;:37::i;:::-;-1:-1:-1;10881:4:0;10732:161;;;;;:::o;16357:114::-;16404:7;16449:13;4891:1;16449:2;:13;:::i;:::-;16431:14;;:32;;;;:::i;:::-;16424:39;;16357:114;:::o;17879:809::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;17983:23:::1;::::0;::::1;;17975:32;;;::::0;::::1;;-1:-1:-1::0;;;;;18026:23:0;::::1;18044:4;18026:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;18071:24:0;::::1;18090:4;18071:24;;18026:69;:107;;;;-1:-1:-1::0;18117:6:0::1;::::0;-1:-1:-1;;;;;18117:16:0;;::::1;:6:::0;::::1;:16;;18026:107;:146;;;;-1:-1:-1::0;18155:6:0::1;::::0;-1:-1:-1;;;;;18155:17:0;;::::1;:6:::0;::::1;:17;;18026:146;18018:170;;;::::0;-1:-1:-1;;;18018:170:0;;11332:2:1;18018:170:0::1;::::0;::::1;11314:21:1::0;11371:2;11351:18;;;11344:30;-1:-1:-1;;;11390:18:1;;;11383:41;11441:18;;18018:170:0::1;11130:335:1::0;18018:170:0::1;18213:7;-1:-1:-1::0;;;;;18203:17:0::1;:6;-1:-1:-1::0;;;;;18203:17:0::1;::::0;18199:482:::1;;-1:-1:-1::0;;;;;18237:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;18266:4:::1;-1:-1:-1::0;;18237:33:0;;::::1;::::0;::::1;::::0;;;18285:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;18332:34:::1;::::0;18237:26;;18332:19:::1;:34::i;:::-;17879:809:::0;;:::o;18199:482::-:1;-1:-1:-1::0;;;;;18399:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;18427:4:::1;-1:-1:-1::0;;18399:32:0;;::::1;::::0;::::1;::::0;;;18446:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;18494:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;18540:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;18587:33:::1;::::0;18399:25;;18587:19:::1;:33::i;:::-;18635:34;18655:7;18664:4;18635:19;:34::i;9859:83::-:0;9914:7;4951:13;4891:1;4951:2;:13;:::i;:::-;4934:30;;4735:17;4934:30;:::i;11402:306::-;-1:-1:-1;;;;;11523:19:0;;11502:4;11523:19;;;:11;:19;;;;;;;;11543:10;11523:31;;;;;;;;-1:-1:-1;;11523:52:0;11519:126;;-1:-1:-1;;;;;11592:19:0;;;;;;:11;:19;;;;;;;;11612:10;11592:31;;;;;;;:41;;11627:6;;11592:19;:41;;11627:6;;11592:41;:::i;:::-;;;;-1:-1:-1;;11519:126:0;11664:36;11674:6;11682:9;11693:6;11664:9;:36::i;:::-;11657:43;11402:306;-1:-1:-1;;;;11402:306:0:o;15969:264::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;16111:3:::1;4951:13;4891:1;4951:2;:13;:::i;:::-;4934:30;::::0;4735:17:::1;4934:30;:::i;:::-;16101:13;;;;:::i;:::-;16089:7:::0;16078;4951:13:::1;4891:1;4951:2;:13;:::i;:::-;4934:30;::::0;4735:17:::1;4934:30;:::i;:::-;16068:17;;;;:::i;:::-;16067:29;;;;:::i;:::-;:48;;16059:109;;;::::0;-1:-1:-1;;;16059:109:0;;11978:2:1;16059:109:0::1;::::0;::::1;11960:21:1::0;12017:2;11997:18;;;11990:30;12056:34;12036:18;;;12029:62;12127:18;12107;;;12100:46;12163:19;;16059:109:0::1;11776:412:1::0;16059:109:0::1;16218:7:::0;16207;4951:13:::1;4891:1;4951:2;:13;:::i;:::-;4934:30;::::0;4735:17:::1;4934:30;:::i;:::-;16197:17;;;;:::i;:::-;16196:29;;;;:::i;:::-;16179:14;:46:::0;-1:-1:-1;;15969:264:0:o;24023:447::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;24158:7:::1;:14;24139:8;:15;:33;24131:67;;;::::0;-1:-1:-1;;;24131:67:0;;12395:2:1;24131:67:0::1;::::0;::::1;12377:21:1::0;12434:2;12414:18;;;12407:30;12473:23;12453:18;;;12446:51;12514:18;;24131:67:0::1;12193:345:1::0;24131:67:0::1;24214:8;24209:254;24232:8;:15;24228:1;:19;;;24209:254;;;24313:13;4891:1;24313:2;:13;:::i;:::-;24302:7;24310:1;24302:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24287:10;10500:7:::0;10527:16;;;;;;;;;;;24277:49:::1;;24269:80;;;::::0;-1:-1:-1;;;24269:80:0;;12877:2:1;24269:80:0::1;::::0;::::1;12859:21:1::0;12916:2;12896:18;;;12889:30;12955:20;12935:18;;;12928:48;12993:18;;24269:80:0::1;12675:342:1::0;24269:80:0::1;24364:87;24381:10;24393:8;24402:1;24393:11;;;;;;;;;;:::i;:::-;;;;;;;4891:1;24417:2;:13;;;;:::i;:::-;24406:7;24414:1;24406:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24432:5;24439::::0;24446:4:::1;24364:16;:87::i;:::-;-1:-1:-1::0;24249:3:0;::::1;::::0;::::1;:::i;:::-;;;;24209:254;;;;24023:447:::0;;:::o;14410:141::-;14463:7;10527:16;;;;;;5518:42;10527:16;;;;14502:39;;10527:16;14502:39;:::i;:::-;4951:13;4891:1;4951:2;:13;:::i;:::-;4934:30;;4735:17;4934:30;:::i;:::-;14491:51;;;;:::i;15028:453::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;15136:14:::1;::::0;::::1;;15135:15;15127:45;;;::::0;-1:-1:-1;;;15127:45:0;;13556:2:1;15127:45:0::1;::::0;::::1;13538:21:1::0;13595:2;13575:18;;;13568:30;13634:19;13614:18;;;13607:47;13671:18;;15127:45:0::1;13354:341:1::0;15127:45:0::1;5231:3;15191:6;:21;;;;:65;;;;;5280:3;15233:7;:23;;;;15191:65;:117;;;;;5333:3;15277:11;:31;;;;15191:117;15183:170;;;::::0;-1:-1:-1;;;15183:170:0;;13902:2:1;15183:170:0::1;::::0;::::1;13884:21:1::0;13941:2;13921:18;;;13914:30;13980:25;13960:18;;;13953:53;14023:18;;15183:170:0::1;13700:347:1::0;15183:170:0::1;15364:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;15400:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;15438:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;15028:453::o;14559:110::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;14628:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;14628:33:0;;-1:-1:-1;;;;;178:55:1;;;14628:33:0::1;::::0;::::1;160:74:1::0;14628:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;14628:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14559:110:::0;:::o;13681:140::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;-1:-1:-1;;;;;13773:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;13773:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13681:140::o;9242:221::-;9320:16;;-1:-1:-1;;;;;9320:16:0;9306:10;:30;9298:83;;;;-1:-1:-1;;;9298:83:0;;14254:2:1;9298:83:0;;;14236:21:1;14293:2;14273:18;;;14266:30;14332:34;14312:18;;;14305:62;-1:-1:-1;;;14383:18:1;;;14376:38;14431:19;;9298:83:0;14052:404:1;9298:83:0;9392:23;9412:1;9392:11;:23::i;:::-;9426:16;:29;;-1:-1:-1;;;;;;9426:29:0;;;9242:221::o;15688:273::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;15833:4:::1;4951:13;4891:1;4951:2;:13;:::i;:::-;4934:30;::::0;4735:17:::1;4934:30;:::i;:::-;15819:11;::::0;15829:1:::1;15819:11;:::i;:::-;:18;;;;:::i;:::-;15807:7:::0;15796;4951:13:::1;4891:1;4951:2;:13;:::i;:::-;4934:30;::::0;4735:17:::1;4934:30;:::i;:::-;15786:17;;;;:::i;:::-;15785:29;;;;:::i;:::-;:53;;15777:121;;;::::0;-1:-1:-1;;;15777:121:0;;14663:2:1;15777:121:0::1;::::0;::::1;14645:21:1::0;14702:2;14682:18;;;14675:30;14741:34;14721:18;;;14714:62;14812:25;14792:18;;;14785:53;14855:19;;15777:121:0::1;14461:419:1::0;15777:121:0::1;15946:7:::0;15935;4951:13:::1;4891:1;4951:2;:13;:::i;:::-;4934:30;::::0;4735:17:::1;4934:30;:::i;:::-;15925:17;;;;:::i;:::-;15924:29;;;;:::i;:::-;15909:12;:44:::0;-1:-1:-1;;15688:273:0:o;16479:189::-;16608:6;;-1:-1:-1;;;;;16608:6:0;16570:7;10527:16;;;;;;;;;;;5379:5;;16598:41;;16618:21;;16598:41;:::i;:::-;16597:62;;;;:::i;17383:217::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;17513:3:::1;17487:22;:29;;17479:64;;;::::0;-1:-1:-1;;;17479:64:0;;15087:2:1;17479:64:0::1;::::0;::::1;15069:21:1::0;15126:2;15106:18;;;15099:30;15165:24;15145:18;;;15138:52;15207:18;;17479:64:0::1;14885:346:1::0;17479:64:0::1;17554:13;:38:::0;17383:217::o;7549:654::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;-1:-1:-1;;;;;7628:22:0;::::1;7620:96;;;::::0;-1:-1:-1;;;7620:96:0;;15438:2:1;7620:96:0::1;::::0;::::1;15420:21:1::0;15477:2;15457:18;;;15450:30;15516:34;15496:18;;;15489:62;15587:31;15567:18;;;15560:59;15636:19;;7620:96:0::1;15236:425:1::0;7620:96:0::1;-1:-1:-1::0;;;;;;;7735:16:0;::::1;::::0;7727:90:::1;;;::::0;-1:-1:-1;;;7727:90:0;;15438:2:1;7727:90:0::1;::::0;::::1;15420:21:1::0;15477:2;15457:18;;;15450:30;15516:34;15496:18;;;15489:62;15587:31;15567:18;;;15560:59;15636:19;;7727:90:0::1;15236:425:1::0;7727:90:0::1;7848:6;::::0;7828:34:::1;::::0;-1:-1:-1;;;;;7848:6:0::1;;7828:19;:34::i;:::-;7873:35;7893:8;7903:4;7873:19;:35::i;:::-;7943:6;::::0;-1:-1:-1;;;;;7943:6:0::1;7953:1;10527:16:::0;;;;;;;;;;;7933:21;7929:127:::1;;7988:6;::::0;-1:-1:-1;;;;;7988:6:0::1;10500:7:::0;10527:16;;;;;;;;;;;7971:73:::1;::::0;7988:6;7996:8;;8006:17:::1;10434:117:::0;7971:73:::1;;7929:127;8095:6;::::0;;-1:-1:-1;;;;;8112:17:0;;::::1;-1:-1:-1::0;;;;;;8112:17:0;::::1;::::0;::::1;::::0;;;8145:40:::1;::::0;8095:6;::::1;::::0;8112:17;8095:6;;8145:40:::1;::::0;8076:16:::1;::::0;8145:40:::1;7609:594;7549:654:::0;:::o;13964:134::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;-1:-1:-1;;;;;14052:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14052:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13964:134::o;12976:557::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;13051:14:::1;::::0;::::1;;13050:15;13042:24;;;::::0;::::1;;13101:4;-1:-1:-1::0;;;;;13085:21:0;::::1;::::0;13077:48:::1;;;::::0;-1:-1:-1;;;13077:48:0;;15868:2:1;13077:48:0::1;::::0;::::1;15850:21:1::0;15907:2;15887:18;;;15880:30;15946:16;15926:18;;;15919:44;15980:18;;13077:48:0::1;15666:338:1::0;13077:48:0::1;13136:11;:31:::0;;-1:-1:-1;;;;;;13136:31:0::1;::::0;-1:-1:-1;;;;;13136:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;13182:23:::1;::::0;;-1:-1:-1;;;13182:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;13182:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;13182:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;13182:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;13178:348;;13515:8;::::0;::::1;13178:348;13269:9;:29:::0;;-1:-1:-1;;13269:29:0::1;;-1:-1:-1::0;;;;;13269:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;13300:6:::1;:22:::0;;-1:-1:-1;;;;;;13300:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13324:15:0;;;-1:-1:-1;13324:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;13324:22:0::1;::::0;;::::1;::::0;;13371:6:::1;::::0;13387:9;;13362:55:::1;::::0;13371:6;::::1;::::0;13387:9;;::::1;;-1:-1:-1::0;;13362:8:0::1;:55::i;:::-;13464:9;::::0;13432:62:::1;::::0;13449:4:::1;::::0;13464:9:::1;::::0;::::1;-1:-1:-1::0;;;;;13464:9:0::1;-1:-1:-1::0;;13432:8:0::1;:62::i;13178:348::-;12976:557:::0;:::o;16241:108::-;16284:7;16327:13;4891:1;16327:2;:13;:::i;:::-;16311:12;;:30;;;;:::i;8211:310::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;8278:14:::1;::::0;::::1;;8270:74;;;::::0;-1:-1:-1;;;8270:74:0;;16601:2:1;8270:74:0::1;::::0;::::1;16583:21:1::0;16640:2;16620:18;;;16613:30;16679:34;16659:18;;;16652:62;16750:17;16730:18;;;16723:45;16785:19;;8270:74:0::1;16399:411:1::0;8270:74:0::1;8375:6;::::0;8355:34:::1;::::0;-1:-1:-1;;;;;8375:6:0::1;;8355:19;:34::i;:::-;8419:6;::::0;;-1:-1:-1;;;;;;8436:19:0;::::1;::::0;;;8471:42:::1;::::0;-1:-1:-1;;;;;8419:6:0;;::::1;::::0;8400:16:::1;::::0;8419:6;;8471:42:::1;::::0;8400:16;;8471:42:::1;8259:262;8211:310::o:0;14838:182::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;14991:14:::1;:21:::0;;-1:-1:-1;;14991:21:0::1;15008:4;14991:21;::::0;;14838:182::o;12404:564::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;12486:7:::1;12481:480;;-1:-1:-1::0;;;;;12510:13:0;;::::1;12526:5;12510:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12510:21:0::1;::::0;;12546:11:::1;::::0;:34;;-1:-1:-1;;;12546:34:0;;::::1;::::0;::::1;16983:74:1::0;;;;17073:18;;;17066:50;;;;12546:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;16956:18:1;;12546:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;12481:480;12617:17;::::0;:22;12613:135:::1;;12706:6;12686:17;;12668:15;:35;;;;:::i;:::-;:44;12660:72;;;::::0;-1:-1:-1;;;12660:72:0;;17329:2:1;12660:72:0::1;::::0;::::1;17311:21:1::0;17368:2;17348:18;;;17341:30;17407:17;17387:18;;;17380:45;17442:18;;12660:72:0::1;17127:339:1::0;12660:72:0::1;-1:-1:-1::0;;;;;12771:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;12770:14;12762:54;;;::::0;-1:-1:-1;;;12762:54:0;;17673:2:1;12762:54:0::1;::::0;::::1;17655:21:1::0;17712:2;17692:18;;;17685:30;17751:29;17731:18;;;17724:57;17798:18;;12762:54:0::1;17471:351:1::0;12762:54:0::1;-1:-1:-1::0;;;;;12831:13:0;;::::1;;::::0;;;12847:4:::1;12831:13;::::0;;;;;;;;:20;;-1:-1:-1;;12831:20:0::1;::::0;::::1;::::0;;12886:15:::1;12866:17;:35:::0;12916:11:::1;::::0;:33;;-1:-1:-1;;;12916:33:0;;::::1;::::0;::::1;16983:74:1::0;;;;17073:18;;;17066:50;12916:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;16956:18:1;;12916:33:0::1;16815:307:1::0;11219:175:0;7403:6;;11285:4;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;11334:9:::1;::::0;11302:62:::1;::::0;11319:4:::1;::::0;11334:9:::1;::::0;::::1;-1:-1:-1::0;;;;;11334:9:0::1;-1:-1:-1::0;;11302:8:0::1;:62::i;:::-;-1:-1:-1::0;11382:4:0::1;11219:175:::0;:::o;22784:737::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;22846:14:::1;::::0;::::1;;22845:15;22837:52;;;::::0;-1:-1:-1;;;22837:52:0;;18029:2:1;22837:52:0::1;::::0;::::1;18011:21:1::0;18068:2;18048:18;;;18041:30;18107:26;18087:18;;;18080:54;18151:18;;22837:52:0::1;17827:348:1::0;22837:52:0::1;22908:16;::::0;::::1;::::0;::::1;;;22900:53;;;::::0;-1:-1:-1;;;22900:53:0;;18382:2:1;22900:53:0::1;::::0;::::1;18364:21:1::0;18421:2;18401:18;;;18394:30;18460:26;18440:18;;;18433:54;18504:18;;22900:53:0::1;18180:348:1::0;22900:53:0::1;22976:11;::::0;;;::::1;-1:-1:-1::0;;;;;22976:11:0::1;22964:106;;23018:11;:40:::0;;-1:-1:-1;;;;;;23018:40:0::1;23052:4;23018:40:::0;::::1;;::::0;;22964:106:::1;23084:11;::::0;23106:6:::1;::::0;23084:87:::1;::::0;-1:-1:-1;;;23084:87:0;;-1:-1:-1;;;;;23106:6:0;;::::1;23084:87;::::0;::::1;18756:74:1::0;18878:10;23121:12:0::1;18866:23:1::0;18846:18;;;18839:51;18938:18;23143:15:0::1;18926:31:1::0;18906:18;;;18899:59;4891:1:0::1;18974:18:1::0;;;18967:45;23084:11:0;;;::::1;;::::0;:21:::1;::::0;18728:19:1;;23084:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;23197:11:0::1;::::0;23228:6:::1;::::0;-1:-1:-1;;;;;23228:6:0;;::::1;10500:7:::0;10527:16;;;;;;;;;;;;;23197:39;;-1:-1:-1;;;23197:39:0;;::::1;::::0;::::1;391:25:1::0;;;;23197:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;23197:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;23197:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;23197:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;23193:207:::0;::::1;;23308:13;:29:::0;;;;23352:10:::1;:27:::0;23193:207:::1;23410:14;:21:::0;;-1:-1:-1;;23410:21:0;;::::1;23427:4;23410:21;::::0;;;23442:23:::1;:31:::0;;;;::::1;::::0;;23498:15:::1;23484:11;:29:::0;22784:737::o;10559:165::-;10637:4;10654:40;10664:10;10676:9;10687:6;10654:9;:40::i;:::-;-1:-1:-1;10712:4:0;;10559:165;-1:-1:-1;;;10559:165:0:o;23719:296::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;23797:16:::1;::::0;::::1;::::0;::::1;;;23793:111;;;23855:4;-1:-1:-1::0;;;;;23838:22:0;::::1;::::0;23830:62:::1;;;::::0;-1:-1:-1;;;23830:62:0;;19475:2:1;23830:62:0::1;::::0;::::1;19457:21:1::0;19514:2;19494:18;;;19487:30;19553:29;19533:18;;;19526:57;19600:18;;23830:62:0::1;19273:351:1::0;23830:62:0::1;23968:6;::::0;23976:30:::1;::::0;-1:-1:-1;;;23976:30:0;;24000:4:::1;23976:30;::::0;::::1;160:74:1::0;23936:5:0;;-1:-1:-1;;;;;23953:14:0;;::::1;::::0;::::1;::::0;23968:6;;;::::1;::::0;23953:14;;23976:15:::1;::::0;133:18:1;;23976:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23953:54;::::0;-1:-1:-1;;;;;;23953:54:0::1;::::0;;;;;;-1:-1:-1;;;;;20010:55:1;;;23953:54:0::1;::::0;::::1;19992:74:1::0;20082:18;;;20075:34;19965:18;;23953:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8752:482::-:0;8834:16;;-1:-1:-1;;;;;8834:16:0;8820:10;:30;8812:83;;;;-1:-1:-1;;;8812:83:0;;14254:2:1;8812:83:0;;;14236:21:1;14293:2;14273:18;;;14266:30;14332:34;14312:18;;;14305:62;-1:-1:-1;;;14383:18:1;;;14376:38;14431:19;;8812:83:0;14052:404:1;8812:83:0;8928:8;;-1:-1:-1;;;;;8928:8:0;8951:25;;8947:150;;-1:-1:-1;;;;;8993:30:0;;9026:5;8993:30;;;:17;:30;;;;;:38;;-1:-1:-1;;8993:38:0;;;9046:39;;9011:11;;9046:19;:39::i;:::-;9107:8;:22;;-1:-1:-1;;;;;;9107:22:0;-1:-1:-1;;;;;9107:22:0;;;;;;;;-1:-1:-1;9140:30:0;;;:17;:30;;;;;:37;;-1:-1:-1;;9140:37:0;-1:-1:-1;9140:37:0;;;;;;9188:38;;9107:22;;9188:19;:38::i;17608:263::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;17717:19:::1;:33:::0;;-1:-1:-1;;;;17717:33:0::1;-1:-1:-1::0;;;17717:33:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;17761:22:::1;:47:::0;;-1:-1:-1;;17761:47:0::1;::::0;::::1;;;::::0;;17824:39:::1;::::0;2242:41:1;;;17824:39:0::1;::::0;2230:2:1;2215:18;17824:39:0::1;;;;;;;;17608:263:::0;;:::o;11716:680::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;11796:16:::1;::::0;::::1;::::0;::::1;;;11795:17;11787:60;;;::::0;-1:-1:-1;;;11787:60:0;;20572:2:1;11787:60:0::1;::::0;::::1;20554:21:1::0;20611:2;20591:18;;;20584:30;20650:32;20630:18;;;20623:60;20700:18;;11787:60:0::1;20370:354:1::0;11787:60:0::1;11858:20;11891:9;11858:43;;11912:16;11942:10;-1:-1:-1::0;;;;;11942:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11931:40:0::1;;11980:4;11987:10;-1:-1:-1::0;;;;;11987:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11931:74;::::0;-1:-1:-1;;;;;;11931:74:0::1;::::0;;;;;;-1:-1:-1;;;;;21238:15:1;;;11931:74:0::1;::::0;::::1;21220:34:1::0;21290:15;;21270:18;;;21263:43;21132:18;;11931:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12024:6;::::0;-1:-1:-1;;;;;12024:6:0;;::::1;12034:5;12016:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;12016:23:0::1;::::0;;11912:93;;-1:-1:-1;12054:22:0;::::1;12050:200;;12113:10;-1:-1:-1::0;;;;;12113:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12102:43:0::1;;12154:4;12161:10;-1:-1:-1::0;;;;;12161:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12102:77;::::0;-1:-1:-1;;;;;;12102:77:0::1;::::0;;;;;;-1:-1:-1;;;;;21238:15:1;;;12102:77:0::1;::::0;::::1;21220:34:1::0;21290:15;;21270:18;;;21263:43;21132:18;;12102:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12093:6;:86:::0;;-1:-1:-1;;;;;;12093:86:0::1;-1:-1:-1::0;;;;;12093:86:0;;;::::1;::::0;;;::::1;::::0;;12050:200:::1;;;12221:6;:17:::0;;-1:-1:-1;;;;;;12221:17:0::1;-1:-1:-1::0;;;;;12221:17:0;::::1;;::::0;;12050:200:::1;12260:9;:22:::0;;-1:-1:-1;;12260:22:0::1;;-1:-1:-1::0;;;;;12260:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12301:6:::1;::::0;;::::1;-1:-1:-1::0;12293:15:0;;;-1:-1:-1;12293:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12293:22:0::1;::::0;;::::1;::::0;;12358:9;;12326:62:::1;::::0;12343:4:::1;::::0;12358:9;::::1;;-1:-1:-1::0;;12326:8:0::1;:62::i;15489:191::-:0;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;-1:-1:-1;;;;;15574:23:0;::::1;15566:59;;;::::0;-1:-1:-1;;;15566:59:0;;21519:2:1;15566:59:0::1;::::0;::::1;21501:21:1::0;21558:2;21538:18;;;21531:30;21597:25;21577:18;;;21570:53;21640:18;;15566:59:0::1;21317:347:1::0;15566:59:0::1;15636:15;:36:::0;;-1:-1:-1;;;;;;15636:36:0::1;-1:-1:-1::0;;;;;15636:36:0;;;::::1;::::0;;;::::1;::::0;;15489:191::o;23529:182::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;23596:16:::1;::::0;::::1;::::0;::::1;;;23595:17;23587:58;;;::::0;-1:-1:-1;;;23587:58:0;;21871:2:1;23587:58:0::1;::::0;::::1;21853:21:1::0;21910:2;21890:18;;;21883:30;21949;21929:18;;;21922:58;21997:18;;23587:58:0::1;21669:352:1::0;23587:58:0::1;23664:6;::::0;23656:47:::1;::::0;-1:-1:-1;;;;;23664:6:0;;::::1;::::0;23681:21:::1;23656:47:::0;::::1;;;::::0;23664:6:::1;23656:47:::0;23664:6;23656:47;23681:21;23664:6;23656:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;16676:699:::0;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;16876:16;16856;4951:13:::1;4891:1;4951:2;:13;:::i;:::-;4934:30;::::0;4735:17:::1;4934:30;:::i;:::-;16846:26;;;;:::i;:::-;16845:47;;;;:::i;:::-;16829:13;:63:::0;16944:13;16927;4951::::1;4891:1;4951:2;:13;:::i;:::-;4934:30;::::0;4735:17:::1;4934:30;:::i;:::-;16917:23;;;;:::i;:::-;16916:41;;;;:::i;:::-;16903:10;:54:::0;;;16976:13:::1;::::0;:27:::1;;16968:73;;;::::0;-1:-1:-1;;;16968:73:0;;22228:2:1;16968:73:0::1;::::0;::::1;22210:21:1::0;22267:2;22247:18;;;22240:30;22306:34;22286:18;;;22279:62;-1:-1:-1;;;22357:18:1;;;22350:31;22398:19;;16968:73:0::1;22026:397:1::0;16968:73:0::1;17085:6;::::0;-1:-1:-1;;;;;17085:6:0::1;10500:7:::0;10527:16;;;;;;;;;;;5379:5:::1;::::0;17075:23:::1;::::0;17095:3:::1;17075:23;:::i;:::-;17074:44;;;;:::i;:::-;17060:10;;:58;;17052:106;;;::::0;-1:-1:-1;;;17052:106:0;;22630:2:1;17052:106:0::1;::::0;::::1;22612:21:1::0;22669:2;22649:18;;;22642:30;22708:34;22688:18;;;22681:62;-1:-1:-1;;;22759:18:1;;;22752:33;22802:19;;17052:106:0::1;22428:399:1::0;17052:106:0::1;17201:9;4951:13;4891:1;4951:2;:13;:::i;:::-;4934:30;::::0;4735:17:::1;4934:30;:::i;:::-;17191:19;;;;:::i;:::-;17177:10;;:33;;17169:92;;;::::0;-1:-1:-1;;;17169:92:0;;23034:2:1;17169:92:0::1;::::0;::::1;23016:21:1::0;23073:2;23053:18;;;23046:30;23112:34;23092:18;;;23085:62;-1:-1:-1;;;23163:18:1;;;23156:44;23217:19;;17169:92:0::1;22832:410:1::0;17169:92:0::1;17307:9;4951:13;4891:1;4951:2;:13;:::i;:::-;4934:30;::::0;4735:17:::1;4934:30;:::i;:::-;17297:19;;;;:::i;:::-;17280:13;;:36;;17272:95;;;::::0;-1:-1:-1;;;17272:95:0;;23034:2:1;17272:95:0::1;::::0;::::1;23016:21:1::0;23073:2;23053:18;;;23046:30;23112:34;23092:18;;;23085:62;-1:-1:-1;;;23163:18:1;;;23156:44;23217:19;;17272:95:0::1;22832:410:1::0;17272:95:0::1;16676:699:::0;;;;:::o;14254:148::-;7403:6;;-1:-1:-1;;;;;7403:6:0;7413:10;7403:20;7395:50;;;;-1:-1:-1;;;7395:50:0;;8976:2:1;7395:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;7395:50:0;8774:341:1;7395:50:0;-1:-1:-1;;;;;14350:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;14350:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14254:148::o;10901:310::-;-1:-1:-1;;;;;10996:20:0;;10988:52;;;;-1:-1:-1;;;10988:52:0;;23449:2:1;10988:52:0;;;23431:21:1;23488:2;23468:18;;;23461:30;-1:-1:-1;;;23507:18:1;;;23500:49;23566:18;;10988:52:0;23247:343:1;10988:52:0;-1:-1:-1;;;;;11059:21:0;;11051:53;;;;-1:-1:-1;;;11051:53:0;;23449:2:1;11051:53:0;;;23431:21:1;23488:2;23468:18;;;23461:30;-1:-1:-1;;;23507:18:1;;;23500:49;23566:18;;11051:53:0;23247:343:1;11051:53:0;-1:-1:-1;;;;;11117:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11170:33;;391:25:1;;;11170:33:0;;364:18:1;11170:33:0;;;;;;;10901:310;;;:::o;19150:2286::-;19229:4;-1:-1:-1;;;;;19254:18:0;;19246:68;;;;-1:-1:-1;;;19246:68:0;;23797:2:1;19246:68:0;;;23779:21:1;23836:2;23816:18;;;23809:30;23875:34;23855:18;;;23848:62;-1:-1:-1;;;23926:18:1;;;23919:35;23971:19;;19246:68:0;23595:401:1;19246:68:0;-1:-1:-1;;;;;19333:16:0;;19325:64;;;;-1:-1:-1;;;19325:64:0;;24203:2:1;19325:64:0;;;24185:21:1;24242:2;24222:18;;;24215:30;24281:34;24261:18;;;24254:62;-1:-1:-1;;;24332:18:1;;;24325:33;24375:19;;19325:64:0;24001:399:1;19325:64:0;19417:1;19408:6;:10;19400:64;;;;-1:-1:-1;;;19400:64:0;;24607:2:1;19400:64:0;;;24589:21:1;24646:2;24626:18;;;24619:30;24685:34;24665:18;;;24658:62;-1:-1:-1;;;24736:18:1;;;24729:39;24785:19;;19400:64:0;24405:405:1;19400:64:0;-1:-1:-1;;;;;19563:13:0;;19475:8;19563:13;;;:7;:13;;;;;;19475:8;;;;19563:13;;19559:162;;;19599:4;19593:10;;19559:162;;;-1:-1:-1;;;;;19625:11:0;;;;;;:7;:11;;;;;;;;19621:100;;;19660:4;19653:11;;19621:100;;;-1:-1:-1;19705:4:0;19621:100;19735:20;19746:4;19752:2;19735:10;:20::i;:::-;19731:874;;;19776:14;;;;19772:319;;19816:5;19811:265;;19846:34;;-1:-1:-1;;;19846:34:0;;25017:2:1;19846:34:0;;;24999:21:1;25056:2;25036:18;;;25029:30;25095:26;25075:18;;;25068:54;25139:18;;19846:34:0;24815:348:1;19811:265:0;-1:-1:-1;;;;;19911:31:0;;;;;;:25;:31;;;;;;;;19910:32;:66;;;;-1:-1:-1;;;;;;19947:29:0;;;;;;:25;:29;;;;;;;;19946:30;19910:66;19906:170;;;20001:55;;-1:-1:-1;;;20001:55:0;;25370:2:1;20001:55:0;;;25352:21:1;25409:2;25389:18;;;25382:30;25448:34;25428:18;;;25421:62;-1:-1:-1;;;25499:18:1;;;25492:43;25552:19;;20001:55:0;25168:409:1;19906:170:0;20109:3;:11;;;;20116:4;20109:11;20105:232;;;-1:-1:-1;;;;;20145:27:0;;;;;;:21;:27;;;;;;;;20144:28;:58;;;;-1:-1:-1;;;;;;20177:25:0;;;;;;:21;:25;;;;;;;;20176:26;20144:58;20140:182;;;20245:12;;20235:6;:22;;20227:75;;;;-1:-1:-1;;;20227:75:0;;25784:2:1;20227:75:0;;;25766:21:1;25823:2;25803:18;;;25796:30;25862:34;25842:18;;;25835:62;-1:-1:-1;;;25913:18:1;;;25906:38;25961:19;;20227:75:0;25582:404:1;20227:75:0;20369:9;;-1:-1:-1;;;;;20355:24:0;;;20369:9;;;;;20355:24;;;;:33;;;20384:4;20383:5;20355:33;20351:243;;;-1:-1:-1;;;;;20414:25:0;;;;;;:21;:25;;;;;;;;20409:170;;20498:14;;20488:6;20472:13;20482:2;-1:-1:-1;;;;;10527:16:0;10500:7;10527:16;;;;;;;;;;;;10434:117;20472:13;:22;;;;:::i;:::-;:40;;20464:95;;;;-1:-1:-1;;;20464:95:0;;26193:2:1;20464:95:0;;;26175:21:1;26232:2;26212:18;;;26205:30;26271:34;26251:18;;;26244:62;-1:-1:-1;;;26322:18:1;;;26315:40;26372:19;;20464:95:0;25991:406:1;20464:95:0;20621:4;20617:742;;;20647:6;;-1:-1:-1;;;20647:6:0;;;;20642:706;;20678:19;;-1:-1:-1;;;20678:19:0;;;;:64;;;;-1:-1:-1;;;;;;20722:20:0;;;;;;:16;:20;;;;;;;;20721:21;20678:64;:111;;;;-1:-1:-1;;;;;;20767:22:0;;;;;;:16;:22;;;;;;;;20766:23;20678:111;20674:659;;;20881:4;20832:28;10527:16;;;;;;;;;;;20938:13;;20914:37;;20910:404;;20998:10;;21039:22;;;;21035:97;;;21096:13;;21086:6;;-1:-1:-1;;;;;21086:6:0;10500:7;10527:16;;;;;;;;;;;5379:5;;21076:33;;;:::i;:::-;21075:54;;;;:::i;:::-;21065:64;;21035:97;21186:7;21162:20;:31;21158:72;;21220:7;21197:30;;21158:72;21256:34;21269:20;21256:12;:34::i;:::-;20953:361;20910:404;20809:524;20674:659;21376:52;21393:4;21399:2;21403:6;21411:3;21416:4;21422:5;21376:16;:52::i;:::-;21369:59;19150:2286;-1:-1:-1;;;;;;;19150:2286:0:o;24478:1055::-;24597:4;24618:20;24629:4;24635:2;24618:10;:20::i;:::-;24614:228;;;24673:11;;:39;;-1:-1:-1;;;24673:39:0;;-1:-1:-1;;;;;26683:15:1;;;24673:39:0;;;26665:34:1;26735:15;;;26715:18;;;26708:43;26767:18;;;26760:34;;;24642:12:0;;24673:11;;;;;:21;;26577:18:1;;24673:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;24673:39:0;;;;;;;;-1:-1:-1;;24673:39:0;;;;;;;;;;;;:::i;:::-;;;24669:122;;24780:8;;;24669:122;24763:5;-1:-1:-1;24809:7:0;24805:26;;24820:8;;;24805:26;24640:202;24614:228;-1:-1:-1;;;;;24886:25:0;;24852:12;24886:25;;;:19;:25;;;;;;24867:4;;24886:25;;;:52;;-1:-1:-1;;;;;;24915:23:0;;;;;;:19;:23;;;;;;;;24886:52;24882:99;;;-1:-1:-1;24964:5:0;24882:99;-1:-1:-1;;;;;24991:13:0;;:7;:13;;;;;;;;;;:23;;25008:6;;24991:7;:23;;25008:6;;24991:23;:::i;:::-;;;;-1:-1:-1;25025:22:0;;-1:-1:-1;25051:7:0;25050:55;;25099:6;25050:55;;;25062:34;25072:4;25078:6;25086:3;25091:4;25062:9;:34::i;:::-;25025:80;;25131:14;25116:7;:11;25124:2;-1:-1:-1;;;;;25116:11:0;-1:-1:-1;;;;;25116:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;25176:2;-1:-1:-1;;;;;25161:34:0;25170:4;-1:-1:-1;;;;;25161:34:0;;25180:14;25161:34;;;;391:25:1;;379:2;364:18;;245:177;25161:34:0;;;;;;;;25211:16;;;;;;;25206:298;;25244:28;25263:4;25269:2;25244:18;:28::i;:::-;25292:16;;;;;;;25291:17;:41;;;;;25312:20;25323:4;25329:2;25312:10;:20::i;:::-;25291:77;;;;-1:-1:-1;;;;;;25337:31:0;;;;;;:25;:31;;;;;;;;25336:32;25291:77;:111;;;;-1:-1:-1;;;;;;25373:29:0;;;;;;:25;:29;;;;;;;;25372:30;25291:111;:121;;;;;25407:5;25406:6;25291:121;25287:206;;;25433:44;;-1:-1:-1;;;25433:44:0;;27007:2:1;25433:44:0;;;26989:21:1;27046:2;27026:18;;;27019:30;27085:34;27065:18;;;27058:62;-1:-1:-1;;;27136:18:1;;;27129:32;27178:19;;25433:44:0;26805:398:1;25287:206:0;-1:-1:-1;25521:4:0;;24478:1055;-1:-1:-1;;;;;;;;24478:1055:0:o;18696:446::-;18797:6;;18765:4;;-1:-1:-1;;;;;18789:14:0;;;18797:6;;18789:14;;;;:43;;-1:-1:-1;18826:6:0;;-1:-1:-1;;;;;18820:12:0;;;18826:6;;18820:12;;18789:43;:79;;;;-1:-1:-1;18862:6:0;;-1:-1:-1;;;;;18862:6:0;18849:9;:19;;18789:79;:118;;;;-1:-1:-1;;;;;;18886:21:0;;;;;;:17;:21;;;;;;;;18885:22;18789:118;:159;;;;-1:-1:-1;;;;;;18925:23:0;;;;;;:17;:23;;;;;;;;18924:24;18789:159;:186;;;;-1:-1:-1;;;;;;18965:10:0;;5518:42;18965:10;;18789:186;:219;;;;-1:-1:-1;;;;;;18992:16:0;;;;18789:219;:257;;;;-1:-1:-1;;;;;;19025:21:0;;19041:4;19025:21;;18789:257;:302;;;;-1:-1:-1;19079:11:0;;-1:-1:-1;;;;;19063:28:0;;;19079:11;;;;;19063:28;;18789:302;:345;;;;-1:-1:-1;19122:11:0;;-1:-1:-1;;;;;19108:26:0;;;19122:11;;;;;19108:26;;18789:345;18782:352;18696:446;-1:-1:-1;;;18696:446:0:o;21444:761::-;6317:6;:13;;-1:-1:-1;;;;6317:13:0;-1:-1:-1;;;6317:13:0;;;21551:4:::1;6317:13:::0;21531:26;;;:11:::1;:26;::::0;;;;;;;21566:9:::1;::::0;6317:13;21566:9;::::1;-1:-1:-1::0;;;;;21566:9:0::1;21531:46:::0;;;;;;;;-1:-1:-1;;21531:67:0::1;21527:166;;21635:4;21615:26;::::0;;;:11:::1;:26;::::0;;;;;;;21650:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;21650:9:0::1;21615:46:::0;;;;;;;-1:-1:-1;;21615:66:0;;21527:166:::1;21737:16;::::0;;21751:1:::1;21737:16:::0;;;;;::::1;::::0;;21713:21:::1;::::0;21737:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21737:16:0::1;21713:40;;21782:4;21764;21769:1;21764:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;21764:23:0::1;;;-1:-1:-1::0;;;;;21764:23:0::1;;;::::0;::::1;21808:9;;;;;;;;;-1:-1:-1::0;;;;;21808:9:0::1;-1:-1:-1::0;;;;;21808:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21798:4;21803:1;21798:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21798:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21841:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;21841:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;21916:20;;21951:1:::1;::::0;21967:4;;21994::::1;::::0;22014:15:::1;::::0;21841:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;21837:246;;22065:7;;;21837:246;22131:15;::::0;:66:::1;::::0;22095:12:::1;::::0;-1:-1:-1;;;;;22131:15:0::1;::::0;22187:5:::1;::::0;22159:21:::1;::::0;22095:12;22131:66;22095:12;22131:66;22159:21;22131:15;22187:5;22131:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6341:1:0::1;-1:-1:-1::0;6353:6:0;:14;;-1:-1:-1;;;;6353:14:0;;;21444:761::o;25541:767::-;25629:7;25649:18;25682:3;25678:205;;;-1:-1:-1;25715:9:0;:16;;;25678:205;;;25753:4;25749:134;;;-1:-1:-1;25787:9:0;:17;;;;;;25749:134;;;-1:-1:-1;25850:9:0;:21;;;;;;25749:134;25897:10;25911:1;25897:15;25893:39;;25923:6;25916:13;;;;;25893:39;25954:11;;;;;-1:-1:-1;;;;;25954:11:0;25978:4;25946:37;:73;;;;;26000:13;26017:2;26000:19;;25946:73;25942:101;;;-1:-1:-1;26036:4:0;25942:101;26053:17;5379:5;26073:19;26082:10;26073:6;:19;:::i;:::-;:38;;;;:::i;:::-;26053:58;-1:-1:-1;26126:13:0;;26122:141;;26172:4;26156:7;:22;;;;;;;;;;:35;;26182:9;;26156:7;:35;;26182:9;;26156:35;:::i;:::-;;;;-1:-1:-1;;26211:40:0;;391:25:1;;;26234:4:0;;-1:-1:-1;;;;;26211:40:0;;;;;379:2:1;364:18;26211:40:0;;;;;;;26122:141;26282:18;26291:9;26282:6;:18;:::i;22213:563::-;22296:16;;;;;;;22295:17;22287:65;;;;-1:-1:-1;;;22287:65:0;;28651:2:1;22287:65:0;;;28633:21:1;28690:2;28670:18;;;28663:30;28729:34;28709:18;;;28702:62;-1:-1:-1;;;28780:18:1;;;28773:33;28823:19;;22287:65:0;28449:399:1;22287:65:0;22368:20;22379:4;22385:2;22368:10;:20::i;:::-;22367:21;:37;;;;-1:-1:-1;22398:6:0;;-1:-1:-1;;;;;22392:12:0;;;22398:6;;22392:12;22367:37;22363:406;;;-1:-1:-1;;;;;22421:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;22421:30:0;;;22447:4;22421:30;;;;;;22466:19;:25;;;;;:32;;;;;;;;;;22513:16;:23;;-1:-1:-1;;22513:23:0;22421:30;22513:23;;;;;22563:11;;;;22551:114;;22609:11;:40;;-1:-1:-1;;;;;;22609:40:0;22643:4;22609:40;;;;;22551:114;22679:19;:26;;-1:-1:-1;;;;22679:26:0;-1:-1:-1;;;22679:26:0;;;22725:32;;-1:-1:-1;2242:41:1;;22725:32:0;;2230:2:1;2215:18;22725:32:0;2102:187:1;427:118;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;1301:548::-;1413:4;1442:2;1471;1460:9;1453:21;1503:6;1497:13;1546:6;1541:2;1530:9;1526:18;1519:34;1571:1;1581:140;1595:6;1592:1;1589:13;1581:140;;;1690:14;;;1686:23;;1680:30;1656:17;;;1675:2;1652:26;1645:66;1610:10;;1581:140;;;1585:3;1770:1;1765:2;1756:6;1745:9;1741:22;1737:31;1730:42;1840:2;1833;1829:7;1824:2;1816:6;1812:15;1808:29;1797:9;1793:45;1789:54;1781:62;;;;1301:548;;;;:::o;2294:154::-;-1:-1:-1;;;;;2373:5:1;2369:54;2362:5;2359:65;2349:93;;2438:1;2435;2428:12;2453:315;2521:6;2529;2582:2;2570:9;2561:7;2557:23;2553:32;2550:52;;;2598:1;2595;2588:12;2550:52;2637:9;2624:23;2656:31;2681:5;2656:31;:::i;:::-;2706:5;2758:2;2743:18;;;;2730:32;;-1:-1:-1;;;2453:315:1:o;2773:247::-;2832:6;2885:2;2873:9;2864:7;2860:23;2856:32;2853:52;;;2901:1;2898;2891:12;2853:52;2940:9;2927:23;2959:31;2984:5;2959:31;:::i;3025:388::-;3093:6;3101;3154:2;3142:9;3133:7;3129:23;3125:32;3122:52;;;3170:1;3167;3160:12;3122:52;3209:9;3196:23;3228:31;3253:5;3228:31;:::i;:::-;3278:5;-1:-1:-1;3335:2:1;3320:18;;3307:32;3348:33;3307:32;3348:33;:::i;3418:456::-;3495:6;3503;3511;3564:2;3552:9;3543:7;3539:23;3535:32;3532:52;;;3580:1;3577;3570:12;3532:52;3619:9;3606:23;3638:31;3663:5;3638:31;:::i;:::-;3688:5;-1:-1:-1;3745:2:1;3730:18;;3717:32;3758:33;3717:32;3758:33;:::i;:::-;3418:456;;3810:7;;-1:-1:-1;;;3864:2:1;3849:18;;;;3836:32;;3418:456::o;3879:248::-;3947:6;3955;4008:2;3996:9;3987:7;3983:23;3979:32;3976:52;;;4024:1;4021;4014:12;3976:52;-1:-1:-1;;4047:23:1;;;4117:2;4102:18;;;4089:32;;-1:-1:-1;3879:248:1:o;4132:127::-;4193:10;4188:3;4184:20;4181:1;4174:31;4224:4;4221:1;4214:15;4248:4;4245:1;4238:15;4264:275;4335:2;4329:9;4400:2;4381:13;;-1:-1:-1;;4377:27:1;4365:40;;4435:18;4420:34;;4456:22;;;4417:62;4414:88;;;4482:18;;:::i;:::-;4518:2;4511:22;4264:275;;-1:-1:-1;4264:275:1:o;4544:183::-;4604:4;4637:18;4629:6;4626:30;4623:56;;;4659:18;;:::i;:::-;-1:-1:-1;4704:1:1;4700:14;4716:4;4696:25;;4544:183::o;4732:662::-;4786:5;4839:3;4832:4;4824:6;4820:17;4816:27;4806:55;;4857:1;4854;4847:12;4806:55;4893:6;4880:20;4919:4;4943:60;4959:43;4999:2;4959:43;:::i;:::-;4943:60;:::i;:::-;5037:15;;;5123:1;5119:10;;;;5107:23;;5103:32;;;5068:12;;;;5147:15;;;5144:35;;;5175:1;5172;5165:12;5144:35;5211:2;5203:6;5199:15;5223:142;5239:6;5234:3;5231:15;5223:142;;;5305:17;;5293:30;;5343:12;;;;5256;;5223:142;;;-1:-1:-1;5383:5:1;4732:662;-1:-1:-1;;;;;;4732:662:1:o;5399:1215::-;5517:6;5525;5578:2;5566:9;5557:7;5553:23;5549:32;5546:52;;;5594:1;5591;5584:12;5546:52;5634:9;5621:23;5663:18;5704:2;5696:6;5693:14;5690:34;;;5720:1;5717;5710:12;5690:34;5758:6;5747:9;5743:22;5733:32;;5803:7;5796:4;5792:2;5788:13;5784:27;5774:55;;5825:1;5822;5815:12;5774:55;5861:2;5848:16;5883:4;5907:60;5923:43;5963:2;5923:43;:::i;5907:60::-;6001:15;;;6083:1;6079:10;;;;6071:19;;6067:28;;;6032:12;;;;6107:19;;;6104:39;;;6139:1;6136;6129:12;6104:39;6163:11;;;;6183:217;6199:6;6194:3;6191:15;6183:217;;;6279:3;6266:17;6296:31;6321:5;6296:31;:::i;:::-;6340:18;;6216:12;;;;6378;;;;6183:217;;;6419:5;-1:-1:-1;;6462:18:1;;6449:32;;-1:-1:-1;;6493:16:1;;;6490:36;;;6522:1;6519;6512:12;6490:36;;6545:63;6600:7;6589:8;6578:9;6574:24;6545:63;:::i;:::-;6535:73;;;5399:1215;;;;;:::o;6808:159::-;6875:20;;6935:6;6924:18;;6914:29;;6904:57;;6957:1;6954;6947:12;6904:57;6808:159;;;:::o;6972:328::-;7046:6;7054;7062;7115:2;7103:9;7094:7;7090:23;7086:32;7083:52;;;7131:1;7128;7121:12;7083:52;7154:28;7172:9;7154:28;:::i;:::-;7144:38;;7201:37;7234:2;7223:9;7219:18;7201:37;:::i;:::-;7191:47;;7257:37;7290:2;7279:9;7275:18;7257:37;:::i;:::-;7247:47;;6972:328;;;;;:::o;7305:382::-;7370:6;7378;7431:2;7419:9;7410:7;7406:23;7402:32;7399:52;;;7447:1;7444;7437:12;7399:52;7486:9;7473:23;7505:31;7530:5;7505:31;:::i;7692:180::-;7751:6;7804:2;7792:9;7783:7;7779:23;7775:32;7772:52;;;7820:1;7817;7810:12;7772:52;-1:-1:-1;7843:23:1;;7692:180;-1:-1:-1;7692:180:1:o;8384:385::-;8470:6;8478;8486;8494;8547:3;8535:9;8526:7;8522:23;8518:33;8515:53;;;8564:1;8561;8554:12;8515:53;-1:-1:-1;;8587:23:1;;;8657:2;8642:18;;8629:32;;-1:-1:-1;8708:2:1;8693:18;;8680:32;;8759:2;8744:18;8731:32;;-1:-1:-1;8384:385:1;-1:-1:-1;8384:385:1:o;9393:127::-;9454:10;9449:3;9445:20;9442:1;9435:31;9485:4;9482:1;9475:15;9509:4;9506:1;9499:15;9525:422;9614:1;9657:5;9614:1;9671:270;9692:7;9682:8;9679:21;9671:270;;;9751:4;9747:1;9743:6;9739:17;9733:4;9730:27;9727:53;;;9760:18;;:::i;:::-;9810:7;9800:8;9796:22;9793:55;;;9830:16;;;;9793:55;9909:22;;;;9869:15;;;;9671:270;;;9675:3;9525:422;;;;;:::o;9952:806::-;10001:5;10031:8;10021:80;;-1:-1:-1;10072:1:1;10086:5;;10021:80;10120:4;10110:76;;-1:-1:-1;10157:1:1;10171:5;;10110:76;10202:4;10220:1;10215:59;;;;10288:1;10283:130;;;;10195:218;;10215:59;10245:1;10236:10;;10259:5;;;10283:130;10320:3;10310:8;10307:17;10304:43;;;10327:18;;:::i;:::-;-1:-1:-1;;10383:1:1;10369:16;;10398:5;;10195:218;;10497:2;10487:8;10484:16;10478:3;10472:4;10469:13;10465:36;10459:2;10449:8;10446:16;10441:2;10435:4;10432:12;10428:35;10425:77;10422:159;;;-1:-1:-1;10534:19:1;;;10566:5;;10422:159;10613:34;10638:8;10632:4;10613:34;:::i;:::-;10683:6;10679:1;10675:6;10671:19;10662:7;10659:32;10656:58;;;10694:18;;:::i;:::-;10732:20;;9952:806;-1:-1:-1;;;9952:806:1:o;10763:140::-;10821:5;10850:47;10891:4;10881:8;10877:19;10871:4;10850:47;:::i;10908:217::-;10948:1;10974;10964:132;;11018:10;11013:3;11009:20;11006:1;10999:31;11053:4;11050:1;11043:15;11081:4;11078:1;11071:15;10964:132;-1:-1:-1;11110:9:1;;10908:217::o;11470:168::-;11543:9;;;11574;;11591:15;;;11585:22;;11571:37;11561:71;;11612:18;;:::i;11643:128::-;11710:9;;;11731:11;;;11728:37;;;11745:18;;:::i;12543:127::-;12604:10;12599:3;12595:20;12592:1;12585:31;12635:4;12632:1;12625:15;12659:4;12656:1;12649:15;13022:197;13060:3;13088:6;13129:2;13122:5;13118:14;13156:2;13147:7;13144:15;13141:41;;13162:18;;:::i;:::-;13211:1;13198:15;;13022:197;-1:-1:-1;;;13022:197:1:o;13224:125::-;13289:9;;;13310:10;;;13307:36;;;13323:18;;:::i;16009:385::-;16088:6;16096;16149:2;16137:9;16128:7;16124:23;16120:32;16117:52;;;16165:1;16162;16155:12;16117:52;16197:9;16191:16;16216:31;16241:5;16216:31;:::i;:::-;16316:2;16301:18;;16295:25;16266:5;;-1:-1:-1;16329:33:1;16295:25;16329:33;:::i;19023:245::-;19102:6;19110;19163:2;19151:9;19142:7;19138:23;19134:32;19131:52;;;19179:1;19176;19169:12;19131:52;-1:-1:-1;;19202:16:1;;19258:2;19243:18;;;19237:25;19202:16;;19237:25;;-1:-1:-1;19023:245:1:o;19629:184::-;19699:6;19752:2;19740:9;19731:7;19727:23;19723:32;19720:52;;;19768:1;19765;19758:12;19720:52;-1:-1:-1;19791:16:1;;19629:184;-1:-1:-1;19629:184:1:o;20120:245::-;20187:6;20240:2;20228:9;20219:7;20215:23;20211:32;20208:52;;;20256:1;20253;20246:12;20208:52;20288:9;20282:16;20307:28;20329:5;20307:28;:::i;20729:251::-;20799:6;20852:2;20840:9;20831:7;20827:23;20823:32;20820:52;;;20868:1;20865;20858:12;20820:52;20900:9;20894:16;20919:31;20944:5;20919:31;:::i;27208:1026::-;27470:4;27518:3;27507:9;27503:19;27549:6;27538:9;27531:25;27575:2;27613:6;27608:2;27597:9;27593:18;27586:34;27656:3;27651:2;27640:9;27636:18;27629:31;27680:6;27715;27709:13;27746:6;27738;27731:22;27784:3;27773:9;27769:19;27762:26;;27823:2;27815:6;27811:15;27797:29;;27844:1;27854:218;27868:6;27865:1;27862:13;27854:218;;;27933:13;;-1:-1:-1;;;;;27929:62:1;27917:75;;28047:15;;;;28012:12;;;;27890:1;27883:9;27854:218;;;-1:-1:-1;;;;;;;28128:55:1;;;;28123:2;28108:18;;28101:83;-1:-1:-1;;;28215:3:1;28200:19;28193:35;28089:3;27208:1026;-1:-1:-1;;;27208:1026:1:o

Swarm Source

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