ETH Price: $2,445.28 (-0.98%)
Gas: 14 Gwei

Token

Baby Psyop (BABYPSYOP)
 

Overview

Max Total Supply

555,000,000,000 BABYPSYOP

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,549,135,578 BABYPSYOP

Value
$0.00
0xe9f5b65dccf83a8b7babb98cf10738930de0f622
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BabyPsyop

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-10-07
*/

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

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

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

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

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

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

interface Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
}

contract BabyPsyop 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 presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 555_000_000_000;
    string constant private _name = "Baby Psyop";
    string constant private _symbol = "BABYPSYOP";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

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

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

    Ratios public _ratios = Ratios({
        liquidity: 4,
        marketing: 1,
        development: 2,
        totalSwap: 7
    });

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

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

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

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0xc79aDdF877Cc4Ab567d42dB58FBD1B6EbA637F5f),
        development: payable(0xc79aDdF877Cc4Ab567d42dB58FBD1B6EbA637F5f)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    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;

        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // 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 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 lockTaxes() external onlyOwner {
        // This will lock taxes at their current value forever, do not call this unless you're sure.
        taxesAreLocked = true;
    }

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

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

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

    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 (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 {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

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

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

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

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

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

        amtBalance -= liquidityBalance;
        ratios.totalSwap -= ratios.liquidity;
        bool success;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - developmentBalance;
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.development > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 55000}("");
        }
    }

    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) {
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, amount, buy, sell) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        return true;
    }

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

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"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":"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":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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":[],"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":"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":"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":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"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"}]

600060028181556008805460ff191660019081179091556102bc608081905260a05260c0929092526009805465ffffffffffff19166302bc02bc179055600460e0526101009190915261012052600761014052600a805466070002000100046001600160401b03199091161781556101a060405273c79addf877cc4ab567d42db58fbd1b6eba637f5f610160819052610180819052600d80546001600160a01b03199081168317909155600e80548216909217909155600f805461ff001916905560138290556014805461ffff191690556016805482163390811790915560178054909216179055620000f59060129062000355565b620001069064813893ee006200036d565b601680546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200015a6012600a62000355565b6200016b9064813893ee006200036d565b60405190815260200160405180910390a3601680546001600160a01b0390811660009081526006602081815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905596549095168452600482528320805486168517905573407993575c91ce7643a4d4ccacc9a98c36ee1bbe90925290527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb9805490921617905562000387565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002975781600019048211156200027b576200027b62000240565b808516156200028957918102915b93841c93908002906200025b565b509250929050565b600082620002b0575060016200034f565b81620002bf575060006200034f565b8160018114620002d85760028114620002e35762000303565b60019150506200034f565b60ff841115620002f757620002f762000240565b50506001821b6200034f565b5060208310610133831016604e8410600b841016171562000328575081810a6200034f565b62000334838362000256565b80600019048211156200034b576200034b62000240565b0290505b92915050565b60006200036660ff8416836200029f565b9392505050565b80820281158282048414176200034f576200034f62000240565b61407c80620003976000396000f3fe60806040526004361061036f5760003560e01c80635a6f0918116101c6578063b1b08f71116100f7578063dd62ed3e11610095578063f94aa1b41161006f578063f94aa1b414610a6d578063fb78680d14610ab4578063fdb78c0e14610ad4578063feadde9c14610af357600080fd5b8063dd62ed3e146109f2578063eafb5a3c14610a38578063ee5d9c2d14610a5857600080fd5b8063b7df8b36116100d1578063b7df8b361461092d578063bfc2fc3514610947578063cf84770614610967578063d3f6a157146109d257600080fd5b8063b1b08f71146105ae578063b3ab15fb1461090d578063b3d514fb146105ae57600080fd5b8063893d20e81161016457806395d89b411161013e57806395d89b411461087b578063a9059cbb146108ad578063aa22b172146108cd578063ab558e4d146108ed57600080fd5b8063893d20e8146108335780638a63bd9b146108515780638a8c523c1461086657600080fd5b8063715018a6116101a0578063715018a6146107c957806378648edf146107de57806380c581d1146107f357806381cf58a91461081357600080fd5b80635a6f09181461075d5780635c24b0741461077357806370a082311461079357600080fd5b80632b28fc7a116102a05780634bbb93eb1161023e5780634fbee193116102185780634fbee193146106c557806350a8e016146106fe578063570ca7351461071d578063590ffdce1461073d57600080fd5b80634bbb93eb146106655780634e718e48146106855780634fb2e45d146106a557600080fd5b806332cde6641161027a57806332cde664146105f657806339a0590214610616578063452ed4f11461062b5780634ada218b1461064b57600080fd5b80632b28fc7a146105ae5780632e8fa821146105c4578063313ce567146105da57600080fd5b80630dcbcf1c1161030d57806323b872dd116102e757806323b872dd146105435780632610eaca1461056357806328577751146105835780632b112e491461059957600080fd5b80630dcbcf1c146104d357806313b4a7f41461050c57806318160ddd1461052e57600080fd5b806306fdde031161034957806306fdde03146104285780630758d9241461046457806307dd79e014610489578063095ea7b3146104b357600080fd5b806303fd2a451461037b5780630445b667146103ae578063069d955f146103d257600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039161dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103c460105481565b6040519081526020016103a5565b3480156103de57600080fd5b506009546104039061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103a5565b34801561043457600080fd5b5060408051808201909152600a815269042616279205073796f760b41b60208201525b6040516103a59190613948565b34801561047057600080fd5b50600b546103919061010090046001600160a01b031681565b34801561049557600080fd5b50600b546104a39060ff1681565b60405190151581526020016103a5565b3480156104bf57600080fd5b506104a36104ce3660046139ab565b610b13565b3480156104df57600080fd5b506104a36104ee3660046139d7565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561051857600080fd5b5061052c6105273660046139f4565b610b2a565b005b34801561053a57600080fd5b506103c4610ced565b34801561054f57600080fd5b506104a361055e366004613a2d565b610d0f565b34801561056f57600080fd5b5061052c61057e366004613b44565b610d87565b34801561058f57600080fd5b506103c460135481565b3480156105a557600080fd5b506103c4610f3c565b3480156105ba57600080fd5b506103c46103e881565b3480156105d057600080fd5b506103c460115481565b3480156105e657600080fd5b50604051601281526020016103a5565b34801561060257600080fd5b5061052c610611366004613c1d565b610fbb565b34801561062257600080fd5b5061052c61110f565b34801561063757600080fd5b50600c54610391906001600160a01b031681565b34801561065757600080fd5b506014546104a39060ff1681565b34801561067157600080fd5b506103c4610680366004613c60565b611196565b34801561069157600080fd5b5061052c6106a0366004613c60565b6111ca565b3480156106b157600080fd5b5061052c6106c03660046139d7565b611268565b3480156106d157600080fd5b506104a36106e03660046139d7565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561070a57600080fd5b506014546104a390610100900460ff1681565b34801561072957600080fd5b50601854610391906001600160a01b031681565b34801561074957600080fd5b5061052c610758366004613c87565b61146a565b34801561076957600080fd5b506103c460155481565b34801561077f57600080fd5b5061052c61078e3660046139d7565b6114dd565b34801561079f57600080fd5b506103c46107ae3660046139d7565b6001600160a01b031660009081526020819052604090205490565b3480156107d557600080fd5b5061052c6116bb565b3480156107ea57600080fd5b5061052c6117e0565b3480156107ff57600080fd5b5061052c61080e366004613c87565b611837565b34801561081f57600080fd5b50601754610391906001600160a01b031681565b34801561083f57600080fd5b506016546001600160a01b0316610391565b34801561085d57600080fd5b506104a3611a52565b34801561087257600080fd5b5061052c611ac2565b34801561088757600080fd5b506040805180820190915260098152680424142595053594f560bc1b6020820152610457565b3480156108b957600080fd5b506104a36108c83660046139ab565b611d18565b3480156108d957600080fd5b5061052c6108e8366004613c1d565b611d2f565b3480156108f957600080fd5b5061052c6109083660046139d7565b611e7a565b34801561091957600080fd5b5061052c6109283660046139d7565b612014565b34801561093957600080fd5b506012546104a39060ff1681565b34801561095357600080fd5b5061052c610962366004613cb5565b612101565b34801561097357600080fd5b50600a546109a49061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103a5565b3480156109de57600080fd5b5061052c6109ed3660046139f4565b6121a8565b3480156109fe57600080fd5b506103c4610a0d3660046139f4565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a4457600080fd5b5061052c610a533660046139d7565b61228a565b348015610a6457600080fd5b5061052c61268b565b348015610a7957600080fd5b50600d54600e54610a94916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016103a5565b348015610ac057600080fd5b5061052c610acf366004613cd3565b612764565b348015610ae057600080fd5b50600f546104a390610100900460ff1681565b348015610aff57600080fd5b5061052c610b0e366004613c87565b612a24565b6000610b20338484612a97565b5060015b92915050565b6016546001600160a01b03163314610b775760405162461bcd60e51b8152602060048201526011602482015260008051602061402783398151915260448201526064015b60405180910390fd5b60085460ff16610b8657600080fd5b6001600160a01b0382163014801590610ba857506001600160a01b0381163014155b8015610bc25750600c546001600160a01b03838116911614155b8015610bdc5750600c546001600160a01b03828116911614155b610c165760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610b6e565b806001600160a01b0316826001600160a01b031603610c78576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560079093529220805490911682179055610c7490829061146a565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526007909252808320805486168317905592825291902080549092168117909155610ce290839061146a565b610c7481600161146a565b6000610cfb6012600a613dff565b610d0a9064813893ee00613e0e565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610d74576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610d6e908490613e25565b90915550505b610d7f848484612b90565b949350505050565b6016546001600160a01b03163314610dcf5760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b8051825114610e205760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b6e565b60005b82518161ffff161015610f3757610e3c6012600a613dff565b828261ffff1681518110610e5257610e52613e38565b6020026020010151610e649190613e0e565b336000908152602081905260409020541015610ec25760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610b6e565b610f2433848361ffff1681518110610edc57610edc613e38565b60200260200101516012600a610ef29190613dff565b858561ffff1681518110610f0857610f08613e38565b6020026020010151610f1a9190613e0e565b6000806001612f1b565b5080610f2f81613e4e565b915050610e23565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610f969190613e6f565b610fa26012600a613dff565b610fb19064813893ee00613e0e565b610d0a9190613e25565b6016546001600160a01b031633146110035760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b600b5460ff16156110565760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610b6e565b6103e88361ffff161115801561107257506103e88261ffff1611155b801561108457506103e88161ffff1611155b6110d05760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b6e565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6017546001600160a01b0316331461117a5760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610b6e565b6111846000612014565b601780546001600160a01b0319169055565b600c546001600160a01b0316600090815260208190526040812054612710906111c0908490613e0e565b610b249190613e82565b6016546001600160a01b031633146112125760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b60968111156112635760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610b6e565b601355565b6016546001600160a01b031633146112b05760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b6001600160a01b03811661132c5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b6e565b61deac196001600160a01b038216016113ad5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b6e565b6016546113c4906001600160a01b0316600061146a565b6113cf81600161146a565b6016546001600160a01b031660009081526020819052604090205415611418576016546001600160a01b031660008181526020819052604090205461141691908390610f1a565b505b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6016546001600160a01b031633146114b25760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6016546001600160a01b031633146115255760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b60145460ff161561153557600080fd5b306001600160a01b0382160361158d5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b6e565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611613575060408051601f3d908101601f1916820190925261161091810190613ea4565b60015b61161c57600080fd5b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560165492546116999383169291900416600019612a97565b600b54610f3790309061010090046001600160a01b0316600019612a97565b50565b6016546001600160a01b031633146117035760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b60145460ff1661177b5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610b6e565b601654611792906001600160a01b0316600061146a565b601680546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6016546001600160a01b031633146118285760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b600b805460ff19166001179055565b6016546001600160a01b0316331461187f5760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b8061190e576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b1580156118f257600080fd5b505af1158015611906573d6000803e3d6000fd5b505050505050565b60025415611975576203f480600254426119289190613e25565b116119755760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610b6e565b6001600160a01b03821660009081526001602052604090205460ff16156119de5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b6e565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401600060405180830381600087803b1580156118f257600080fd5b6016546000906001600160a01b03163314611a9d5760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b600b54611abc90309061010090046001600160a01b0316600019612a97565b50600190565b6016546001600160a01b03163314611b0a5760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b60145460ff1615611b5d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b6e565b601454610100900460ff16611bb45760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b6e565b6014546201000090046001600160a01b0316611be4576014805462010000600160b01b0319163062010000021790555b601454600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611c5657600080fd5b505af1925050508015611c67575060015b50601454600c546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611cea575060408051601f3d908101601f19168201909252611ce791810190613ed3565b60015b15611cf9576010919091556011555b6014805460ff1990811660011790915560088054909116905542601555565b6000611d25338484612b90565b5060019392505050565b6016546001600160a01b03163314611d775760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b600a805461ffff8381166401000000000265ffff0000000019868316620100000263ffffffff1990941692881692909217929092171617905580611dbb8385613ef7565b611dc59190613ef7565b600a805467ffff0000000000001916660100000000000061ffff93841602179055600954600091611dff9162010000810482169116613ef7565b600a5461ffff91821692506601000000000000900416811015611e745760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610b6e565b50505050565b6016546001600160a01b03163314611ec25760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b601454610100900460ff1615611f2a57306001600160a01b03821603611f2a5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b6e565b6016546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa59190613f19565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611ff0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f379190613f32565b6017546001600160a01b0316331461207f5760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610b6e565b6018546001600160a01b031680156120bc576001600160a01b0381166000908152600460205260408120805460ff191690556120bc90829061146a565b601880546001600160a01b0319166001600160a01b0384169081179091556000908152600460205260409020805460ff19166001908117909155610c7490839061146a565b6016546001600160a01b031633146121495760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b600f805461ff001916610100841515908102919091179091556012805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6016546001600160a01b031633146121f05760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b6001600160a01b0382161580159061221057506001600160a01b03811615155b61225c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b6e565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6016546001600160a01b031633146122d25760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b601454610100900460ff161561232a5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610b6e565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561236f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123939190613f4f565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124049190613f4f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561244f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124739190613f4f565b600c546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661260957816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125029190613f4f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561254f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125739190613f4f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156125c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e49190613f4f565b600c80546001600160a01b0319166001600160a01b0392909216919091179055612625565b600c80546001600160a01b0319166001600160a01b0383161790555b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c5482166000908152600160208190526040909120805460ff191690911790559154610f37923092910416600019612a97565b6016546001600160a01b031633146126d35760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b601454610100900460ff161561272b5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b6e565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156116b8573d6000803e3d6000fd5b6016546001600160a01b031633146127ac5760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b82846127ba6012600a613dff565b6127c99064813893ee00613e0e565b6127d39190613e0e565b6127dd9190613e82565b60105580826127ee6012600a613dff565b6127fd9064813893ee00613e0e565b6128079190613e0e565b6128119190613e82565b601181905560105411156128715760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b6e565b600c546001600160a01b03166000908152602081905260409020546127109061289b906096613e0e565b6128a59190613e82565b60115411156129025760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b6e565b620f42406129126012600a613dff565b6129219064813893ee00613e0e565b61292b9190613e82565b60115410156129935760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b6e565b620f42406129a36012600a613dff565b6129b29064813893ee00613e0e565b6129bc9190613e82565b6010541015611e745760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b6e565b6016546001600160a01b03163314612a6c5760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612ae35760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b6e565b6001600160a01b038216612b2f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b6e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612bf65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b6e565b6001600160a01b038316612c585760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b6e565b60008211612cba5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b6e565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612ce85760019250612d16565b6001600160a01b03861660009081526001602052604090205460ff1615612d125760019150612d16565b5060015b612d208787613128565b15612e215760145460ff16612e215780612d7c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b6e565b6001600160a01b03871660009081526005602052604090205460ff16158015612dbe57506001600160a01b03861660009081526005602052604090205460ff16155b15612e215760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b6e565b8115612f0257600f5460ff16612f0257600f54610100900460ff168015612e6157506001600160a01b03861660009081526007602052604090205460ff16155b8015612e8657506001600160a01b03871660009081526007602052604090205460ff16155b15612f0257306000908152602081905260409020546010548110612f005760115460125460ff1615612eea57601354600c546001600160a01b031660009081526020819052604090205461271091612edd91613e0e565b612ee79190613e82565b90505b808210612ef5578091505b612efe8261323f565b505b505b612f10878787868686612f1b565b979650505050505050565b6001600160a01b03861660009081526006602052604081205460019060ff1680612f5d57506001600160a01b03871660009081526006602052604090205460ff165b15612f66575060005b6001600160a01b03881660009081526020819052604081208054889290612f8e908490613e25565b909155506000905081612fa15786612fad565b612fad898888886136fc565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612fe39190613e6f565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161302f91815260200190565b60405180910390a3601454610100900460ff16613119576130508989613808565b601454610100900460ff1615801561306d575061306d8989613128565b801561309257506001600160a01b03891660009081526005602052604090205460ff16155b80156130b757506001600160a01b03881660009081526005602052604090205460ff16155b80156130c1575083155b156131195760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b6e565b50600198975050505050505050565b6016546000906001600160a01b0384811691161480159061315757506016546001600160a01b03838116911614155b801561316e57506016546001600160a01b03163214155b801561319357506001600160a01b03821660009081526004602052604090205460ff16155b80156131b857506001600160a01b03831660009081526004602052604090205460ff16155b80156131cf57506001600160a01b03821661dead14155b80156131e357506001600160a01b03821615155b80156131f857506001600160a01b0383163014155b801561321857506014546001600160a01b03848116620100009092041614155b801561323857506014546001600160a01b03838116620100009092041614155b9392505050565b600f805460ff1916600117905560408051608081018252600a5461ffff808216835262010000820481166020840152640100000000820481169383019390935266010000000000009004909116606082018190526000036132a057506136ef565b306000908152600360209081526040808320600b5461010090046001600160a01b031684529091529020546000191461330357306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff16856133249190613e0e565b61332e9190613e82565b6133389190613e82565b905060006133468285613e25565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061338057613380613e38565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134179190613f4f565b8160018151811061342a5761342a613e38565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac94790613477908590600090869030904290600401613f6c565b600060405180830381600087803b15801561349157600080fd5b505af19250505080156134a2575060015b6134af57505050506136ef565b476000836134bd8684613e0e565b6134c79190613e82565b905084156135aa57600b5460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af19350505050801561355e575060408051601f3d908101601f1916820190925261355b91810190613fdd565b60015b61356d575050505050506136ef565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6135b48183613e25565b91508560000151866060018181516135cc919061400b565b61ffff90811690915260608801516040890151600093508392918216916135f4911686613e0e565b6135fe9190613e82565b9050600061360c8286613e25565b60208a015190915061ffff161561367a57600d546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d806000811461366f576040519150601f19603f3d011682016040523d82523d6000602084013e613674565b606091505b50909350505b604089015161ffff16156136e557600e546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d80600081146136da576040519150601f19603f3d011682016040523d82523d6000602084013e6136df565b606091505b50909350505b5050505050505050505b50600f805460ff19169055565b6000808315613712575060095461ffff1661373c565b821561372b575060095462010000900461ffff1661373c565b50600954640100000000900461ffff165b6014546201000090046001600160a01b03163014801561375d575046606114155b1561376757506111945b806000036137785784915050610d7f565b60006127106137878388613e0e565b6137919190613e82565b905080156137fe5730600090815260208190526040812080548392906137b8908490613e6f565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612f108187613e25565b601454610100900460ff161561386c5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b6e565b6138768282613128565b1580156138905750600c546001600160a01b038281169116145b15610c74576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff001916610100179081905562010000900416613908576014805462010000600160b01b0319163062010000021790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200161219c565b600060208083528351808285015260005b8181101561397557858101830151858201604001528201613959565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116b857600080fd5b600080604083850312156139be57600080fd5b82356139c981613996565b946020939093013593505050565b6000602082840312156139e957600080fd5b813561323881613996565b60008060408385031215613a0757600080fd5b8235613a1281613996565b91506020830135613a2281613996565b809150509250929050565b600080600060608486031215613a4257600080fd5b8335613a4d81613996565b92506020840135613a5d81613996565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613aad57613aad613a6e565b604052919050565b600067ffffffffffffffff821115613acf57613acf613a6e565b5060051b60200190565b600082601f830112613aea57600080fd5b81356020613aff613afa83613ab5565b613a84565b82815260059290921b84018101918181019086841115613b1e57600080fd5b8286015b84811015613b395780358352918301918301613b22565b509695505050505050565b60008060408385031215613b5757600080fd5b823567ffffffffffffffff80821115613b6f57600080fd5b818501915085601f830112613b8357600080fd5b81356020613b93613afa83613ab5565b82815260059290921b84018101918181019089841115613bb257600080fd5b948201945b83861015613bd9578535613bca81613996565b82529482019490820190613bb7565b96505086013592505080821115613bef57600080fd5b50613bfc85828601613ad9565b9150509250929050565b803561ffff81168114613c1857600080fd5b919050565b600080600060608486031215613c3257600080fd5b613c3b84613c06565b9250613c4960208501613c06565b9150613c5760408501613c06565b90509250925092565b600060208284031215613c7257600080fd5b5035919050565b80151581146116b857600080fd5b60008060408385031215613c9a57600080fd5b8235613ca581613996565b91506020830135613a2281613c79565b60008060408385031215613cc857600080fd5b8235613ca581613c79565b60008060008060808587031215613ce957600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613d56578160001904821115613d3c57613d3c613d05565b80851615613d4957918102915b93841c9390800290613d20565b509250929050565b600082613d6d57506001610b24565b81613d7a57506000610b24565b8160018114613d905760028114613d9a57613db6565b6001915050610b24565b60ff841115613dab57613dab613d05565b50506001821b610b24565b5060208310610133831016604e8410600b8410161715613dd9575081810a610b24565b613de38383613d1b565b8060001904821115613df757613df7613d05565b029392505050565b600061323860ff841683613d5e565b8082028115828204841417610b2457610b24613d05565b81810381811115610b2457610b24613d05565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613e6557613e65613d05565b6001019392505050565b80820180821115610b2457610b24613d05565b600082613e9f57634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215613eb757600080fd5b8251613ec281613996565b6020840151909250613a2281613996565b60008060408385031215613ee657600080fd5b505080516020909101519092909150565b61ffff818116838216019080821115613f1257613f12613d05565b5092915050565b600060208284031215613f2b57600080fd5b5051919050565b600060208284031215613f4457600080fd5b815161323881613c79565b600060208284031215613f6157600080fd5b815161323881613996565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613fbc5784516001600160a01b031683529383019391830191600101613f97565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613ff257600080fd5b8351925060208401519150604084015190509250925092565b61ffff828116828216039080821115613f1257613f12613d0556fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a26469706673582212202efc40a6c13467a99a004a03bfff900bfe629ec1962534e1446a77792b17991e64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c80635a6f0918116101c6578063b1b08f71116100f7578063dd62ed3e11610095578063f94aa1b41161006f578063f94aa1b414610a6d578063fb78680d14610ab4578063fdb78c0e14610ad4578063feadde9c14610af357600080fd5b8063dd62ed3e146109f2578063eafb5a3c14610a38578063ee5d9c2d14610a5857600080fd5b8063b7df8b36116100d1578063b7df8b361461092d578063bfc2fc3514610947578063cf84770614610967578063d3f6a157146109d257600080fd5b8063b1b08f71146105ae578063b3ab15fb1461090d578063b3d514fb146105ae57600080fd5b8063893d20e81161016457806395d89b411161013e57806395d89b411461087b578063a9059cbb146108ad578063aa22b172146108cd578063ab558e4d146108ed57600080fd5b8063893d20e8146108335780638a63bd9b146108515780638a8c523c1461086657600080fd5b8063715018a6116101a0578063715018a6146107c957806378648edf146107de57806380c581d1146107f357806381cf58a91461081357600080fd5b80635a6f09181461075d5780635c24b0741461077357806370a082311461079357600080fd5b80632b28fc7a116102a05780634bbb93eb1161023e5780634fbee193116102185780634fbee193146106c557806350a8e016146106fe578063570ca7351461071d578063590ffdce1461073d57600080fd5b80634bbb93eb146106655780634e718e48146106855780634fb2e45d146106a557600080fd5b806332cde6641161027a57806332cde664146105f657806339a0590214610616578063452ed4f11461062b5780634ada218b1461064b57600080fd5b80632b28fc7a146105ae5780632e8fa821146105c4578063313ce567146105da57600080fd5b80630dcbcf1c1161030d57806323b872dd116102e757806323b872dd146105435780632610eaca1461056357806328577751146105835780632b112e491461059957600080fd5b80630dcbcf1c146104d357806313b4a7f41461050c57806318160ddd1461052e57600080fd5b806306fdde031161034957806306fdde03146104285780630758d9241461046457806307dd79e014610489578063095ea7b3146104b357600080fd5b806303fd2a451461037b5780630445b667146103ae578063069d955f146103d257600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039161dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103c460105481565b6040519081526020016103a5565b3480156103de57600080fd5b506009546104039061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103a5565b34801561043457600080fd5b5060408051808201909152600a815269042616279205073796f760b41b60208201525b6040516103a59190613948565b34801561047057600080fd5b50600b546103919061010090046001600160a01b031681565b34801561049557600080fd5b50600b546104a39060ff1681565b60405190151581526020016103a5565b3480156104bf57600080fd5b506104a36104ce3660046139ab565b610b13565b3480156104df57600080fd5b506104a36104ee3660046139d7565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561051857600080fd5b5061052c6105273660046139f4565b610b2a565b005b34801561053a57600080fd5b506103c4610ced565b34801561054f57600080fd5b506104a361055e366004613a2d565b610d0f565b34801561056f57600080fd5b5061052c61057e366004613b44565b610d87565b34801561058f57600080fd5b506103c460135481565b3480156105a557600080fd5b506103c4610f3c565b3480156105ba57600080fd5b506103c46103e881565b3480156105d057600080fd5b506103c460115481565b3480156105e657600080fd5b50604051601281526020016103a5565b34801561060257600080fd5b5061052c610611366004613c1d565b610fbb565b34801561062257600080fd5b5061052c61110f565b34801561063757600080fd5b50600c54610391906001600160a01b031681565b34801561065757600080fd5b506014546104a39060ff1681565b34801561067157600080fd5b506103c4610680366004613c60565b611196565b34801561069157600080fd5b5061052c6106a0366004613c60565b6111ca565b3480156106b157600080fd5b5061052c6106c03660046139d7565b611268565b3480156106d157600080fd5b506104a36106e03660046139d7565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561070a57600080fd5b506014546104a390610100900460ff1681565b34801561072957600080fd5b50601854610391906001600160a01b031681565b34801561074957600080fd5b5061052c610758366004613c87565b61146a565b34801561076957600080fd5b506103c460155481565b34801561077f57600080fd5b5061052c61078e3660046139d7565b6114dd565b34801561079f57600080fd5b506103c46107ae3660046139d7565b6001600160a01b031660009081526020819052604090205490565b3480156107d557600080fd5b5061052c6116bb565b3480156107ea57600080fd5b5061052c6117e0565b3480156107ff57600080fd5b5061052c61080e366004613c87565b611837565b34801561081f57600080fd5b50601754610391906001600160a01b031681565b34801561083f57600080fd5b506016546001600160a01b0316610391565b34801561085d57600080fd5b506104a3611a52565b34801561087257600080fd5b5061052c611ac2565b34801561088757600080fd5b506040805180820190915260098152680424142595053594f560bc1b6020820152610457565b3480156108b957600080fd5b506104a36108c83660046139ab565b611d18565b3480156108d957600080fd5b5061052c6108e8366004613c1d565b611d2f565b3480156108f957600080fd5b5061052c6109083660046139d7565b611e7a565b34801561091957600080fd5b5061052c6109283660046139d7565b612014565b34801561093957600080fd5b506012546104a39060ff1681565b34801561095357600080fd5b5061052c610962366004613cb5565b612101565b34801561097357600080fd5b50600a546109a49061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103a5565b3480156109de57600080fd5b5061052c6109ed3660046139f4565b6121a8565b3480156109fe57600080fd5b506103c4610a0d3660046139f4565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a4457600080fd5b5061052c610a533660046139d7565b61228a565b348015610a6457600080fd5b5061052c61268b565b348015610a7957600080fd5b50600d54600e54610a94916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016103a5565b348015610ac057600080fd5b5061052c610acf366004613cd3565b612764565b348015610ae057600080fd5b50600f546104a390610100900460ff1681565b348015610aff57600080fd5b5061052c610b0e366004613c87565b612a24565b6000610b20338484612a97565b5060015b92915050565b6016546001600160a01b03163314610b775760405162461bcd60e51b8152602060048201526011602482015260008051602061402783398151915260448201526064015b60405180910390fd5b60085460ff16610b8657600080fd5b6001600160a01b0382163014801590610ba857506001600160a01b0381163014155b8015610bc25750600c546001600160a01b03838116911614155b8015610bdc5750600c546001600160a01b03828116911614155b610c165760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610b6e565b806001600160a01b0316826001600160a01b031603610c78576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560079093529220805490911682179055610c7490829061146a565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526007909252808320805486168317905592825291902080549092168117909155610ce290839061146a565b610c7481600161146a565b6000610cfb6012600a613dff565b610d0a9064813893ee00613e0e565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610d74576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610d6e908490613e25565b90915550505b610d7f848484612b90565b949350505050565b6016546001600160a01b03163314610dcf5760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b8051825114610e205760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b6e565b60005b82518161ffff161015610f3757610e3c6012600a613dff565b828261ffff1681518110610e5257610e52613e38565b6020026020010151610e649190613e0e565b336000908152602081905260409020541015610ec25760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610b6e565b610f2433848361ffff1681518110610edc57610edc613e38565b60200260200101516012600a610ef29190613dff565b858561ffff1681518110610f0857610f08613e38565b6020026020010151610f1a9190613e0e565b6000806001612f1b565b5080610f2f81613e4e565b915050610e23565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610f969190613e6f565b610fa26012600a613dff565b610fb19064813893ee00613e0e565b610d0a9190613e25565b6016546001600160a01b031633146110035760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b600b5460ff16156110565760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610b6e565b6103e88361ffff161115801561107257506103e88261ffff1611155b801561108457506103e88161ffff1611155b6110d05760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b6e565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6017546001600160a01b0316331461117a5760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610b6e565b6111846000612014565b601780546001600160a01b0319169055565b600c546001600160a01b0316600090815260208190526040812054612710906111c0908490613e0e565b610b249190613e82565b6016546001600160a01b031633146112125760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b60968111156112635760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610b6e565b601355565b6016546001600160a01b031633146112b05760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b6001600160a01b03811661132c5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b6e565b61deac196001600160a01b038216016113ad5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b6e565b6016546113c4906001600160a01b0316600061146a565b6113cf81600161146a565b6016546001600160a01b031660009081526020819052604090205415611418576016546001600160a01b031660008181526020819052604090205461141691908390610f1a565b505b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6016546001600160a01b031633146114b25760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6016546001600160a01b031633146115255760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b60145460ff161561153557600080fd5b306001600160a01b0382160361158d5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b6e565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611613575060408051601f3d908101601f1916820190925261161091810190613ea4565b60015b61161c57600080fd5b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560165492546116999383169291900416600019612a97565b600b54610f3790309061010090046001600160a01b0316600019612a97565b50565b6016546001600160a01b031633146117035760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b60145460ff1661177b5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610b6e565b601654611792906001600160a01b0316600061146a565b601680546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6016546001600160a01b031633146118285760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b600b805460ff19166001179055565b6016546001600160a01b0316331461187f5760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b8061190e576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b1580156118f257600080fd5b505af1158015611906573d6000803e3d6000fd5b505050505050565b60025415611975576203f480600254426119289190613e25565b116119755760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610b6e565b6001600160a01b03821660009081526001602052604090205460ff16156119de5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b6e565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401600060405180830381600087803b1580156118f257600080fd5b6016546000906001600160a01b03163314611a9d5760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b600b54611abc90309061010090046001600160a01b0316600019612a97565b50600190565b6016546001600160a01b03163314611b0a5760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b60145460ff1615611b5d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b6e565b601454610100900460ff16611bb45760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b6e565b6014546201000090046001600160a01b0316611be4576014805462010000600160b01b0319163062010000021790555b601454600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611c5657600080fd5b505af1925050508015611c67575060015b50601454600c546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611cea575060408051601f3d908101601f19168201909252611ce791810190613ed3565b60015b15611cf9576010919091556011555b6014805460ff1990811660011790915560088054909116905542601555565b6000611d25338484612b90565b5060019392505050565b6016546001600160a01b03163314611d775760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b600a805461ffff8381166401000000000265ffff0000000019868316620100000263ffffffff1990941692881692909217929092171617905580611dbb8385613ef7565b611dc59190613ef7565b600a805467ffff0000000000001916660100000000000061ffff93841602179055600954600091611dff9162010000810482169116613ef7565b600a5461ffff91821692506601000000000000900416811015611e745760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610b6e565b50505050565b6016546001600160a01b03163314611ec25760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b601454610100900460ff1615611f2a57306001600160a01b03821603611f2a5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b6e565b6016546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa59190613f19565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611ff0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f379190613f32565b6017546001600160a01b0316331461207f5760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610b6e565b6018546001600160a01b031680156120bc576001600160a01b0381166000908152600460205260408120805460ff191690556120bc90829061146a565b601880546001600160a01b0319166001600160a01b0384169081179091556000908152600460205260409020805460ff19166001908117909155610c7490839061146a565b6016546001600160a01b031633146121495760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b600f805461ff001916610100841515908102919091179091556012805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6016546001600160a01b031633146121f05760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b6001600160a01b0382161580159061221057506001600160a01b03811615155b61225c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b6e565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6016546001600160a01b031633146122d25760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b601454610100900460ff161561232a5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610b6e565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561236f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123939190613f4f565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124049190613f4f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561244f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124739190613f4f565b600c546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661260957816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125029190613f4f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561254f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125739190613f4f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156125c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e49190613f4f565b600c80546001600160a01b0319166001600160a01b0392909216919091179055612625565b600c80546001600160a01b0319166001600160a01b0383161790555b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c5482166000908152600160208190526040909120805460ff191690911790559154610f37923092910416600019612a97565b6016546001600160a01b031633146126d35760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b601454610100900460ff161561272b5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b6e565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156116b8573d6000803e3d6000fd5b6016546001600160a01b031633146127ac5760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b82846127ba6012600a613dff565b6127c99064813893ee00613e0e565b6127d39190613e0e565b6127dd9190613e82565b60105580826127ee6012600a613dff565b6127fd9064813893ee00613e0e565b6128079190613e0e565b6128119190613e82565b601181905560105411156128715760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b6e565b600c546001600160a01b03166000908152602081905260409020546127109061289b906096613e0e565b6128a59190613e82565b60115411156129025760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b6e565b620f42406129126012600a613dff565b6129219064813893ee00613e0e565b61292b9190613e82565b60115410156129935760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b6e565b620f42406129a36012600a613dff565b6129b29064813893ee00613e0e565b6129bc9190613e82565b6010541015611e745760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b6e565b6016546001600160a01b03163314612a6c5760405162461bcd60e51b815260206004820152601160248201526000805160206140278339815191526044820152606401610b6e565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612ae35760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b6e565b6001600160a01b038216612b2f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b6e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612bf65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b6e565b6001600160a01b038316612c585760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b6e565b60008211612cba5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b6e565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612ce85760019250612d16565b6001600160a01b03861660009081526001602052604090205460ff1615612d125760019150612d16565b5060015b612d208787613128565b15612e215760145460ff16612e215780612d7c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b6e565b6001600160a01b03871660009081526005602052604090205460ff16158015612dbe57506001600160a01b03861660009081526005602052604090205460ff16155b15612e215760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b6e565b8115612f0257600f5460ff16612f0257600f54610100900460ff168015612e6157506001600160a01b03861660009081526007602052604090205460ff16155b8015612e8657506001600160a01b03871660009081526007602052604090205460ff16155b15612f0257306000908152602081905260409020546010548110612f005760115460125460ff1615612eea57601354600c546001600160a01b031660009081526020819052604090205461271091612edd91613e0e565b612ee79190613e82565b90505b808210612ef5578091505b612efe8261323f565b505b505b612f10878787868686612f1b565b979650505050505050565b6001600160a01b03861660009081526006602052604081205460019060ff1680612f5d57506001600160a01b03871660009081526006602052604090205460ff165b15612f66575060005b6001600160a01b03881660009081526020819052604081208054889290612f8e908490613e25565b909155506000905081612fa15786612fad565b612fad898888886136fc565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612fe39190613e6f565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161302f91815260200190565b60405180910390a3601454610100900460ff16613119576130508989613808565b601454610100900460ff1615801561306d575061306d8989613128565b801561309257506001600160a01b03891660009081526005602052604090205460ff16155b80156130b757506001600160a01b03881660009081526005602052604090205460ff16155b80156130c1575083155b156131195760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b6e565b50600198975050505050505050565b6016546000906001600160a01b0384811691161480159061315757506016546001600160a01b03838116911614155b801561316e57506016546001600160a01b03163214155b801561319357506001600160a01b03821660009081526004602052604090205460ff16155b80156131b857506001600160a01b03831660009081526004602052604090205460ff16155b80156131cf57506001600160a01b03821661dead14155b80156131e357506001600160a01b03821615155b80156131f857506001600160a01b0383163014155b801561321857506014546001600160a01b03848116620100009092041614155b801561323857506014546001600160a01b03838116620100009092041614155b9392505050565b600f805460ff1916600117905560408051608081018252600a5461ffff808216835262010000820481166020840152640100000000820481169383019390935266010000000000009004909116606082018190526000036132a057506136ef565b306000908152600360209081526040808320600b5461010090046001600160a01b031684529091529020546000191461330357306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff16856133249190613e0e565b61332e9190613e82565b6133389190613e82565b905060006133468285613e25565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061338057613380613e38565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134179190613f4f565b8160018151811061342a5761342a613e38565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac94790613477908590600090869030904290600401613f6c565b600060405180830381600087803b15801561349157600080fd5b505af19250505080156134a2575060015b6134af57505050506136ef565b476000836134bd8684613e0e565b6134c79190613e82565b905084156135aa57600b5460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af19350505050801561355e575060408051601f3d908101601f1916820190925261355b91810190613fdd565b60015b61356d575050505050506136ef565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6135b48183613e25565b91508560000151866060018181516135cc919061400b565b61ffff90811690915260608801516040890151600093508392918216916135f4911686613e0e565b6135fe9190613e82565b9050600061360c8286613e25565b60208a015190915061ffff161561367a57600d546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d806000811461366f576040519150601f19603f3d011682016040523d82523d6000602084013e613674565b606091505b50909350505b604089015161ffff16156136e557600e546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d80600081146136da576040519150601f19603f3d011682016040523d82523d6000602084013e6136df565b606091505b50909350505b5050505050505050505b50600f805460ff19169055565b6000808315613712575060095461ffff1661373c565b821561372b575060095462010000900461ffff1661373c565b50600954640100000000900461ffff165b6014546201000090046001600160a01b03163014801561375d575046606114155b1561376757506111945b806000036137785784915050610d7f565b60006127106137878388613e0e565b6137919190613e82565b905080156137fe5730600090815260208190526040812080548392906137b8908490613e6f565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612f108187613e25565b601454610100900460ff161561386c5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b6e565b6138768282613128565b1580156138905750600c546001600160a01b038281169116145b15610c74576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff001916610100179081905562010000900416613908576014805462010000600160b01b0319163062010000021790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200161219c565b600060208083528351808285015260005b8181101561397557858101830151858201604001528201613959565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116b857600080fd5b600080604083850312156139be57600080fd5b82356139c981613996565b946020939093013593505050565b6000602082840312156139e957600080fd5b813561323881613996565b60008060408385031215613a0757600080fd5b8235613a1281613996565b91506020830135613a2281613996565b809150509250929050565b600080600060608486031215613a4257600080fd5b8335613a4d81613996565b92506020840135613a5d81613996565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613aad57613aad613a6e565b604052919050565b600067ffffffffffffffff821115613acf57613acf613a6e565b5060051b60200190565b600082601f830112613aea57600080fd5b81356020613aff613afa83613ab5565b613a84565b82815260059290921b84018101918181019086841115613b1e57600080fd5b8286015b84811015613b395780358352918301918301613b22565b509695505050505050565b60008060408385031215613b5757600080fd5b823567ffffffffffffffff80821115613b6f57600080fd5b818501915085601f830112613b8357600080fd5b81356020613b93613afa83613ab5565b82815260059290921b84018101918181019089841115613bb257600080fd5b948201945b83861015613bd9578535613bca81613996565b82529482019490820190613bb7565b96505086013592505080821115613bef57600080fd5b50613bfc85828601613ad9565b9150509250929050565b803561ffff81168114613c1857600080fd5b919050565b600080600060608486031215613c3257600080fd5b613c3b84613c06565b9250613c4960208501613c06565b9150613c5760408501613c06565b90509250925092565b600060208284031215613c7257600080fd5b5035919050565b80151581146116b857600080fd5b60008060408385031215613c9a57600080fd5b8235613ca581613996565b91506020830135613a2281613c79565b60008060408385031215613cc857600080fd5b8235613ca581613c79565b60008060008060808587031215613ce957600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613d56578160001904821115613d3c57613d3c613d05565b80851615613d4957918102915b93841c9390800290613d20565b509250929050565b600082613d6d57506001610b24565b81613d7a57506000610b24565b8160018114613d905760028114613d9a57613db6565b6001915050610b24565b60ff841115613dab57613dab613d05565b50506001821b610b24565b5060208310610133831016604e8410600b8410161715613dd9575081810a610b24565b613de38383613d1b565b8060001904821115613df757613df7613d05565b029392505050565b600061323860ff841683613d5e565b8082028115828204841417610b2457610b24613d05565b81810381811115610b2457610b24613d05565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613e6557613e65613d05565b6001019392505050565b80820180821115610b2457610b24613d05565b600082613e9f57634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215613eb757600080fd5b8251613ec281613996565b6020840151909250613a2281613996565b60008060408385031215613ee657600080fd5b505080516020909101519092909150565b61ffff818116838216019080821115613f1257613f12613d05565b5092915050565b600060208284031215613f2b57600080fd5b5051919050565b600060208284031215613f4457600080fd5b815161323881613c79565b600060208284031215613f6157600080fd5b815161323881613996565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613fbc5784516001600160a01b031683529383019391830191600101613f97565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613ff257600080fd5b8351925060208401519150604084015190509250925092565b61ffff828116828216039080821115613f1257613f12613d0556fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a26469706673582212202efc40a6c13467a99a004a03bfff900bfe629ec1962534e1446a77792b17991e64736f6c63430008130033

Deployed Bytecode Sourcemap

3889:22353:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5518:73;;;;;;;;;;;;5549:42;5518:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5518:73:0;;;;;;;;5984:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;5984:28:0;245:177:1;4963:107:0;;;;;;;;;;-1:-1:-1;4963:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;633:6:1;666:15;;;648:34;;718:15;;;713:2;698:18;;691:43;770:15;;750:18;;;743:43;;;;611:2;596:18;4963:107:0;427:365:1;10331:80:0;;;;;;;;;;-1:-1:-1;10403:5:0;;;;;;;;;;;;-1:-1:-1;;;10403:5:0;;;;10331:80;;;;;;;:::i;5457:26::-;;;;;;;;;;-1:-1:-1;5457:26:0;;;;;;;-1:-1:-1;;;;;5457:26:0;;;5424;;;;;;;;;;-1:-1:-1;5424:26:0;;;;;;;;;;;1763:14:1;;1756:22;1738:41;;1726:2;1711:18;5424:26:0;1598:187:1;10939:161:0;;;;;;;;;;-1:-1:-1;10939:161:0;;;;;:::i;:::-;;:::i;14025:140::-;;;;;;;;;;-1:-1:-1;14025:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14123:34:0;14099:4;14123:34;;;:25;:34;;;;;;;;;14025:140;17301:809;;;;;;;;;;-1:-1:-1;17301:809:0;;;;;:::i;:::-;;:::i;:::-;;10066:83;;;;;;;;;;;;;:::i;11609:306::-;;;;;;;;;;-1:-1:-1;11609:306:0;;;;;:::i;:::-;;:::i;24192:447::-;;;;;;;;;;-1:-1:-1;24192:447:0;;;;;:::i;:::-;;:::i;6092:33::-;;;;;;;;;;;;;;;;14329:141;;;;;;;;;;;;;:::i;5221:42::-;;;;;;;;;;;;5259:4;5221:42;;6019:25;;;;;;;;;;;;;;;;10155:80;;;;;;;;;;-1:-1:-1;10155:80:0;;4634:2;6004:36:1;;5992:2;5977:18;10155:80:0;5862:184:1;14668:453:0;;;;;;;;;;-1:-1:-1;14668:453:0;;;;;:::i;:::-;;:::i;9455:221::-;;;;;;;;;;;;;:::i;5490:21::-;;;;;;;;;;-1:-1:-1;5490:21:0;;;;-1:-1:-1;;;;;5490:21:0;;;6132:34;;;;;;;;;;-1:-1:-1;6132:34:0;;;;;;;;15901:189;;;;;;;;;;-1:-1:-1;15901:189:0;;;;;:::i;:::-;;:::i;16805:217::-;;;;;;;;;;-1:-1:-1;16805:217:0;;;;;:::i;:::-;;:::i;7762:654::-;;;;;;;;;;-1:-1:-1;7762:654:0;;;;;:::i;:::-;;:::i;13748:127::-;;;;;;;;;;-1:-1:-1;13748:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13839:28:0;13815:4;13839:28;;;:19;:28;;;;;;;;;13748:127;6173:36;;;;;;;;;;-1:-1:-1;6173:36:0;;;;;;;;;;;8780:23;;;;;;;;;;-1:-1:-1;8780:23:0;;;;-1:-1:-1;;;;;8780:23:0;;;13883:134;;;;;;;;;;-1:-1:-1;13883:134:0;;;;;:::i;:::-;;:::i;6246:26::-;;;;;;;;;;;;;;;;13183:557;;;;;;;;;;-1:-1:-1;13183:557:0;;;;;:::i;:::-;;:::i;10641:117::-;;;;;;;;;;-1:-1:-1;10641:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;10734:16:0;10707:7;10734:16;;;;;;;;;;;;10641:117;8424:310;;;;;;;;;;;;;:::i;14478:182::-;;;;;;;;;;;;;:::i;12611:564::-;;;;;;;;;;-1:-1:-1;12611:564:0;;;;;:::i;:::-;;:::i;8742:31::-;;;;;;;;;;-1:-1:-1;8742:31:0;;;;-1:-1:-1;;;;;8742:31:0;;;10417:79;;;;;;;;;;-1:-1:-1;10487:6:0;;-1:-1:-1;;;;;10487:6:0;10417:79;;11426:175;;;;;;;;;;;;;:::i;22953:737::-;;;;;;;;;;;;;:::i;10241:84::-;;;;;;;;;;-1:-1:-1;10315:7:0;;;;;;;;;;;;-1:-1:-1;;;10315:7:0;;;;10241:84;;10766:165;;;;;;;;;;-1:-1:-1;10766:165:0;;;;;:::i;:::-;;:::i;15129:444::-;;;;;;;;;;-1:-1:-1;15129:444:0;;;;;:::i;:::-;;:::i;23888:296::-;;;;;;;;;;-1:-1:-1;23888:296:0;;;;;:::i;:::-;;:::i;8965:482::-;;;;;;;;;;-1:-1:-1;8965:482:0;;;;;:::i;:::-;;:::i;6051:34::-;;;;;;;;;;-1:-1:-1;6051:34:0;;;;;;;;17030:263;;;;;;;;;;-1:-1:-1;17030:263:0;;;;;:::i;:::-;;:::i;5079:133::-;;;;;;;;;;-1:-1:-1;5079:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7857:6:1;7890:15;;;7872:34;;7942:15;;;7937:2;7922:18;;7915:43;7994:15;;;7974:18;;;7967:43;;;;8046:15;;;8041:2;8026:18;;8019:43;7834:3;7819:19;5079:133:0;7624:444:1;15581:312:0;;;;;;;;;;-1:-1:-1;15581:312:0;;;;;:::i;:::-;;:::i;10502:133::-;;;;;;;;;;-1:-1:-1;10502:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10604:19:0;;;10586:7;10604:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10502:133;11923:680;;;;;;;;;;-1:-1:-1;11923:680:0;;;;;:::i;:::-;;:::i;23698:182::-;;;;;;;;;;;;;:::i;5708:199::-;;;;;;;;;;-1:-1:-1;5708:199:0;;;;;;-1:-1:-1;;;;;5708:199:0;;;;;;;;;;;-1:-1:-1;;;;;8767:15:1;;;8749:34;;8819:15;;;;8814:2;8799:18;;8792:43;8661:18;5708:199:0;8482:359:1;16098:699:0;;;;;;;;;;-1:-1:-1;16098:699:0;;;;;:::i;:::-;;:::i;5938:39::-;;;;;;;;;;-1:-1:-1;5938:39:0;;;;;;;;;;;14173:148;;;;;;;;;;-1:-1:-1;14173:148:0;;;;;:::i;:::-;;:::i;10939:161::-;11016:4;11033:37;11042:10;11054:7;11063:6;11033:8;:37::i;:::-;-1:-1:-1;11088:4:0;10939:161;;;;;:::o;17301:809::-;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;;;;;;;;;17405:23:::1;::::0;::::1;;17397:32;;;::::0;::::1;;-1:-1:-1::0;;;;;17448:23:0;::::1;17466:4;17448:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;17493:24:0;::::1;17512:4;17493:24;;17448:69;:107;;;;-1:-1:-1::0;17539:6:0::1;::::0;-1:-1:-1;;;;;17539:16:0;;::::1;:6:::0;::::1;:16;;17448:107;:146;;;;-1:-1:-1::0;17577:6:0::1;::::0;-1:-1:-1;;;;;17577:17:0;;::::1;:6:::0;::::1;:17;;17448:146;17440:170;;;::::0;-1:-1:-1;;;17440:170:0;;9784:2:1;17440:170:0::1;::::0;::::1;9766:21:1::0;9823:2;9803:18;;;9796:30;-1:-1:-1;;;9842:18:1;;;9835:41;9893:18;;17440:170:0::1;9582:335:1::0;17440:170:0::1;17635:7;-1:-1:-1::0;;;;;17625:17:0::1;:6;-1:-1:-1::0;;;;;17625:17:0::1;::::0;17621:482:::1;;-1:-1:-1::0;;;;;17659:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;17688:4:::1;-1:-1:-1::0;;17659:33:0;;::::1;::::0;::::1;::::0;;;17707:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;17754:34:::1;::::0;17659:26;;17754:19:::1;:34::i;:::-;17301:809:::0;;:::o;17621:482::-:1;-1:-1:-1::0;;;;;17821:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;17849:4:::1;-1:-1:-1::0;;17821:32:0;;::::1;::::0;::::1;::::0;;;17868:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;17916:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;17962:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;18009:33:::1;::::0;17821:25;;18009:19:::1;:33::i;:::-;18057:34;18077:7;18086:4;18057:19;:34::i;10066:83::-:0;10121:7;4695:13;4634:2;4695;:13;:::i;:::-;4678:30;;4474:15;4678:30;:::i;:::-;10132:14;;10066:83;:::o;11609:306::-;-1:-1:-1;;;;;11730:19:0;;11709:4;11730:19;;;:11;:19;;;;;;;;11750:10;11730:31;;;;;;;;-1:-1:-1;;11730:52:0;11726:126;;-1:-1:-1;;;;;11799:19:0;;;;;;:11;:19;;;;;;;;11819:10;11799:31;;;;;;;:41;;11834:6;;11799:19;:41;;11834:6;;11799:41;:::i;:::-;;;;-1:-1:-1;;11726:126:0;11871:36;11881:6;11889:9;11900:6;11871:9;:36::i;:::-;11864:43;11609:306;-1:-1:-1;;;;11609:306:0:o;24192:447::-;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;24327:7:::1;:14;24308:8;:15;:33;24300:67;;;::::0;-1:-1:-1;;;24300:67:0;;11945:2:1;24300:67:0::1;::::0;::::1;11927:21:1::0;11984:2;11964:18;;;11957:30;12023:23;12003:18;;;11996:51;12064:18;;24300:67:0::1;11743:345:1::0;24300:67:0::1;24383:8;24378:254;24401:8;:15;24397:1;:19;;;24378:254;;;24482:13;4634:2;24482;:13;:::i;:::-;24471:7;24479:1;24471:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24456:10;10707:7:::0;10734:16;;;;;;;;;;;24446:49:::1;;24438:80;;;::::0;-1:-1:-1;;;24438:80:0;;12427:2:1;24438:80:0::1;::::0;::::1;12409:21:1::0;12466:2;12446:18;;;12439:30;12505:20;12485:18;;;12478:48;12543:18;;24438:80:0::1;12225:342:1::0;24438:80:0::1;24533:87;24550:10;24562:8;24571:1;24562:11;;;;;;;;;;:::i;:::-;;;;;;;4634:2;24586;:13;;;;:::i;:::-;24575:7;24583:1;24575:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24601:5;24608::::0;24615:4:::1;24533:16;:87::i;:::-;-1:-1:-1::0;24418:3:0;::::1;::::0;::::1;:::i;:::-;;;;24378:254;;;;24192:447:::0;;:::o;14329:141::-;14382:7;10734:16;;;;;;5549:42;10734:16;;;;14421:39;;10734:16;14421:39;:::i;:::-;4695:13;4634:2;4695;:13;:::i;:::-;4678:30;;4474:15;4678:30;:::i;:::-;14410:51;;;;:::i;14668:453::-;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;14776:14:::1;::::0;::::1;;14775:15;14767:45;;;::::0;-1:-1:-1;;;14767:45:0;;13106:2:1;14767:45:0::1;::::0;::::1;13088:21:1::0;13145:2;13125:18;;;13118:30;13184:19;13164:18;;;13157:47;13221:18;;14767:45:0::1;12904:341:1::0;14767:45:0::1;5259:4;14831:6;:21;;;;:65;;;;;5309:4;14873:7;:23;;;;14831:65;:117;;;;;5363:4;14917:11;:31;;;;14831:117;14823:170;;;::::0;-1:-1:-1;;;14823:170:0;;13452:2:1;14823:170:0::1;::::0;::::1;13434:21:1::0;13491:2;13471:18;;;13464:30;13530:25;13510:18;;;13503:53;13573:18;;14823:170:0::1;13250:347:1::0;14823:170:0::1;15004:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;15040:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;15078:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;14668:453::o;9455:221::-;9533:16;;-1:-1:-1;;;;;9533:16:0;9519:10;:30;9511:83;;;;-1:-1:-1;;;9511:83:0;;13804:2:1;9511:83:0;;;13786:21:1;13843:2;13823:18;;;13816:30;13882:34;13862:18;;;13855:62;-1:-1:-1;;;13933:18:1;;;13926:38;13981:19;;9511:83:0;13602:404:1;9511:83:0;9605:23;9625:1;9605:11;:23::i;:::-;9639:16;:29;;-1:-1:-1;;;;;;9639:29:0;;;9455:221::o;15901:189::-;16030:6;;-1:-1:-1;;;;;16030:6:0;15992:7;10734:16;;;;;;;;;;;5410:5;;16020:41;;16040:21;;16020:41;:::i;:::-;16019:62;;;;:::i;16805:217::-;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;16935:3:::1;16909:22;:29;;16901:64;;;::::0;-1:-1:-1;;;16901:64:0;;14435:2:1;16901:64:0::1;::::0;::::1;14417:21:1::0;14474:2;14454:18;;;14447:30;14513:24;14493:18;;;14486:52;14555:18;;16901:64:0::1;14233:346:1::0;16901:64:0::1;16976:13;:38:::0;16805:217::o;7762:654::-;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;-1:-1:-1;;;;;7841:22:0;::::1;7833:96;;;::::0;-1:-1:-1;;;7833:96:0;;14786:2:1;7833:96:0::1;::::0;::::1;14768:21:1::0;14825:2;14805:18;;;14798:30;14864:34;14844:18;;;14837:62;14935:31;14915:18;;;14908:59;14984:19;;7833:96:0::1;14584:425:1::0;7833:96:0::1;-1:-1:-1::0;;;;;;;7948:16:0;::::1;::::0;7940:90:::1;;;::::0;-1:-1:-1;;;7940:90:0;;14786:2:1;7940:90:0::1;::::0;::::1;14768:21:1::0;14825:2;14805:18;;;14798:30;14864:34;14844:18;;;14837:62;14935:31;14915:18;;;14908:59;14984:19;;7940:90:0::1;14584:425:1::0;7940:90:0::1;8061:6;::::0;8041:34:::1;::::0;-1:-1:-1;;;;;8061:6:0::1;;8041:19;:34::i;:::-;8086:35;8106:8;8116:4;8086:19;:35::i;:::-;8156:6;::::0;-1:-1:-1;;;;;8156:6:0::1;8166:1;10734:16:::0;;;;;;;;;;;8146:21;8142:127:::1;;8201:6;::::0;-1:-1:-1;;;;;8201:6:0::1;10707:7:::0;10734:16;;;;;;;;;;;8184:73:::1;::::0;8201:6;8209:8;;8219:17:::1;10641:117:::0;8184:73:::1;;8142:127;8308:6;::::0;;-1:-1:-1;;;;;8325:17:0;;::::1;-1:-1:-1::0;;;;;;8325:17:0;::::1;::::0;::::1;::::0;;;8358:40:::1;::::0;8308:6;::::1;::::0;8325:17;8308:6;;8358:40:::1;::::0;8289:16:::1;::::0;8358:40:::1;7822:594;7762:654:::0;:::o;13883:134::-;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;-1:-1:-1;;;;;13971:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13971:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13883:134::o;13183:557::-;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;13258:14:::1;::::0;::::1;;13257:15;13249:24;;;::::0;::::1;;13308:4;-1:-1:-1::0;;;;;13292:21:0;::::1;::::0;13284:48:::1;;;::::0;-1:-1:-1;;;13284:48:0;;15216:2:1;13284:48:0::1;::::0;::::1;15198:21:1::0;15255:2;15235:18;;;15228:30;15294:16;15274:18;;;15267:44;15328:18;;13284:48:0::1;15014:338:1::0;13284:48:0::1;13343:11;:31:::0;;-1:-1:-1;;;;;;13343:31:0::1;::::0;-1:-1:-1;;;;;13343:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;13389:23:::1;::::0;;-1:-1:-1;;;13389:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;13389:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;13389:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;13389:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;13385:348;;13722:8;::::0;::::1;13385:348;13476:9;:29:::0;;-1:-1:-1;;13476:29:0::1;;-1:-1:-1::0;;;;;13476:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;13507:6:::1;:22:::0;;-1:-1:-1;;;;;;13507:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13531:15:0;;;-1:-1:-1;13531:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;13531:22:0::1;::::0;;::::1;::::0;;13578:6:::1;::::0;13594:9;;13569:55:::1;::::0;13578:6;::::1;::::0;13594:9;;::::1;;-1:-1:-1::0;;13569:8:0::1;:55::i;:::-;13671:9;::::0;13639:62:::1;::::0;13656:4:::1;::::0;13671:9:::1;::::0;::::1;-1:-1:-1::0;;;;;13671:9:0::1;-1:-1:-1::0;;13639:8:0::1;:62::i;13385:348::-;13183:557:::0;:::o;8424:310::-;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;8491:14:::1;::::0;::::1;;8483:74;;;::::0;-1:-1:-1;;;8483:74:0;;15949:2:1;8483:74:0::1;::::0;::::1;15931:21:1::0;15988:2;15968:18;;;15961:30;16027:34;16007:18;;;16000:62;16098:17;16078:18;;;16071:45;16133:19;;8483:74:0::1;15747:411:1::0;8483:74:0::1;8588:6;::::0;8568:34:::1;::::0;-1:-1:-1;;;;;8588:6:0::1;;8568:19;:34::i;:::-;8632:6;::::0;;-1:-1:-1;;;;;;8649:19:0;::::1;::::0;;;8684:42:::1;::::0;-1:-1:-1;;;;;8632:6:0;;::::1;::::0;8613:16:::1;::::0;8632:6;;8684:42:::1;::::0;8613:16;;8684:42:::1;8472:262;8424:310::o:0;14478:182::-;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;14631:14:::1;:21:::0;;-1:-1:-1;;14631:21:0::1;14648:4;14631:21;::::0;;14478:182::o;12611:564::-;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;12693:7:::1;12688:480;;-1:-1:-1::0;;;;;12717:13:0;;::::1;12733:5;12717:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12717:21:0::1;::::0;;12753:11:::1;::::0;:34;;-1:-1:-1;;;12753:34:0;;::::1;::::0;::::1;16331:74:1::0;;;;16421:18;;;16414:50;;;;12753:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;16304:18:1;;12753:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17301:809:::0;;:::o;12688:480::-:1;12824:17;::::0;:22;12820:135:::1;;12913:6;12893:17;;12875:15;:35;;;;:::i;:::-;:44;12867:72;;;::::0;-1:-1:-1;;;12867:72:0;;16677:2:1;12867:72:0::1;::::0;::::1;16659:21:1::0;16716:2;16696:18;;;16689:30;16755:17;16735:18;;;16728:45;16790:18;;12867:72:0::1;16475:339:1::0;12867:72:0::1;-1:-1:-1::0;;;;;12978:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;12977:14;12969:54;;;::::0;-1:-1:-1;;;12969:54:0;;17021:2:1;12969:54:0::1;::::0;::::1;17003:21:1::0;17060:2;17040:18;;;17033:30;17099:29;17079:18;;;17072:57;17146:18;;12969:54:0::1;16819:351:1::0;12969:54:0::1;-1:-1:-1::0;;;;;13038:13:0;;::::1;;::::0;;;13054:4:::1;13038:13;::::0;;;;;;;;:20;;-1:-1:-1;;13038:20:0::1;::::0;::::1;::::0;;13093:15:::1;13073:17;:35:::0;13123:11:::1;::::0;:33;;-1:-1:-1;;;13123:33:0;;::::1;::::0;::::1;16331:74:1::0;;;;16421:18;;;16414:50;13123:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;16304:18:1;;13123:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;11426:175:::0;7616:6;;11492:4;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;11541:9:::1;::::0;11509:62:::1;::::0;11526:4:::1;::::0;11541:9:::1;::::0;::::1;-1:-1:-1::0;;;;;11541:9:0::1;-1:-1:-1::0;;11509:8:0::1;:62::i;:::-;-1:-1:-1::0;11589:4:0::1;11426:175:::0;:::o;22953:737::-;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;23015:14:::1;::::0;::::1;;23014:15;23006:52;;;::::0;-1:-1:-1;;;23006:52:0;;17377:2:1;23006:52:0::1;::::0;::::1;17359:21:1::0;17416:2;17396:18;;;17389:30;17455:26;17435:18;;;17428:54;17499:18;;23006:52:0::1;17175:348:1::0;23006:52:0::1;23077:16;::::0;::::1;::::0;::::1;;;23069:53;;;::::0;-1:-1:-1;;;23069:53:0;;17730:2:1;23069:53:0::1;::::0;::::1;17712:21:1::0;17769:2;17749:18;;;17742:30;17808:26;17788:18;;;17781:54;17852:18;;23069:53:0::1;17528:348:1::0;23069:53:0::1;23145:11;::::0;;;::::1;-1:-1:-1::0;;;;;23145:11:0::1;23133:106;;23187:11;:40:::0;;-1:-1:-1;;;;;;23187:40:0::1;23221:4;23187:40:::0;::::1;;::::0;;23133:106:::1;23253:11;::::0;23275:6:::1;::::0;23253:87:::1;::::0;-1:-1:-1;;;23253:87:0;;-1:-1:-1;;;;;23275:6:0;;::::1;23253:87;::::0;::::1;18104:74:1::0;18226:10;23290:12:0::1;18214:23:1::0;18194:18;;;18187:51;18286:18;23312:15:0::1;18274:31:1::0;18254:18;;;18247:59;4634:2:0::1;18322:18:1::0;;;18315:45;23253:11:0;;;::::1;;::::0;:21:::1;::::0;18076:19:1;;23253:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;23366:11:0::1;::::0;23397:6:::1;::::0;-1:-1:-1;;;;;23397:6:0;;::::1;10707:7:::0;10734:16;;;;;;;;;;;;;23366:39;;-1:-1:-1;;;23366:39:0;;::::1;::::0;::::1;391:25:1::0;;;;23366:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;23366:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;23366:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;23366:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;23362:207:::0;::::1;;23477:13;:29:::0;;;;23521:10:::1;:27:::0;23362:207:::1;23579:14;:21:::0;;-1:-1:-1;;23579:21:0;;::::1;23596:4;23579:21;::::0;;;23611:23:::1;:31:::0;;;;::::1;::::0;;23667:15:::1;23653:11;:29:::0;22953:737::o;10766:165::-;10844:4;10861:40;10871:10;10883:9;10894:6;10861:9;:40::i;:::-;-1:-1:-1;10919:4:0;;10766:165;-1:-1:-1;;;10766:165:0:o;15129:444::-;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;15234:7:::1;:29:::0;;::::1;15314:33:::0;;::::1;::::0;::::1;-1:-1:-1::0;;15274:29:0;;::::1;::::0;::::1;-1:-1:-1::0;;15274:29:0;;;15234;;::::1;15274::::0;;;;;;;::::1;15314:33;;::::0;;15336:11;15378:21:::1;15294:9:::0;15254;15378:21:::1;:::i;:::-;:35;;;;:::i;:::-;15358:7;:55:::0;;-1:-1:-1;;15358:55:0::1;::::0;::::1;::::0;;::::1;;;::::0;;15459:9:::1;:17:::0;-1:-1:-1;;15440:36:0::1;::::0;15459:17;;::::1;::::0;::::1;::::0;15440:16:::1;:36;:::i;:::-;15495:7;:17:::0;15424:52:::1;::::0;;::::1;::::0;-1:-1:-1;15495:17:0;;::::1;;:26:::0;-1:-1:-1;15495:26:0::1;15487:78;;;::::0;-1:-1:-1;;;15487:78:0;;18996:2:1;15487:78:0::1;::::0;::::1;18978:21:1::0;19035:2;19015:18;;;19008:30;19074:34;19054:18;;;19047:62;-1:-1:-1;;;19125:18:1;;;19118:37;19172:19;;15487:78:0::1;18794:403:1::0;15487:78:0::1;15223:350;15129:444:::0;;;:::o;23888:296::-;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;23966:16:::1;::::0;::::1;::::0;::::1;;;23962:111;;;24024:4;-1:-1:-1::0;;;;;24007:22:0;::::1;::::0;23999:62:::1;;;::::0;-1:-1:-1;;;23999:62:0;;19404:2:1;23999:62:0::1;::::0;::::1;19386:21:1::0;19443:2;19423:18;;;19416:30;19482:29;19462:18;;;19455:57;19529:18;;23999:62:0::1;19202:351:1::0;23999:62:0::1;24137:6;::::0;24145:30:::1;::::0;-1:-1:-1;;;24145:30:0;;24169:4:::1;24145:30;::::0;::::1;160:74:1::0;24105:5:0;;-1:-1:-1;;;;;24122:14:0;;::::1;::::0;::::1;::::0;24137:6;;;::::1;::::0;24122:14;;24145:15:::1;::::0;133:18:1;;24145:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24122:54;::::0;-1:-1:-1;;;;;;24122:54:0::1;::::0;;;;;;-1:-1:-1;;;;;19939:55:1;;;24122:54:0::1;::::0;::::1;19921:74:1::0;20011:18;;;20004:34;19894:18;;24122:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8965:482::-:0;9047:16;;-1:-1:-1;;;;;9047:16:0;9033:10;:30;9025:83;;;;-1:-1:-1;;;9025:83:0;;13804:2:1;9025:83:0;;;13786:21:1;13843:2;13823:18;;;13816:30;13882:34;13862:18;;;13855:62;-1:-1:-1;;;13933:18:1;;;13926:38;13981:19;;9025:83:0;13602:404:1;9025:83:0;9141:8;;-1:-1:-1;;;;;9141:8:0;9164:25;;9160:150;;-1:-1:-1;;;;;9206:30:0;;9239:5;9206:30;;;:17;:30;;;;;:38;;-1:-1:-1;;9206:38:0;;;9259:39;;9224:11;;9259:19;:39::i;:::-;9320:8;:22;;-1:-1:-1;;;;;;9320:22:0;-1:-1:-1;;;;;9320:22:0;;;;;;;;-1:-1:-1;9353:30:0;;;:17;:30;;;;;:37;;-1:-1:-1;;9353:37:0;-1:-1:-1;9353:37:0;;;;;;9401:38;;9320:22;;9401:19;:38::i;17030:263::-;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;17139:19:::1;:33:::0;;-1:-1:-1;;17139:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;17183:22:::1;:47:::0;;-1:-1:-1;;17183:47:0::1;::::0;::::1;;;::::0;;17246:39:::1;::::0;1738:41:1;;;17246:39:0::1;::::0;1726:2:1;1711:18;17246:39:0::1;;;;;;;;17030:263:::0;;:::o;15581:312::-;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;-1:-1:-1;;;;;15695:23:0;::::1;::::0;;::::1;::::0;:52:::1;;-1:-1:-1::0;;;;;;15722:25:0;::::1;::::0;::::1;15695:52;15687:88;;;::::0;-1:-1:-1;;;15687:88:0;;20501:2:1;15687:88:0::1;::::0;::::1;20483:21:1::0;20540:2;20520:18;;;20513:30;20579:25;20559:18;;;20552:53;20622:18;;15687:88:0::1;20299:347:1::0;15687:88:0::1;15786:11;:42:::0;;-1:-1:-1;;;;;15786:42:0;;::::1;-1:-1:-1::0;;;;;;15786:42:0;;::::1;;::::0;;;15839:23;:46;;;;;::::1;::::0;::::1;;::::0;;15581:312::o;11923:680::-;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;12003:16:::1;::::0;::::1;::::0;::::1;;;12002:17;11994:60;;;::::0;-1:-1:-1;;;11994:60:0;;20853:2:1;11994:60:0::1;::::0;::::1;20835:21:1::0;20892:2;20872:18;;;20865:30;20931:32;20911:18;;;20904:60;20981:18;;11994:60:0::1;20651:354:1::0;11994:60:0::1;12065:20;12098:9;12065:43;;12119:16;12149:10;-1:-1:-1::0;;;;;12149:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12138:40:0::1;;12187:4;12194:10;-1:-1:-1::0;;;;;12194:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12138:74;::::0;-1:-1:-1;;;;;;12138:74:0::1;::::0;;;;;;-1:-1:-1;;;;;8767:15:1;;;12138:74:0::1;::::0;::::1;8749:34:1::0;8819:15;;8799:18;;;8792:43;8661:18;;12138:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12231:6;::::0;-1:-1:-1;;;;;12231:6:0;;::::1;12241:5;12223:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;12223:23:0::1;::::0;;12119:93;;-1:-1:-1;12261:22:0;::::1;12257:200;;12320:10;-1:-1:-1::0;;;;;12320:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12309:43:0::1;;12361:4;12368:10;-1:-1:-1::0;;;;;12368:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12309:77;::::0;-1:-1:-1;;;;;;12309:77:0::1;::::0;;;;;;-1:-1:-1;;;;;8767:15:1;;;12309:77:0::1;::::0;::::1;8749:34:1::0;8819:15;;8799:18;;;8792:43;8661:18;;12309:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12300:6;:86:::0;;-1:-1:-1;;;;;;12300:86:0::1;-1:-1:-1::0;;;;;12300:86:0;;;::::1;::::0;;;::::1;::::0;;12257:200:::1;;;12428:6;:17:::0;;-1:-1:-1;;;;;;12428:17:0::1;-1:-1:-1::0;;;;;12428:17:0;::::1;;::::0;;12257:200:::1;12467:9;:22:::0;;-1:-1:-1;;12467:22:0::1;;-1:-1:-1::0;;;;;12467:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12508:6:::1;::::0;;::::1;-1:-1:-1::0;12500:15:0;;;-1:-1:-1;12500:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12500:22:0::1;::::0;;::::1;::::0;;12565:9;;12533:62:::1;::::0;12550:4:::1;::::0;12565:9;::::1;;-1:-1:-1::0;;12533:8:0::1;:62::i;23698:182::-:0;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;23765:16:::1;::::0;::::1;::::0;::::1;;;23764:17;23756:58;;;::::0;-1:-1:-1;;;23756:58:0;;21800:2:1;23756:58:0::1;::::0;::::1;21782:21:1::0;21839:2;21819:18;;;21812:30;21878;21858:18;;;21851:58;21926:18;;23756:58:0::1;21598:352:1::0;23756:58:0::1;23833:6;::::0;23825:47:::1;::::0;-1:-1:-1;;;;;23833:6:0;;::::1;::::0;23850:21:::1;23825:47:::0;::::1;;;::::0;23833:6:::1;23825:47:::0;23833:6;23825:47;23850:21;23833:6;23825:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;16098:699:::0;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;16298:16;16278;4695:13:::1;4634:2;4695;:13;:::i;:::-;4678:30;::::0;4474:15:::1;4678:30;:::i;:::-;16268:26;;;;:::i;:::-;16267:47;;;;:::i;:::-;16251:13;:63:::0;16366:13;16349;4695::::1;4634:2;4695;:13;:::i;:::-;4678:30;::::0;4474:15:::1;4678:30;:::i;:::-;16339:23;;;;:::i;:::-;16338:41;;;;:::i;:::-;16325:10;:54:::0;;;16398:13:::1;::::0;:27:::1;;16390:73;;;::::0;-1:-1:-1;;;16390:73:0;;22157:2:1;16390:73:0::1;::::0;::::1;22139:21:1::0;22196:2;22176:18;;;22169:30;22235:34;22215:18;;;22208:62;-1:-1:-1;;;22286:18:1;;;22279:31;22327:19;;16390:73:0::1;21955:397:1::0;16390:73:0::1;16507:6;::::0;-1:-1:-1;;;;;16507:6:0::1;10707:7:::0;10734:16;;;;;;;;;;;5410:5:::1;::::0;16497:23:::1;::::0;16517:3:::1;16497:23;:::i;:::-;16496:44;;;;:::i;:::-;16482:10;;:58;;16474:106;;;::::0;-1:-1:-1;;;16474:106:0;;22559:2:1;16474:106:0::1;::::0;::::1;22541:21:1::0;22598:2;22578:18;;;22571:30;22637:34;22617:18;;;22610:62;-1:-1:-1;;;22688:18:1;;;22681:33;22731:19;;16474:106:0::1;22357:399:1::0;16474:106:0::1;16623:9;4695:13;4634:2;4695;:13;:::i;:::-;4678:30;::::0;4474:15:::1;4678:30;:::i;:::-;16613:19;;;;:::i;:::-;16599:10;;:33;;16591:92;;;::::0;-1:-1:-1;;;16591:92:0;;22963:2:1;16591:92:0::1;::::0;::::1;22945:21:1::0;23002:2;22982:18;;;22975:30;23041:34;23021:18;;;23014:62;-1:-1:-1;;;23092:18:1;;;23085:44;23146:19;;16591:92:0::1;22761:410:1::0;16591:92:0::1;16729:9;4695:13;4634:2;4695;:13;:::i;:::-;4678:30;::::0;4474:15:::1;4678:30;:::i;:::-;16719:19;;;;:::i;:::-;16702:13;;:36;;16694:95;;;::::0;-1:-1:-1;;;16694:95:0;;22963:2:1;16694:95:0::1;::::0;::::1;22945:21:1::0;23002:2;22982:18;;;22975:30;23041:34;23021:18;;;23014:62;-1:-1:-1;;;23092:18:1;;;23085:44;23146:19;;16694:95:0::1;22761:410:1::0;14173:148:0;7616:6;;-1:-1:-1;;;;;7616:6:0;7626:10;7616:20;7608:50;;;;-1:-1:-1;;;7608:50:0;;9438:2:1;7608:50:0;;;9420:21:1;9477:2;9457:18;;;9450:30;-1:-1:-1;;;;;;;;;;;9496:18:1;;;9489:47;9553:18;;7608:50:0;9236:341:1;7608:50:0;-1:-1:-1;;;;;14269:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;14269:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14173:148::o;11108:310::-;-1:-1:-1;;;;;11203:20:0;;11195:52;;;;-1:-1:-1;;;11195:52:0;;23378:2:1;11195:52:0;;;23360:21:1;23417:2;23397:18;;;23390:30;-1:-1:-1;;;23436:18:1;;;23429:49;23495:18;;11195:52:0;23176:343:1;11195:52:0;-1:-1:-1;;;;;11266:21:0;;11258:53;;;;-1:-1:-1;;;11258:53:0;;23378:2:1;11258:53:0;;;23360:21:1;23417:2;23397:18;;;23390:30;-1:-1:-1;;;23436:18:1;;;23429:49;23495:18;;11258:53:0;23176:343:1;11258:53:0;-1:-1:-1;;;;;11324:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11377:33;;391:25:1;;;11377:33:0;;364:18:1;11377:33:0;;;;;;;11108:310;;;:::o;18572:1783::-;18651:4;-1:-1:-1;;;;;18676:18:0;;18668:68;;;;-1:-1:-1;;;18668:68:0;;23726:2:1;18668:68:0;;;23708:21:1;23765:2;23745:18;;;23738:30;23804:34;23784:18;;;23777:62;-1:-1:-1;;;23855:18:1;;;23848:35;23900:19;;18668:68:0;23524:401:1;18668:68:0;-1:-1:-1;;;;;18755:16:0;;18747:64;;;;-1:-1:-1;;;18747:64:0;;24132:2:1;18747:64:0;;;24114:21:1;24171:2;24151:18;;;24144:30;24210:34;24190:18;;;24183:62;-1:-1:-1;;;24261:18:1;;;24254:33;24304:19;;18747:64:0;23930:399:1;18747:64:0;18839:1;18830:6;:10;18822:64;;;;-1:-1:-1;;;18822:64:0;;24536:2:1;18822:64:0;;;24518:21:1;24575:2;24555:18;;;24548:30;24614:34;24594:18;;;24587:62;-1:-1:-1;;;24665:18:1;;;24658:39;24714:19;;18822:64:0;24334:405:1;18822:64:0;-1:-1:-1;;;;;18985:13:0;;18897:8;18985:13;;;:7;:13;;;;;;18897:8;;;;18985:13;;18981:162;;;19021:4;19015:10;;18981:162;;;-1:-1:-1;;;;;19047:11:0;;;;;;:7;:11;;;;;;;;19043:100;;;19082:4;19075:11;;19043:100;;;-1:-1:-1;19127:4:0;19043:100;19157:20;19168:4;19174:2;19157:10;:20::i;:::-;19153:371;;;19198:14;;;;19194:319;;19238:5;19233:265;;19268:34;;-1:-1:-1;;;19268:34:0;;24946:2:1;19268:34:0;;;24928:21:1;24985:2;24965:18;;;24958:30;25024:26;25004:18;;;24997:54;25068:18;;19268:34:0;24744:348:1;19233:265:0;-1:-1:-1;;;;;19333:31:0;;;;;;:25;:31;;;;;;;;19332:32;:66;;;;-1:-1:-1;;;;;;19369:29:0;;;;;;:25;:29;;;;;;;;19368:30;19332:66;19328:170;;;19423:55;;-1:-1:-1;;;19423:55:0;;25299:2:1;19423:55:0;;;25281:21:1;25338:2;25318:18;;;25311:30;25377:34;25357:18;;;25350:62;-1:-1:-1;;;25428:18:1;;;25421:43;25481:19;;19423:55:0;25097:409:1;19328:170:0;19540:4;19536:742;;;19566:6;;;;19561:706;;19597:19;;;;;;;:64;;;;-1:-1:-1;;;;;;19641:20:0;;;;;;:16;:20;;;;;;;;19640:21;19597:64;:111;;;;-1:-1:-1;;;;;;19686:22:0;;;;;;:16;:22;;;;;;;;19685:23;19597:111;19593:659;;;19800:4;19751:28;10734:16;;;;;;;;;;;19857:13;;19833:37;;19829:404;;19917:10;;19958:22;;;;19954:97;;;20015:13;;20005:6;;-1:-1:-1;;;;;20005:6:0;10707:7;10734:16;;;;;;;;;;;5410:5;;19995:33;;;:::i;:::-;19994:54;;;;:::i;:::-;19984:64;;19954:97;20105:7;20081:20;:31;20077:72;;20139:7;20116:30;;20077:72;20175:34;20188:20;20175:12;:34::i;:::-;19872:361;19829:404;19728:524;19593:659;20295:52;20312:4;20318:2;20322:6;20330:3;20335:4;20341:5;20295:16;:52::i;:::-;20288:59;18572:1783;-1:-1:-1;;;;;;;18572:1783:0:o;24647:817::-;-1:-1:-1;;;;;24817:25:0;;24766:4;24817:25;;;:19;:25;;;;;;24798:4;;24817:25;;;:52;;-1:-1:-1;;;;;;24846:23:0;;;;;;:19;:23;;;;;;;;24817:52;24813:99;;;-1:-1:-1;24895:5:0;24813:99;-1:-1:-1;;;;;24922:13:0;;:7;:13;;;;;;;;;;:23;;24939:6;;24922:7;:23;;24939:6;;24922:23;:::i;:::-;;;;-1:-1:-1;24956:22:0;;-1:-1:-1;24982:7:0;24981:55;;25030:6;24981:55;;;24993:34;25003:4;25009:6;25017:3;25022:4;24993:9;:34::i;:::-;24956:80;;25062:14;25047:7;:11;25055:2;-1:-1:-1;;;;;25047:11:0;-1:-1:-1;;;;;25047:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;25107:2;-1:-1:-1;;;;;25092:34:0;25101:4;-1:-1:-1;;;;;25092:34:0;;25111:14;25092:34;;;;391:25:1;;379:2;364:18;;245:177;25092:34:0;;;;;;;;25142:16;;;;;;;25137:298;;25175:28;25194:4;25200:2;25175:18;:28::i;:::-;25223:16;;;;;;;25222:17;:41;;;;;25243:20;25254:4;25260:2;25243:10;:20::i;:::-;25222:77;;;;-1:-1:-1;;;;;;25268:31:0;;;;;;:25;:31;;;;;;;;25267:32;25222:77;:111;;;;-1:-1:-1;;;;;;25304:29:0;;;;;;:25;:29;;;;;;;;25303:30;25222:111;:121;;;;;25338:5;25337:6;25222:121;25218:206;;;25364:44;;-1:-1:-1;;;25364:44:0;;25713:2:1;25364:44:0;;;25695:21:1;25752:2;25732:18;;;25725:30;25791:34;25771:18;;;25764:62;-1:-1:-1;;;25842:18:1;;;25835:32;25884:19;;25364:44:0;25511:398:1;25218:206:0;-1:-1:-1;25452:4:0;;24647:817;-1:-1:-1;;;;;;;;24647:817:0:o;18118:446::-;18219:6;;18187:4;;-1:-1:-1;;;;;18211:14:0;;;18219:6;;18211:14;;;;:43;;-1:-1:-1;18248:6:0;;-1:-1:-1;;;;;18242:12:0;;;18248:6;;18242:12;;18211:43;:79;;;;-1:-1:-1;18284:6:0;;-1:-1:-1;;;;;18284:6:0;18271:9;:19;;18211:79;:118;;;;-1:-1:-1;;;;;;18308:21:0;;;;;;:17;:21;;;;;;;;18307:22;18211:118;:159;;;;-1:-1:-1;;;;;;18347:23:0;;;;;;:17;:23;;;;;;;;18346:24;18211:159;:186;;;;-1:-1:-1;;;;;;18387:10:0;;5549:42;18387:10;;18211:186;:219;;;;-1:-1:-1;;;;;;18414:16:0;;;;18211:219;:257;;;;-1:-1:-1;;;;;;18447:21:0;;18463:4;18447:21;;18211:257;:302;;;;-1:-1:-1;18501:11:0;;-1:-1:-1;;;;;18485:28:0;;;18501:11;;;;;18485:28;;18211:302;:345;;;;-1:-1:-1;18544:11:0;;-1:-1:-1;;;;;18530:26:0;;;18544:11;;;;;18530:26;;18211:345;18204:352;18118:446;-1:-1:-1;;;18118:446:0:o;20363:2011::-;6437:6;:13;;-1:-1:-1;;6437:13:0;6446:4;6437:13;;;20446:30:::1;::::0;;::::1;::::0;::::1;::::0;;20469:7:::1;20446:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;6437:6;20491:21;20487:60:::1;;20529:7;;;20487:60;20583:4;20563:26;::::0;;;:11:::1;:26;::::0;;;;;;;20598:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;20598:9:0::1;20563:46:::0;;;;;;;;-1:-1:-1;;20563:67:0::1;20559:166;;20667:4;20647:26;::::0;;;:11:::1;:26;::::0;;;;;;;20682:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;20682:9:0::1;20647:46:::0;;;;;;;-1:-1:-1;;20647:66:0;;20559:166:::1;20737:17;20822:1;20802:6;:16;;;20758:60;;20782:6;:16;;;20759:39;;:20;:39;;;;:::i;:::-;20758:60;;;;:::i;:::-;20757:66;;;;:::i;:::-;20737:86:::0;-1:-1:-1;20834:15:0::1;20852:32;20737:86:::0;20852:20;:32:::1;:::i;:::-;20929:16;::::0;;20943:1:::1;20929:16:::0;;;;;::::1;::::0;;20834:50;;-1:-1:-1;20905:21:0::1;::::0;20929:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20929:16:0::1;20905:40;;20974:4;20956;20961:1;20956:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;20956:23:0::1;;;-1:-1:-1::0;;;;;20956:23:0::1;;;::::0;::::1;21000:9;;;;;;;;;-1:-1:-1::0;;;;;21000:9:0::1;-1:-1:-1::0;;;;;21000:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20990:4;20995:1;20990:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20990:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21033:9:::1;::::0;:186:::1;::::0;-1:-1:-1;;;21033:186:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:186:::1;::::0;21108:7;;21130:1:::1;::::0;21146:4;;21173::::1;::::0;21193:15:::1;::::0;21033:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;21029:233;;21244:7;;;;;;21029:233;21295:21;21274:18;21381:7:::0;21355:22:::1;21368:9:::0;21295:21;21355:22:::1;:::i;:::-;21354:34;;;;:::i;:::-;21327:61:::0;-1:-1:-1;21405:13:0;;21401:400:::1;;21439:9;::::0;:222:::1;::::0;-1:-1:-1;;;21439:222:0;;21516:4:::1;21439:222;::::0;::::1;27309:34:1::0;27359:18;;;27352:34;;;21568:1:0::1;27402:18:1::0;;;27395:34;;;27445:18;;;27438:34;5549:42:0::1;27488:19:1::0;;;27481:44;21631:15:0::1;27541:19:1::0;;;27534:35;21439:9:0::1;::::0;;::::1;-1:-1:-1::0;;;;;21439:9:0::1;::::0;:25:::1;::::0;21472:16;;27220:19:1;;21439:222:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;21439:222:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;21439:222:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;21435:355;;21768:7;;;;;;;;21435:355;-1:-1:-1::0;;21686:40:0::1;::::0;;28065:25:1;;;28121:2;28106:18;;28099:34;;;21686:40:0::1;::::0;-1:-1:-1;28038:18:1;21686:40:0::1;;;;;;;21435:355;21813:30;21827:16:::0;21813:30;::::1;:::i;:::-;;;21874:6;:16;;;21854:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;21989:16:::1;::::0;::::1;::::0;21967:18:::1;::::0;::::1;::::0;21901:12:::1;::::0;-1:-1:-1;21901:12:0;;21953:52;;::::1;::::0;21954:31:::1;::::0;::::1;:10:::0;:31:::1;:::i;:::-;21953:52;;;;:::i;:::-;21924:81:::0;-1:-1:-1;22016:24:0::1;22043:31;21924:81:::0;22043:10;:31:::1;:::i;:::-;22089:16;::::0;::::1;::::0;22016:58;;-1:-1:-1;22089:20:0::1;;::::0;22085:133:::1;;22139:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;22139:21:0;;::::1;::::0;22196:5:::1;::::0;22173:16;;22139:67:::1;::::0;;;22173:16;22139:21;22196:5;22139:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22126:80:0;;-1:-1:-1;;22085:133:0::1;22232:18;::::0;::::1;::::0;:22:::1;;::::0;22228:139:::1;;22284:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;22284:23:0;;::::1;::::0;22345:5:::1;::::0;22320:18;;22284:71:::1;::::0;;;22320:18;22284:23;22345:5;22284:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22271:84:0;;-1:-1:-1;;22228:139:0::1;20435:1939;;;;;;;;;6461:1;-1:-1:-1::0;6473:6:0;:14;;-1:-1:-1;;6473:14:0;;;20363:2011::o;25472:767::-;25560:7;25580:18;25613:3;25609:205;;;-1:-1:-1;25646:9:0;:16;;;25609:205;;;25684:4;25680:134;;;-1:-1:-1;25718:9:0;:17;;;;;;25680:134;;;-1:-1:-1;25781:9:0;:21;;;;;;25680:134;25836:11;;;;;-1:-1:-1;;;;;25836:11:0;25860:4;25828:37;:73;;;;;25882:13;25899:2;25882:19;;25828:73;25824:101;;;-1:-1:-1;25918:4:0;25824:101;25939:10;25953:1;25939:15;25935:39;;25965:6;25958:13;;;;;25935:39;25984:17;5410:5;26004:19;26013:10;26004:6;:19;:::i;:::-;:38;;;;:::i;:::-;25984:58;-1:-1:-1;26057:13:0;;26053:141;;26103:4;26087:7;:22;;;;;;;;;;:35;;26113:9;;26087:7;:35;;26113:9;;26087:35;:::i;:::-;;;;-1:-1:-1;;26142:40:0;;391:25:1;;;26165:4:0;;-1:-1:-1;;;;;26142:40:0;;;;;379:2:1;364:18;26142:40:0;;;;;;;26053:141;26213:18;26222:9;26213:6;:18;:::i;22382:563::-;22465:16;;;;;;;22464:17;22456:65;;;;-1:-1:-1;;;22456:65:0;;28732:2:1;22456:65:0;;;28714:21:1;28771:2;28751:18;;;28744:30;28810:34;28790:18;;;28783:62;-1:-1:-1;;;28861:18:1;;;28854:33;28904:19;;22456:65:0;28530:399:1;22456:65:0;22537:20;22548:4;22554:2;22537:10;:20::i;:::-;22536:21;:37;;;;-1:-1:-1;22567:6:0;;-1:-1:-1;;;;;22561:12:0;;;22567:6;;22561:12;22536:37;22532:406;;;-1:-1:-1;;;;;22590:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;22590:30:0;;;22616:4;22590:30;;;;;;22635:19;:25;;;;;:32;;;;;;;;;;22682:16;:23;;-1:-1:-1;;22682:23:0;22590:30;22682:23;;;;;22732:11;;;;22720:114;;22778:11;:40;;-1:-1:-1;;;;;;22778:40:0;22812:4;22778:40;;;;;22720:114;22848:19;:26;;-1:-1:-1;;22848:26:0;;;;;22894:32;;-1:-1:-1;1738:41:1;;22894:32:0;;1726:2:1;1711:18;22894:32:0;1598:187:1;797:548;909:4;938:2;967;956:9;949:21;999:6;993:13;1042:6;1037:2;1026:9;1022:18;1015:34;1067:1;1077:140;1091:6;1088:1;1085:13;1077:140;;;1186:14;;;1182:23;;1176:30;1152:17;;;1171:2;1148:26;1141:66;1106:10;;1077:140;;;1081:3;1266:1;1261:2;1252:6;1241:9;1237:22;1233:31;1226:42;1336:2;1329;1325:7;1320:2;1312:6;1308:15;1304:29;1293:9;1289:45;1285:54;1277:62;;;;797:548;;;;:::o;1790:154::-;-1:-1:-1;;;;;1869:5:1;1865:54;1858:5;1855:65;1845:93;;1934:1;1931;1924:12;1949:315;2017:6;2025;2078:2;2066:9;2057:7;2053:23;2049:32;2046:52;;;2094:1;2091;2084:12;2046:52;2133:9;2120:23;2152:31;2177:5;2152:31;:::i;:::-;2202:5;2254:2;2239:18;;;;2226:32;;-1:-1:-1;;;1949:315:1:o;2269:247::-;2328:6;2381:2;2369:9;2360:7;2356:23;2352:32;2349:52;;;2397:1;2394;2387:12;2349:52;2436:9;2423:23;2455:31;2480:5;2455:31;:::i;2521:388::-;2589:6;2597;2650:2;2638:9;2629:7;2625:23;2621:32;2618:52;;;2666:1;2663;2656:12;2618:52;2705:9;2692:23;2724:31;2749:5;2724:31;:::i;:::-;2774:5;-1:-1:-1;2831:2:1;2816:18;;2803:32;2844:33;2803:32;2844:33;:::i;:::-;2896:7;2886:17;;;2521:388;;;;;:::o;2914:456::-;2991:6;2999;3007;3060:2;3048:9;3039:7;3035:23;3031:32;3028:52;;;3076:1;3073;3066:12;3028:52;3115:9;3102:23;3134:31;3159:5;3134:31;:::i;:::-;3184:5;-1:-1:-1;3241:2:1;3226:18;;3213:32;3254:33;3213:32;3254:33;:::i;:::-;2914:456;;3306:7;;-1:-1:-1;;;3360:2:1;3345:18;;;;3332:32;;2914:456::o;3375:127::-;3436:10;3431:3;3427:20;3424:1;3417:31;3467:4;3464:1;3457:15;3491:4;3488:1;3481:15;3507:275;3578:2;3572:9;3643:2;3624:13;;-1:-1:-1;;3620:27:1;3608:40;;3678:18;3663:34;;3699:22;;;3660:62;3657:88;;;3725:18;;:::i;:::-;3761:2;3754:22;3507:275;;-1:-1:-1;3507:275:1:o;3787:183::-;3847:4;3880:18;3872:6;3869:30;3866:56;;;3902:18;;:::i;:::-;-1:-1:-1;3947:1:1;3943:14;3959:4;3939:25;;3787:183::o;3975:662::-;4029:5;4082:3;4075:4;4067:6;4063:17;4059:27;4049:55;;4100:1;4097;4090:12;4049:55;4136:6;4123:20;4162:4;4186:60;4202:43;4242:2;4202:43;:::i;:::-;4186:60;:::i;:::-;4280:15;;;4366:1;4362:10;;;;4350:23;;4346:32;;;4311:12;;;;4390:15;;;4387:35;;;4418:1;4415;4408:12;4387:35;4454:2;4446:6;4442:15;4466:142;4482:6;4477:3;4474:15;4466:142;;;4548:17;;4536:30;;4586:12;;;;4499;;4466:142;;;-1:-1:-1;4626:5:1;3975:662;-1:-1:-1;;;;;;3975:662:1:o;4642:1215::-;4760:6;4768;4821:2;4809:9;4800:7;4796:23;4792:32;4789:52;;;4837:1;4834;4827:12;4789:52;4877:9;4864:23;4906:18;4947:2;4939:6;4936:14;4933:34;;;4963:1;4960;4953:12;4933:34;5001:6;4990:9;4986:22;4976:32;;5046:7;5039:4;5035:2;5031:13;5027:27;5017:55;;5068:1;5065;5058:12;5017:55;5104:2;5091:16;5126:4;5150:60;5166:43;5206:2;5166:43;:::i;5150:60::-;5244:15;;;5326:1;5322:10;;;;5314:19;;5310:28;;;5275:12;;;;5350:19;;;5347:39;;;5382:1;5379;5372:12;5347:39;5406:11;;;;5426:217;5442:6;5437:3;5434:15;5426:217;;;5522:3;5509:17;5539:31;5564:5;5539:31;:::i;:::-;5583:18;;5459:12;;;;5621;;;;5426:217;;;5662:5;-1:-1:-1;;5705:18:1;;5692:32;;-1:-1:-1;;5736:16:1;;;5733:36;;;5765:1;5762;5755:12;5733:36;;5788:63;5843:7;5832:8;5821:9;5817:24;5788:63;:::i;:::-;5778:73;;;4642:1215;;;;;:::o;6051:159::-;6118:20;;6178:6;6167:18;;6157:29;;6147:57;;6200:1;6197;6190:12;6147:57;6051:159;;;:::o;6215:328::-;6289:6;6297;6305;6358:2;6346:9;6337:7;6333:23;6329:32;6326:52;;;6374:1;6371;6364:12;6326:52;6397:28;6415:9;6397:28;:::i;:::-;6387:38;;6444:37;6477:2;6466:9;6462:18;6444:37;:::i;:::-;6434:47;;6500:37;6533:2;6522:9;6518:18;6500:37;:::i;:::-;6490:47;;6215:328;;;;;:::o;6548:180::-;6607:6;6660:2;6648:9;6639:7;6635:23;6631:32;6628:52;;;6676:1;6673;6666:12;6628:52;-1:-1:-1;6699:23:1;;6548:180;-1:-1:-1;6548:180:1:o;6733:118::-;6819:5;6812:13;6805:21;6798:5;6795:32;6785:60;;6841:1;6838;6831:12;6856:382;6921:6;6929;6982:2;6970:9;6961:7;6957:23;6953:32;6950:52;;;6998:1;6995;6988:12;6950:52;7037:9;7024:23;7056:31;7081:5;7056:31;:::i;:::-;7106:5;-1:-1:-1;7163:2:1;7148:18;;7135:32;7176:30;7135:32;7176:30;:::i;7243:376::-;7305:6;7313;7366:2;7354:9;7345:7;7341:23;7337:32;7334:52;;;7382:1;7379;7372:12;7334:52;7421:9;7408:23;7440:28;7462:5;7440:28;:::i;8846:385::-;8932:6;8940;8948;8956;9009:3;8997:9;8988:7;8984:23;8980:33;8977:53;;;9026:1;9023;9016:12;8977:53;-1:-1:-1;;9049:23:1;;;9119:2;9104:18;;9091:32;;-1:-1:-1;9170:2:1;9155:18;;9142:32;;9221:2;9206:18;9193:32;;-1:-1:-1;8846:385:1;-1:-1:-1;8846:385:1:o;9922:127::-;9983:10;9978:3;9974:20;9971:1;9964:31;10014:4;10011:1;10004:15;10038:4;10035:1;10028:15;10054:422;10143:1;10186:5;10143:1;10200:270;10221:7;10211:8;10208:21;10200:270;;;10280:4;10276:1;10272:6;10268:17;10262:4;10259:27;10256:53;;;10289:18;;:::i;:::-;10339:7;10329:8;10325:22;10322:55;;;10359:16;;;;10322:55;10438:22;;;;10398:15;;;;10200:270;;;10204:3;10054:422;;;;;:::o;10481:806::-;10530:5;10560:8;10550:80;;-1:-1:-1;10601:1:1;10615:5;;10550:80;10649:4;10639:76;;-1:-1:-1;10686:1:1;10700:5;;10639:76;10731:4;10749:1;10744:59;;;;10817:1;10812:130;;;;10724:218;;10744:59;10774:1;10765:10;;10788:5;;;10812:130;10849:3;10839:8;10836:17;10833:43;;;10856:18;;:::i;:::-;-1:-1:-1;;10912:1:1;10898:16;;10927:5;;10724:218;;11026:2;11016:8;11013:16;11007:3;11001:4;10998:13;10994:36;10988:2;10978:8;10975:16;10970:2;10964:4;10961:12;10957:35;10954:77;10951:159;;;-1:-1:-1;11063:19:1;;;11095:5;;10951:159;11142:34;11167:8;11161:4;11142:34;:::i;:::-;11212:6;11208:1;11204:6;11200:19;11191:7;11188:32;11185:58;;;11223:18;;:::i;:::-;11261:20;;10481:806;-1:-1:-1;;;10481:806:1:o;11292:140::-;11350:5;11379:47;11420:4;11410:8;11406:19;11400:4;11379:47;:::i;11437:168::-;11510:9;;;11541;;11558:15;;;11552:22;;11538:37;11528:71;;11579:18;;:::i;11610:128::-;11677:9;;;11698:11;;;11695:37;;;11712:18;;:::i;12093:127::-;12154:10;12149:3;12145:20;12142:1;12135:31;12185:4;12182:1;12175:15;12209:4;12206:1;12199:15;12572:197;12610:3;12638:6;12679:2;12672:5;12668:14;12706:2;12697:7;12694:15;12691:41;;12712:18;;:::i;:::-;12761:1;12748:15;;12572:197;-1:-1:-1;;;12572:197:1:o;12774:125::-;12839:9;;;12860:10;;;12857:36;;;12873:18;;:::i;14011:217::-;14051:1;14077;14067:132;;14121:10;14116:3;14112:20;14109:1;14102:31;14156:4;14153:1;14146:15;14184:4;14181:1;14174:15;14067:132;-1:-1:-1;14213:9:1;;14011:217::o;15357:385::-;15436:6;15444;15497:2;15485:9;15476:7;15472:23;15468:32;15465:52;;;15513:1;15510;15503:12;15465:52;15545:9;15539:16;15564:31;15589:5;15564:31;:::i;:::-;15664:2;15649:18;;15643:25;15614:5;;-1:-1:-1;15677:33:1;15643:25;15677:33;:::i;18371:245::-;18450:6;18458;18511:2;18499:9;18490:7;18486:23;18482:32;18479:52;;;18527:1;18524;18517:12;18479:52;-1:-1:-1;;18550:16:1;;18606:2;18591:18;;;18585:25;18550:16;;18585:25;;-1:-1:-1;18371:245:1:o;18621:168::-;18688:6;18714:10;;;18726;;;18710:27;;18749:11;;;18746:37;;;18763:18;;:::i;:::-;18746:37;18621:168;;;;:::o;19558:184::-;19628:6;19681:2;19669:9;19660:7;19656:23;19652:32;19649:52;;;19697:1;19694;19687:12;19649:52;-1:-1:-1;19720:16:1;;19558:184;-1:-1:-1;19558:184:1:o;20049:245::-;20116:6;20169:2;20157:9;20148:7;20144:23;20140:32;20137:52;;;20185:1;20182;20175:12;20137:52;20217:9;20211:16;20236:28;20258:5;20236:28;:::i;21010:251::-;21080:6;21133:2;21121:9;21112:7;21108:23;21104:32;21101:52;;;21149:1;21146;21139:12;21101:52;21181:9;21175:16;21200:31;21225:5;21200:31;:::i;25914:1026::-;26176:4;26224:3;26213:9;26209:19;26255:6;26244:9;26237:25;26281:2;26319:6;26314:2;26303:9;26299:18;26292:34;26362:3;26357:2;26346:9;26342:18;26335:31;26386:6;26421;26415:13;26452:6;26444;26437:22;26490:3;26479:9;26475:19;26468:26;;26529:2;26521:6;26517:15;26503:29;;26550:1;26560:218;26574:6;26571:1;26568:13;26560:218;;;26639:13;;-1:-1:-1;;;;;26635:62:1;26623:75;;26753:15;;;;26718:12;;;;26596:1;26589:9;26560:218;;;-1:-1:-1;;;;;;;26834:55:1;;;;26829:2;26814:18;;26807:83;-1:-1:-1;;;26921:3:1;26906:19;26899:35;26795:3;25914:1026;-1:-1:-1;;;25914:1026:1:o;27580:306::-;27668:6;27676;27684;27737:2;27725:9;27716:7;27712:23;27708:32;27705:52;;;27753:1;27750;27743:12;27705:52;27782:9;27776:16;27766:26;;27832:2;27821:9;27817:18;27811:25;27801:35;;27876:2;27865:9;27861:18;27855:25;27845:35;;27580:306;;;;;:::o;28144:171::-;28212:6;28251:10;;;28239;;;28235:27;;28274:12;;;28271:38;;;28289:18;;:::i

Swarm Source

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