ETH Price: $2,541.72 (+4.29%)

Token

Mr.X (MRX)
 

Overview

Max Total Supply

777,777 MRX

Holders

202

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
992.036692190447996354 MRX

Value
$0.00
0xd8f54761e819a9cf5e2eae3b7ff7a98686eb7200
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:
MrX

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

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

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

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

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

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

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

contract MrX is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 777_777;
    string constant private _name = "Mr.X";
    string constant private _symbol = "MRX";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

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

    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;
    address payable public marketingWallet = payable(0x748Dd413150769ae58c5Cd6ebDd5CDDBe9a0Bde0);
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    uint256 private _maxWalletSize = (_tTotal * 1) / 100;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;
    uint256 public launchStamp;

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

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

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

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

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

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

    
    receive() external payable {}
    function totalSupply() external pure override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner {
        // Cannot blacklist contract, LP pair, or anything that would otherwise stop trading entirely.
        initializer.setBlacklistEnabled(account, enabled);
    }

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner {
        // Cannot blacklist contract, LP pair, or anything that would otherwise stop trading entirely.
        require(accounts.length <= 100, "Too many at once.");
        initializer.setBlacklistEnabledMultiple(accounts, enabled);
    }

    function isBlacklisted(address account) external view returns (bool) {
        return initializer.isBlacklisted(account);
    }

    function removeBlacklisted(address account) external onlyOwner {
        // To remove from the pre-built blacklist ONLY. Cannot add to blacklist.
        initializer.removeBlacklisted(account);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        // Tax rates lower to 35% after 40minutes.
        if (_taxRates.sellFee > 3500 && tradingEnabled) {
            if (block.timestamp >= launchStamp + 40 minutes) {
                _taxRates.sellFee = 3500;
            }
        }

        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 (to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

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

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

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

        bool success;
        (success,) = marketingWallet.call{value: address(this).balance, gas: 55000}("");
    }

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

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

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

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

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

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

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

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"init","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600060028190556009805460ff1916600117905560e06040526107d060805261232860a05260c052600a805465ffffffffffff191663232807d0178155600d8054600161ff0160a01b03191673748dd413150769ae58c5cd6ebdd5cddbe9a0bde017905560118190556064906200007990601290620002ea565b6200008890620bde3162000302565b6200009590600162000302565b620000a191906200031c565b60129081556013805461ffff19169055601580546001600160a01b03191633179055620000d090600a620002ea565b620000df90620bde3162000302565b601580546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001336012600a620002ea565b6200014290620bde3162000302565b60405190815260200160405180910390a3601580546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055955490941683526004909152902080549092161790556200033f565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200022c578160001904821115620002105762000210620001d5565b808516156200021e57918102915b93841c9390800290620001f0565b509250929050565b6000826200024557506001620002e4565b816200025457506000620002e4565b81600181146200026d5760028114620002785762000298565b6001915050620002e4565b60ff8411156200028c576200028c620001d5565b50506001821b620002e4565b5060208310610133831016604e8410600b8410161715620002bd575081810a620002e4565b620002c98383620001eb565b8060001904821115620002e057620002e0620001d5565b0290505b92915050565b6000620002fb60ff84168362000234565b9392505050565b8082028115828204841417620002e457620002e4620001d5565b6000826200033a57634e487b7160e01b600052601260045260246000fd5b500490565b61423c806200034f6000396000f3fe6080604052600436106103905760003560e01c8063590ffdce116101dc578063ab558e4d11610102578063eafb5a3c116100a0578063fb78680d1161006f578063fb78680d14610ab0578063fdb78c0e14610ad0578063fe575a8714610af1578063feadde9c14610b1157600080fd5b8063eafb5a3c14610a3b578063eb50e70e14610a5b578063ee5d9c2d14610a7b578063eec2744e14610a9057600080fd5b8063b7df8b36116100dc578063b7df8b361461099b578063bfc2fc35146109b5578063c6a276c2146109d5578063dd62ed3e146109f557600080fd5b8063ab558e4d1461097b578063b1b08f711461061e578063b3d514fb1461061e57600080fd5b806378648edf1161017a5780638a8c523c116101495780638a8c523c146108fa57806395d89b411461090f578063a0263c891461093b578063a9059cbb1461095b57600080fd5b806378648edf1461089257806380c581d1146108a7578063893d20e8146108c75780638a63bd9b146108e557600080fd5b80635cce86cd116101b65780635cce86cd146107ee57806370a0823114610827578063715018a61461085d57806375f0a8741461087257600080fd5b8063590ffdce146107985780635a6f0918146107b85780635c24b074146107ce57600080fd5b80632610eaca116102c157806336fddb041161025f5780634e718e481161022e5780634e718e48146107005780634fb2e45d146107205780634fbee1931461074057806350a8e0161461077957600080fd5b806336fddb0414610686578063452ed4f1146106a65780634ada218b146106c65780634bbb93eb146106e057600080fd5b80632b28fc7a1161029b5780632b28fc7a1461061e5780632e8fa82114610634578063313ce5671461064a57806332cde6641461066657600080fd5b80632610eaca146105d357806328577751146105f35780632b112e491461060957600080fd5b8063095ea7b31161032e57806313b4a7f41161030857806313b4a7f41461055e57806318160ddd1461057e57806323b872dd1461059357806326003957146105b357600080fd5b8063095ea7b3146104f05780630dcbcf1c146105105780630fa604e41461054957600080fd5b8063069d955f1161036a578063069d955f1461041557806306fdde031461046b5780630758d924146104a157806307dd79e0146104c657600080fd5b806303fd2a451461039c5780630445b667146103cf57806305bbedb6146103f357600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103db57600080fd5b506103e5600e5481565b6040519081526020016103c6565b3480156103ff57600080fd5b5061041361040e366004613bba565b610b31565b005b34801561042157600080fd5b50600a546104469061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103c6565b34801561047757600080fd5b5060408051808201909152600481526309ae45cb60e31b60208201525b6040516103c69190613c0c565b3480156104ad57600080fd5b50600b546103b29061010090046001600160a01b031681565b3480156104d257600080fd5b50600b546104e09060ff1681565b60405190151581526020016103c6565b3480156104fc57600080fd5b506104e061050b366004613c5a565b610c3d565b34801561051c57600080fd5b506104e061052b366004613c86565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561055557600080fd5b506103e5610c54565b34801561056a57600080fd5b50610413610579366004613ca3565b610c74565b34801561058a57600080fd5b506103e5610e32565b34801561059f57600080fd5b506104e06105ae366004613cd1565b610e4d565b3480156105bf57600080fd5b506104136105ce366004613d12565b610ec5565b3480156105df57600080fd5b506104136105ee366004613d34565b61100b565b3480156105ff57600080fd5b506103e560115481565b34801561061557600080fd5b506103e56111c0565b34801561062a57600080fd5b506103e56103e881565b34801561064057600080fd5b506103e5600f5481565b34801561065657600080fd5b50604051601281526020016103c6565b34801561067257600080fd5b50610413610681366004613e06565b61123d565b34801561069257600080fd5b506104136106a1366004613e49565b611391565b3480156106b257600080fd5b50600c546103b2906001600160a01b031681565b3480156106d257600080fd5b506013546104e09060ff1681565b3480156106ec57600080fd5b506103e56106fb366004613e77565b611404565b34801561070c57600080fd5b5061041361071b366004613e77565b611438565b34801561072c57600080fd5b5061041361073b366004613c86565b6114d6565b34801561074c57600080fd5b506104e061075b366004613c86565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561078557600080fd5b506013546104e090610100900460ff1681565b3480156107a457600080fd5b506104136107b3366004613e49565b6116d8565b3480156107c457600080fd5b506103e560145481565b3480156107da57600080fd5b506104136107e9366004613c86565b61174b565b3480156107fa57600080fd5b506104e0610809366004613c86565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561083357600080fd5b506103e5610842366004613c86565b6001600160a01b031660009081526020819052604090205490565b34801561086957600080fd5b50610413611929565b34801561087e57600080fd5b50600d546103b2906001600160a01b031681565b34801561089e57600080fd5b50610413611a4e565b3480156108b357600080fd5b506104136108c2366004613e49565b611aa5565b3480156108d357600080fd5b506015546001600160a01b03166103b2565b3480156108f157600080fd5b506104e0611c8f565b34801561090657600080fd5b50610413611cff565b34801561091b57600080fd5b5060408051808201909152600381526209aa4b60eb1b6020820152610494565b34801561094757600080fd5b50610413610956366004613e90565b611f55565b34801561096757600080fd5b506104e0610976366004613c5a565b612005565b34801561098757600080fd5b50610413610996366004613c86565b61201c565b3480156109a757600080fd5b506010546104e09060ff1681565b3480156109c157600080fd5b506104136109d0366004613ead565b6121b6565b3480156109e157600080fd5b506104136109f0366004613c86565b612261565b348015610a0157600080fd5b506103e5610a10366004613ca3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a4757600080fd5b50610413610a56366004613c86565b6122e2565b348015610a6757600080fd5b50610413610a76366004613c86565b6126e3565b348015610a8757600080fd5b506104136127a3565b348015610a9c57600080fd5b50610413610aab366004613e49565b61287c565b348015610abc57600080fd5b50610413610acb366004613ecb565b612905565b348015610adc57600080fd5b50600d546104e090600160a81b900460ff1681565b348015610afd57600080fd5b506104e0610b0c366004613c86565b612bc3565b348015610b1d57600080fd5b50610413610b2c366004613e49565b612c38565b6015546001600160a01b03163314610b7e5760405162461bcd60e51b815260206004820152601160248201526000805160206141e783398151915260448201526064015b60405180910390fd5b606482511115610bd05760405162461bcd60e51b815260206004820152601160248201527f546f6f206d616e79206174206f6e63652e0000000000000000000000000000006044820152606401610b75565b6013546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb690610c079085908590600401613f41565b600060405180830381600087803b158015610c2157600080fd5b505af1158015610c35573d6000803e3d6000fd5b505050505050565b6000610c4a338484612cab565b5060015b92915050565b6000610c626012600a61405f565b601254610c6f919061406e565b905090565b6015546001600160a01b03163314610cbc5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b60095460ff16610ccb57600080fd5b6001600160a01b0382163014801590610ced57506001600160a01b0381163014155b8015610d075750600c546001600160a01b03838116911614155b8015610d215750600c546001600160a01b03828116911614155b610d5b5760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610b75565b806001600160a01b0316826001600160a01b031603610dbd576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560089093529220805490911682179055610db99082906116d8565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526008909252808320805486168317905592825291902080549092168117909155610e279083906116d8565b610db98160016116d8565b6000610e406012600a61405f565b610c6f90620bde31614090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610eb2576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610eac9084906140a7565b90915550505b610ebd848484612da4565b949350505050565b6015546001600160a01b03163314610f0d5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b6064610f1b6012600a61405f565b610f2890620bde31614090565b610f32919061406e565b8183610f406012600a61405f565b610f4d90620bde31614090565b610f579190614090565b610f61919061406e565b1015610fd55760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610b75565b8082610fe36012600a61405f565b610ff090620bde31614090565b610ffa9190614090565b611004919061406e565b6012555050565b6015546001600160a01b031633146110535760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b80518251146110a45760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b75565b60005b82518161ffff1610156111bb576110c06012600a61405f565b828261ffff16815181106110d6576110d66140ba565b60200260200101516110e89190614090565b3360009081526020819052604090205410156111465760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610b75565b6111a833848361ffff1681518110611160576111606140ba565b60200260200101516012600a611176919061405f565b858561ffff168151811061118c5761118c6140ba565b602002602001015161119e9190614090565b600080600161325a565b50806111b3816140d0565b9150506110a7565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf835461121a91906140f1565b6112266012600a61405f565b61123390620bde31614090565b610c6f91906140a7565b6015546001600160a01b031633146112855760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b600b5460ff16156112d85760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610b75565b6103e88361ffff16111580156112f457506103e88261ffff1611155b801561130657506103e88161ffff1611155b6113525760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b75565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6015546001600160a01b031633146113d95760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600c546001600160a01b03166000908152602081905260408120546127109061142e908490614090565b610c4e919061406e565b6015546001600160a01b031633146114805760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b60968111156114d15760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610b75565b601155565b6015546001600160a01b0316331461151e5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b6001600160a01b03811661159a5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b75565b61deac196001600160a01b0382160161161b5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b75565b601554611632906001600160a01b031660006116d8565b61163d8160016116d8565b6015546001600160a01b031660009081526020819052604090205415611686576015546001600160a01b03166000818152602081905260409020546116849190839061119e565b505b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6015546001600160a01b031633146117205760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6015546001600160a01b031633146117935760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b60135460ff16156117a357600080fd5b306001600160a01b038216036117fb5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b75565b6013805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611881575060408051601f3d908101601f1916820190925261187e91810190614104565b60015b61188a57600080fd5b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560155492546119079383169291900416600019612cab565b600b546111bb90309061010090046001600160a01b0316600019612cab565b50565b6015546001600160a01b031633146119715760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b60135460ff166119e95760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610b75565b601554611a00906001600160a01b031660006116d8565b601580546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6015546001600160a01b03163314611a965760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b600b805460ff19166001179055565b6015546001600160a01b03163314611aed5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b80611b60576001600160a01b03828116600081815260016020526040808220805460ff1916905560135490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610c2157600080fd5b60025415611bc7576203f48060025442611b7a91906140a7565b11611bc75760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610b75565b6001600160a01b03821660009081526001602052604090205460ff1615611c305760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b75565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560135491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610c07565b6015546000906001600160a01b03163314611cda5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b600b54611cf990309061010090046001600160a01b0316600019612cab565b50600190565b6015546001600160a01b03163314611d475760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b60135460ff1615611d9a5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b75565b601354610100900460ff16611df15760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b75565b6013546201000090046001600160a01b0316611e21576013805462010000600160b01b0319163062010000021790555b601354600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611e9357600080fd5b505af1925050508015611ea4575060015b50601354600c546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611f27575060408051601f3d908101601f19168201909252611f2491810190614133565b60015b15611f3657600e91909155600f555b6013805460ff1990811660011790915560098054909116905542601455565b6015546001600160a01b03163314611f9d5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b60135460405163adf4511360e01b81528215156004820152620100009091046001600160a01b03169063adf45113906024015b600060405180830381600087803b158015611fea57600080fd5b505af1158015611ffe573d6000803e3d6000fd5b5050505050565b6000612012338484612da4565b5060019392505050565b6015546001600160a01b031633146120645760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b601354610100900460ff16156120cc57306001600160a01b038216036120cc5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b75565b6015546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015612123573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121479190614157565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bb9190614170565b6015546001600160a01b031633146121fe5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b600d805460ff60a81b1916600160a81b841515908102919091179091556010805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6015546001600160a01b031633146122a95760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b6013546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c290602401611fd0565b6015546001600160a01b0316331461232a5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b601354610100900460ff16156123825760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610b75565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123eb919061418d565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245c919061418d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156124a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124cb919061418d565b600c546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661266157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612536573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255a919061418d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cb919061418d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263c919061418d565b600c80546001600160a01b0319166001600160a01b039290921691909117905561267d565b600c80546001600160a01b0319166001600160a01b0383161790555b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c5482166000908152600160208190526040909120805460ff1916909117905591546111bb923092910416600019612cab565b6015546001600160a01b0316331461272b5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b6001600160a01b0381166127815760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b75565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6015546001600160a01b031633146127eb5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b601354610100900460ff16156128435760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b75565b6015546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611926573d6000803e3d6000fd5b6015546001600160a01b031633146128c45760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b6013546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610c07565b6015546001600160a01b0316331461294d5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b828461295b6012600a61405f565b61296890620bde31614090565b6129729190614090565b61297c919061406e565b600e55808261298d6012600a61405f565b61299a90620bde31614090565b6129a49190614090565b6129ae919061406e565b600f819055600e541115612a0e5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b75565b600c546001600160a01b031660009081526020819052604090205461271090612a38906096614090565b612a42919061406e565b600f541115612a9f5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b75565b620f4240612aaf6012600a61405f565b612abc90620bde31614090565b612ac6919061406e565b600f541015612b2e5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b75565b620f4240612b3e6012600a61405f565b612b4b90620bde31614090565b612b55919061406e565b600e541015612bbd5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b75565b50505050565b60135460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612c14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e9190614170565b6015546001600160a01b03163314612c805760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612cf75760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b75565b6001600160a01b038216612d435760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b75565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612e0a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b75565b6001600160a01b038316612e6c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b75565b60008211612ece5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b75565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612efc5760019250612f2a565b6001600160a01b03861660009081526001602052604090205460ff1615612f265760019150612f2a565b5060015b600a54610dac6201000090910461ffff16118015612f4a575060135460ff165b15612f7857601454612f5e906109606140f1565b4210612f7857600a805463ffff00001916630dac00001790555b612f82878761350d565b156131575760135460ff166130835780612fde5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b75565b6001600160a01b03871660009081526005602052604090205460ff1615801561302057506001600160a01b03861660009081526005602052604090205460ff16155b156130835760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b75565b600b546001600160a01b0387811661010090920416148015906130a4575081155b15613157576001600160a01b03861660009081526007602052604090205460ff1661315757601254856130ec886001600160a01b031660009081526020819052604090205490565b6130f691906140f1565b11156131575760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610b75565b811561324157600d54600160a01b900460ff1661324157600d54600160a81b900460ff1680156131a057506001600160a01b03861660009081526008602052604090205460ff16155b80156131c557506001600160a01b03871660009081526008602052604090205460ff16155b156132415730600090815260208190526040902054600e54811061323f57600f5460105460ff161561322957601154600c546001600160a01b03166000908152602081905260409020546127109161321c91614090565b613226919061406e565b90505b808210613234578091505b61323d82613624565b505b505b61324f87878786868661325a565b979650505050505050565b6000613266878761350d565b156133005760135460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156132e9575060408051601f3d908101601f191682019092526132e691810190614170565b60015b6132f257600080fd5b9050806132fe57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061334257506001600160a01b03871660009081526006602052604090205460ff165b1561334b575060005b6001600160a01b038816600090815260208190526040812080548892906133739084906140a7565b9091555060009050816133865786613392565b61339289888888613868565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546133c891906140f1565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161341491815260200190565b60405180910390a3601354610100900460ff166134fe576134358989613974565b601354610100900460ff161580156134525750613452898961350d565b801561347757506001600160a01b03891660009081526005602052604090205460ff16155b801561349c57506001600160a01b03881660009081526005602052604090205460ff16155b80156134a6575083155b156134fe5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b75565b50600198975050505050505050565b6015546000906001600160a01b0384811691161480159061353c57506015546001600160a01b03838116911614155b801561355357506015546001600160a01b03163214155b801561357857506001600160a01b03821660009081526004602052604090205460ff16155b801561359d57506001600160a01b03831660009081526004602052604090205460ff16155b80156135b457506001600160a01b03821661dead14155b80156135c857506001600160a01b03821615155b80156135dd57506001600160a01b0383163014155b80156135fd57506013546001600160a01b03848116620100009092041614155b801561361d57506013546001600160a01b03838116620100009092041614155b9392505050565b600d805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600b5461010090046001600160a01b031684529091529020546000191461369a57306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106136cf576136cf6140ba565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613742573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613766919061418d565b81600181518110613779576137796140ba565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac947906137c69085906000908690309042906004016141aa565b600060405180830381600087803b1580156137e057600080fd5b505af19250505080156137f1575060015b6137fb5750613858565b600d546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d806000811461384d576040519150601f19603f3d011682016040523d82523d6000602084013e613852565b606091505b50505050505b50600d805460ff60a01b19169055565b600080831561387e5750600a5461ffff166138a8565b82156138975750600a5462010000900461ffff166138a8565b50600a54640100000000900461ffff165b806000036138b95784915050610ebd565b6013546201000090046001600160a01b0316301480156138da575046606114155b156138e457506111945b60006127106138f38388614090565b6138fd919061406e565b9050801561396a5730600090815260208190526040812080548392906139249084906140f1565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61324f81876140a7565b601354610100900460ff16156139d85760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b75565b6139e2828261350d565b1580156139fc5750600c546001600160a01b038281169116145b15610db9576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556013805461ff001916610100179081905562010000900416613a74576013805462010000600160b01b0319163062010000021790555b600d805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612255565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613af757613af7613ab8565b604052919050565b600067ffffffffffffffff821115613b1957613b19613ab8565b5060051b60200190565b6001600160a01b038116811461192657600080fd5b600082601f830112613b4957600080fd5b81356020613b5e613b5983613aff565b613ace565b82815260059290921b84018101918181019086841115613b7d57600080fd5b8286015b84811015613ba1578035613b9481613b23565b8352918301918301613b81565b509695505050505050565b801515811461192657600080fd5b60008060408385031215613bcd57600080fd5b823567ffffffffffffffff811115613be457600080fd5b613bf085828601613b38565b9250506020830135613c0181613bac565b809150509250929050565b600060208083528351808285015260005b81811015613c3957858101830151858201604001528201613c1d565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215613c6d57600080fd5b8235613c7881613b23565b946020939093013593505050565b600060208284031215613c9857600080fd5b813561361d81613b23565b60008060408385031215613cb657600080fd5b8235613cc181613b23565b91506020830135613c0181613b23565b600080600060608486031215613ce657600080fd5b8335613cf181613b23565b92506020840135613d0181613b23565b929592945050506040919091013590565b60008060408385031215613d2557600080fd5b50508035926020909101359150565b60008060408385031215613d4757600080fd5b823567ffffffffffffffff80821115613d5f57600080fd5b613d6b86838701613b38565b9350602091508185013581811115613d8257600080fd5b85019050601f81018613613d9557600080fd5b8035613da3613b5982613aff565b81815260059190911b82018301908381019088831115613dc257600080fd5b928401925b82841015613de057833582529284019290840190613dc7565b80955050505050509250929050565b803561ffff81168114613e0157600080fd5b919050565b600080600060608486031215613e1b57600080fd5b613e2484613def565b9250613e3260208501613def565b9150613e4060408501613def565b90509250925092565b60008060408385031215613e5c57600080fd5b8235613e6781613b23565b91506020830135613c0181613bac565b600060208284031215613e8957600080fd5b5035919050565b600060208284031215613ea257600080fd5b813561361d81613bac565b60008060408385031215613ec057600080fd5b8235613e6781613bac565b60008060008060808587031215613ee157600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015613f365781516001600160a01b031687529582019590820190600101613f11565b509495945050505050565b604081526000613f546040830185613efd565b905082151560208301529392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613fb6578160001904821115613f9c57613f9c613f65565b80851615613fa957918102915b93841c9390800290613f80565b509250929050565b600082613fcd57506001610c4e565b81613fda57506000610c4e565b8160018114613ff05760028114613ffa57614016565b6001915050610c4e565b60ff84111561400b5761400b613f65565b50506001821b610c4e565b5060208310610133831016604e8410600b8410161715614039575081810a610c4e565b6140438383613f7b565b806000190482111561405757614057613f65565b029392505050565b600061361d60ff841683613fbe565b60008261408b57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610c4e57610c4e613f65565b81810381811115610c4e57610c4e613f65565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036140e7576140e7613f65565b6001019392505050565b80820180821115610c4e57610c4e613f65565b6000806040838503121561411757600080fd5b825161412281613b23565b6020840151909250613c0181613b23565b6000806040838503121561414657600080fd5b505080516020909101519092909150565b60006020828403121561416957600080fd5b5051919050565b60006020828403121561418257600080fd5b815161361d81613bac565b60006020828403121561419f57600080fd5b815161361d81613b23565b85815284602082015260a0604082015260006141c960a0830186613efd565b6001600160a01b039490941660608301525060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a26469706673582212204568661f07840a14911bcd75a5f237db0e50d6dd18064229daf527c9d762fd6364736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103905760003560e01c8063590ffdce116101dc578063ab558e4d11610102578063eafb5a3c116100a0578063fb78680d1161006f578063fb78680d14610ab0578063fdb78c0e14610ad0578063fe575a8714610af1578063feadde9c14610b1157600080fd5b8063eafb5a3c14610a3b578063eb50e70e14610a5b578063ee5d9c2d14610a7b578063eec2744e14610a9057600080fd5b8063b7df8b36116100dc578063b7df8b361461099b578063bfc2fc35146109b5578063c6a276c2146109d5578063dd62ed3e146109f557600080fd5b8063ab558e4d1461097b578063b1b08f711461061e578063b3d514fb1461061e57600080fd5b806378648edf1161017a5780638a8c523c116101495780638a8c523c146108fa57806395d89b411461090f578063a0263c891461093b578063a9059cbb1461095b57600080fd5b806378648edf1461089257806380c581d1146108a7578063893d20e8146108c75780638a63bd9b146108e557600080fd5b80635cce86cd116101b65780635cce86cd146107ee57806370a0823114610827578063715018a61461085d57806375f0a8741461087257600080fd5b8063590ffdce146107985780635a6f0918146107b85780635c24b074146107ce57600080fd5b80632610eaca116102c157806336fddb041161025f5780634e718e481161022e5780634e718e48146107005780634fb2e45d146107205780634fbee1931461074057806350a8e0161461077957600080fd5b806336fddb0414610686578063452ed4f1146106a65780634ada218b146106c65780634bbb93eb146106e057600080fd5b80632b28fc7a1161029b5780632b28fc7a1461061e5780632e8fa82114610634578063313ce5671461064a57806332cde6641461066657600080fd5b80632610eaca146105d357806328577751146105f35780632b112e491461060957600080fd5b8063095ea7b31161032e57806313b4a7f41161030857806313b4a7f41461055e57806318160ddd1461057e57806323b872dd1461059357806326003957146105b357600080fd5b8063095ea7b3146104f05780630dcbcf1c146105105780630fa604e41461054957600080fd5b8063069d955f1161036a578063069d955f1461041557806306fdde031461046b5780630758d924146104a157806307dd79e0146104c657600080fd5b806303fd2a451461039c5780630445b667146103cf57806305bbedb6146103f357600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103db57600080fd5b506103e5600e5481565b6040519081526020016103c6565b3480156103ff57600080fd5b5061041361040e366004613bba565b610b31565b005b34801561042157600080fd5b50600a546104469061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103c6565b34801561047757600080fd5b5060408051808201909152600481526309ae45cb60e31b60208201525b6040516103c69190613c0c565b3480156104ad57600080fd5b50600b546103b29061010090046001600160a01b031681565b3480156104d257600080fd5b50600b546104e09060ff1681565b60405190151581526020016103c6565b3480156104fc57600080fd5b506104e061050b366004613c5a565b610c3d565b34801561051c57600080fd5b506104e061052b366004613c86565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561055557600080fd5b506103e5610c54565b34801561056a57600080fd5b50610413610579366004613ca3565b610c74565b34801561058a57600080fd5b506103e5610e32565b34801561059f57600080fd5b506104e06105ae366004613cd1565b610e4d565b3480156105bf57600080fd5b506104136105ce366004613d12565b610ec5565b3480156105df57600080fd5b506104136105ee366004613d34565b61100b565b3480156105ff57600080fd5b506103e560115481565b34801561061557600080fd5b506103e56111c0565b34801561062a57600080fd5b506103e56103e881565b34801561064057600080fd5b506103e5600f5481565b34801561065657600080fd5b50604051601281526020016103c6565b34801561067257600080fd5b50610413610681366004613e06565b61123d565b34801561069257600080fd5b506104136106a1366004613e49565b611391565b3480156106b257600080fd5b50600c546103b2906001600160a01b031681565b3480156106d257600080fd5b506013546104e09060ff1681565b3480156106ec57600080fd5b506103e56106fb366004613e77565b611404565b34801561070c57600080fd5b5061041361071b366004613e77565b611438565b34801561072c57600080fd5b5061041361073b366004613c86565b6114d6565b34801561074c57600080fd5b506104e061075b366004613c86565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561078557600080fd5b506013546104e090610100900460ff1681565b3480156107a457600080fd5b506104136107b3366004613e49565b6116d8565b3480156107c457600080fd5b506103e560145481565b3480156107da57600080fd5b506104136107e9366004613c86565b61174b565b3480156107fa57600080fd5b506104e0610809366004613c86565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561083357600080fd5b506103e5610842366004613c86565b6001600160a01b031660009081526020819052604090205490565b34801561086957600080fd5b50610413611929565b34801561087e57600080fd5b50600d546103b2906001600160a01b031681565b34801561089e57600080fd5b50610413611a4e565b3480156108b357600080fd5b506104136108c2366004613e49565b611aa5565b3480156108d357600080fd5b506015546001600160a01b03166103b2565b3480156108f157600080fd5b506104e0611c8f565b34801561090657600080fd5b50610413611cff565b34801561091b57600080fd5b5060408051808201909152600381526209aa4b60eb1b6020820152610494565b34801561094757600080fd5b50610413610956366004613e90565b611f55565b34801561096757600080fd5b506104e0610976366004613c5a565b612005565b34801561098757600080fd5b50610413610996366004613c86565b61201c565b3480156109a757600080fd5b506010546104e09060ff1681565b3480156109c157600080fd5b506104136109d0366004613ead565b6121b6565b3480156109e157600080fd5b506104136109f0366004613c86565b612261565b348015610a0157600080fd5b506103e5610a10366004613ca3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a4757600080fd5b50610413610a56366004613c86565b6122e2565b348015610a6757600080fd5b50610413610a76366004613c86565b6126e3565b348015610a8757600080fd5b506104136127a3565b348015610a9c57600080fd5b50610413610aab366004613e49565b61287c565b348015610abc57600080fd5b50610413610acb366004613ecb565b612905565b348015610adc57600080fd5b50600d546104e090600160a81b900460ff1681565b348015610afd57600080fd5b506104e0610b0c366004613c86565b612bc3565b348015610b1d57600080fd5b50610413610b2c366004613e49565b612c38565b6015546001600160a01b03163314610b7e5760405162461bcd60e51b815260206004820152601160248201526000805160206141e783398151915260448201526064015b60405180910390fd5b606482511115610bd05760405162461bcd60e51b815260206004820152601160248201527f546f6f206d616e79206174206f6e63652e0000000000000000000000000000006044820152606401610b75565b6013546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb690610c079085908590600401613f41565b600060405180830381600087803b158015610c2157600080fd5b505af1158015610c35573d6000803e3d6000fd5b505050505050565b6000610c4a338484612cab565b5060015b92915050565b6000610c626012600a61405f565b601254610c6f919061406e565b905090565b6015546001600160a01b03163314610cbc5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b60095460ff16610ccb57600080fd5b6001600160a01b0382163014801590610ced57506001600160a01b0381163014155b8015610d075750600c546001600160a01b03838116911614155b8015610d215750600c546001600160a01b03828116911614155b610d5b5760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610b75565b806001600160a01b0316826001600160a01b031603610dbd576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560089093529220805490911682179055610db99082906116d8565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526008909252808320805486168317905592825291902080549092168117909155610e279083906116d8565b610db98160016116d8565b6000610e406012600a61405f565b610c6f90620bde31614090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610eb2576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610eac9084906140a7565b90915550505b610ebd848484612da4565b949350505050565b6015546001600160a01b03163314610f0d5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b6064610f1b6012600a61405f565b610f2890620bde31614090565b610f32919061406e565b8183610f406012600a61405f565b610f4d90620bde31614090565b610f579190614090565b610f61919061406e565b1015610fd55760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610b75565b8082610fe36012600a61405f565b610ff090620bde31614090565b610ffa9190614090565b611004919061406e565b6012555050565b6015546001600160a01b031633146110535760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b80518251146110a45760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b75565b60005b82518161ffff1610156111bb576110c06012600a61405f565b828261ffff16815181106110d6576110d66140ba565b60200260200101516110e89190614090565b3360009081526020819052604090205410156111465760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610b75565b6111a833848361ffff1681518110611160576111606140ba565b60200260200101516012600a611176919061405f565b858561ffff168151811061118c5761118c6140ba565b602002602001015161119e9190614090565b600080600161325a565b50806111b3816140d0565b9150506110a7565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf835461121a91906140f1565b6112266012600a61405f565b61123390620bde31614090565b610c6f91906140a7565b6015546001600160a01b031633146112855760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b600b5460ff16156112d85760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610b75565b6103e88361ffff16111580156112f457506103e88261ffff1611155b801561130657506103e88161ffff1611155b6113525760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b75565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6015546001600160a01b031633146113d95760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600c546001600160a01b03166000908152602081905260408120546127109061142e908490614090565b610c4e919061406e565b6015546001600160a01b031633146114805760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b60968111156114d15760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610b75565b601155565b6015546001600160a01b0316331461151e5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b6001600160a01b03811661159a5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b75565b61deac196001600160a01b0382160161161b5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b75565b601554611632906001600160a01b031660006116d8565b61163d8160016116d8565b6015546001600160a01b031660009081526020819052604090205415611686576015546001600160a01b03166000818152602081905260409020546116849190839061119e565b505b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6015546001600160a01b031633146117205760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6015546001600160a01b031633146117935760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b60135460ff16156117a357600080fd5b306001600160a01b038216036117fb5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b75565b6013805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611881575060408051601f3d908101601f1916820190925261187e91810190614104565b60015b61188a57600080fd5b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560155492546119079383169291900416600019612cab565b600b546111bb90309061010090046001600160a01b0316600019612cab565b50565b6015546001600160a01b031633146119715760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b60135460ff166119e95760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610b75565b601554611a00906001600160a01b031660006116d8565b601580546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6015546001600160a01b03163314611a965760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b600b805460ff19166001179055565b6015546001600160a01b03163314611aed5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b80611b60576001600160a01b03828116600081815260016020526040808220805460ff1916905560135490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610c2157600080fd5b60025415611bc7576203f48060025442611b7a91906140a7565b11611bc75760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610b75565b6001600160a01b03821660009081526001602052604090205460ff1615611c305760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b75565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560135491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610c07565b6015546000906001600160a01b03163314611cda5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b600b54611cf990309061010090046001600160a01b0316600019612cab565b50600190565b6015546001600160a01b03163314611d475760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b60135460ff1615611d9a5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b75565b601354610100900460ff16611df15760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b75565b6013546201000090046001600160a01b0316611e21576013805462010000600160b01b0319163062010000021790555b601354600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611e9357600080fd5b505af1925050508015611ea4575060015b50601354600c546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611f27575060408051601f3d908101601f19168201909252611f2491810190614133565b60015b15611f3657600e91909155600f555b6013805460ff1990811660011790915560098054909116905542601455565b6015546001600160a01b03163314611f9d5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b60135460405163adf4511360e01b81528215156004820152620100009091046001600160a01b03169063adf45113906024015b600060405180830381600087803b158015611fea57600080fd5b505af1158015611ffe573d6000803e3d6000fd5b5050505050565b6000612012338484612da4565b5060019392505050565b6015546001600160a01b031633146120645760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b601354610100900460ff16156120cc57306001600160a01b038216036120cc5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b75565b6015546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015612123573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121479190614157565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bb9190614170565b6015546001600160a01b031633146121fe5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b600d805460ff60a81b1916600160a81b841515908102919091179091556010805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6015546001600160a01b031633146122a95760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b6013546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c290602401611fd0565b6015546001600160a01b0316331461232a5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b601354610100900460ff16156123825760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610b75565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123eb919061418d565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245c919061418d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156124a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124cb919061418d565b600c546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661266157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612536573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255a919061418d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cb919061418d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263c919061418d565b600c80546001600160a01b0319166001600160a01b039290921691909117905561267d565b600c80546001600160a01b0319166001600160a01b0383161790555b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c5482166000908152600160208190526040909120805460ff1916909117905591546111bb923092910416600019612cab565b6015546001600160a01b0316331461272b5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b6001600160a01b0381166127815760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b75565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6015546001600160a01b031633146127eb5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b601354610100900460ff16156128435760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b75565b6015546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611926573d6000803e3d6000fd5b6015546001600160a01b031633146128c45760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b6013546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610c07565b6015546001600160a01b0316331461294d5760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b828461295b6012600a61405f565b61296890620bde31614090565b6129729190614090565b61297c919061406e565b600e55808261298d6012600a61405f565b61299a90620bde31614090565b6129a49190614090565b6129ae919061406e565b600f819055600e541115612a0e5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b75565b600c546001600160a01b031660009081526020819052604090205461271090612a38906096614090565b612a42919061406e565b600f541115612a9f5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b75565b620f4240612aaf6012600a61405f565b612abc90620bde31614090565b612ac6919061406e565b600f541015612b2e5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b75565b620f4240612b3e6012600a61405f565b612b4b90620bde31614090565b612b55919061406e565b600e541015612bbd5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b75565b50505050565b60135460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612c14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e9190614170565b6015546001600160a01b03163314612c805760405162461bcd60e51b815260206004820152601160248201526000805160206141e78339815191526044820152606401610b75565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612cf75760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b75565b6001600160a01b038216612d435760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b75565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612e0a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b75565b6001600160a01b038316612e6c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b75565b60008211612ece5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b75565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612efc5760019250612f2a565b6001600160a01b03861660009081526001602052604090205460ff1615612f265760019150612f2a565b5060015b600a54610dac6201000090910461ffff16118015612f4a575060135460ff165b15612f7857601454612f5e906109606140f1565b4210612f7857600a805463ffff00001916630dac00001790555b612f82878761350d565b156131575760135460ff166130835780612fde5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b75565b6001600160a01b03871660009081526005602052604090205460ff1615801561302057506001600160a01b03861660009081526005602052604090205460ff16155b156130835760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b75565b600b546001600160a01b0387811661010090920416148015906130a4575081155b15613157576001600160a01b03861660009081526007602052604090205460ff1661315757601254856130ec886001600160a01b031660009081526020819052604090205490565b6130f691906140f1565b11156131575760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610b75565b811561324157600d54600160a01b900460ff1661324157600d54600160a81b900460ff1680156131a057506001600160a01b03861660009081526008602052604090205460ff16155b80156131c557506001600160a01b03871660009081526008602052604090205460ff16155b156132415730600090815260208190526040902054600e54811061323f57600f5460105460ff161561322957601154600c546001600160a01b03166000908152602081905260409020546127109161321c91614090565b613226919061406e565b90505b808210613234578091505b61323d82613624565b505b505b61324f87878786868661325a565b979650505050505050565b6000613266878761350d565b156133005760135460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156132e9575060408051601f3d908101601f191682019092526132e691810190614170565b60015b6132f257600080fd5b9050806132fe57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061334257506001600160a01b03871660009081526006602052604090205460ff165b1561334b575060005b6001600160a01b038816600090815260208190526040812080548892906133739084906140a7565b9091555060009050816133865786613392565b61339289888888613868565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546133c891906140f1565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161341491815260200190565b60405180910390a3601354610100900460ff166134fe576134358989613974565b601354610100900460ff161580156134525750613452898961350d565b801561347757506001600160a01b03891660009081526005602052604090205460ff16155b801561349c57506001600160a01b03881660009081526005602052604090205460ff16155b80156134a6575083155b156134fe5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b75565b50600198975050505050505050565b6015546000906001600160a01b0384811691161480159061353c57506015546001600160a01b03838116911614155b801561355357506015546001600160a01b03163214155b801561357857506001600160a01b03821660009081526004602052604090205460ff16155b801561359d57506001600160a01b03831660009081526004602052604090205460ff16155b80156135b457506001600160a01b03821661dead14155b80156135c857506001600160a01b03821615155b80156135dd57506001600160a01b0383163014155b80156135fd57506013546001600160a01b03848116620100009092041614155b801561361d57506013546001600160a01b03838116620100009092041614155b9392505050565b600d805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600b5461010090046001600160a01b031684529091529020546000191461369a57306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106136cf576136cf6140ba565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613742573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613766919061418d565b81600181518110613779576137796140ba565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac947906137c69085906000908690309042906004016141aa565b600060405180830381600087803b1580156137e057600080fd5b505af19250505080156137f1575060015b6137fb5750613858565b600d546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d806000811461384d576040519150601f19603f3d011682016040523d82523d6000602084013e613852565b606091505b50505050505b50600d805460ff60a01b19169055565b600080831561387e5750600a5461ffff166138a8565b82156138975750600a5462010000900461ffff166138a8565b50600a54640100000000900461ffff165b806000036138b95784915050610ebd565b6013546201000090046001600160a01b0316301480156138da575046606114155b156138e457506111945b60006127106138f38388614090565b6138fd919061406e565b9050801561396a5730600090815260208190526040812080548392906139249084906140f1565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61324f81876140a7565b601354610100900460ff16156139d85760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b75565b6139e2828261350d565b1580156139fc5750600c546001600160a01b038281169116145b15610db9576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556013805461ff001916610100179081905562010000900416613a74576013805462010000600160b01b0319163062010000021790555b600d805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612255565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613af757613af7613ab8565b604052919050565b600067ffffffffffffffff821115613b1957613b19613ab8565b5060051b60200190565b6001600160a01b038116811461192657600080fd5b600082601f830112613b4957600080fd5b81356020613b5e613b5983613aff565b613ace565b82815260059290921b84018101918181019086841115613b7d57600080fd5b8286015b84811015613ba1578035613b9481613b23565b8352918301918301613b81565b509695505050505050565b801515811461192657600080fd5b60008060408385031215613bcd57600080fd5b823567ffffffffffffffff811115613be457600080fd5b613bf085828601613b38565b9250506020830135613c0181613bac565b809150509250929050565b600060208083528351808285015260005b81811015613c3957858101830151858201604001528201613c1d565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215613c6d57600080fd5b8235613c7881613b23565b946020939093013593505050565b600060208284031215613c9857600080fd5b813561361d81613b23565b60008060408385031215613cb657600080fd5b8235613cc181613b23565b91506020830135613c0181613b23565b600080600060608486031215613ce657600080fd5b8335613cf181613b23565b92506020840135613d0181613b23565b929592945050506040919091013590565b60008060408385031215613d2557600080fd5b50508035926020909101359150565b60008060408385031215613d4757600080fd5b823567ffffffffffffffff80821115613d5f57600080fd5b613d6b86838701613b38565b9350602091508185013581811115613d8257600080fd5b85019050601f81018613613d9557600080fd5b8035613da3613b5982613aff565b81815260059190911b82018301908381019088831115613dc257600080fd5b928401925b82841015613de057833582529284019290840190613dc7565b80955050505050509250929050565b803561ffff81168114613e0157600080fd5b919050565b600080600060608486031215613e1b57600080fd5b613e2484613def565b9250613e3260208501613def565b9150613e4060408501613def565b90509250925092565b60008060408385031215613e5c57600080fd5b8235613e6781613b23565b91506020830135613c0181613bac565b600060208284031215613e8957600080fd5b5035919050565b600060208284031215613ea257600080fd5b813561361d81613bac565b60008060408385031215613ec057600080fd5b8235613e6781613bac565b60008060008060808587031215613ee157600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015613f365781516001600160a01b031687529582019590820190600101613f11565b509495945050505050565b604081526000613f546040830185613efd565b905082151560208301529392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613fb6578160001904821115613f9c57613f9c613f65565b80851615613fa957918102915b93841c9390800290613f80565b509250929050565b600082613fcd57506001610c4e565b81613fda57506000610c4e565b8160018114613ff05760028114613ffa57614016565b6001915050610c4e565b60ff84111561400b5761400b613f65565b50506001821b610c4e565b5060208310610133831016604e8410600b8410161715614039575081810a610c4e565b6140438383613f7b565b806000190482111561405757614057613f65565b029392505050565b600061361d60ff841683613fbe565b60008261408b57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610c4e57610c4e613f65565b81810381811115610c4e57610c4e613f65565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036140e7576140e7613f65565b6001019392505050565b80820180821115610c4e57610c4e613f65565b6000806040838503121561411757600080fd5b825161412281613b23565b6020840151909250613c0181613b23565b6000806040838503121561414657600080fd5b505080516020909101519092909150565b60006020828403121561416957600080fd5b5051919050565b60006020828403121561418257600080fd5b815161361d81613bac565b60006020828403121561419f57600080fd5b815161361d81613b23565b85815284602082015260a0604082015260006141c960a0830186613efd565b6001600160a01b039490941660608301525060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a26469706673582212204568661f07840a14911bcd75a5f237db0e50d6dd18064229daf527c9d762fd6364736f6c63430008130033

Deployed Bytecode Sourcemap

4328:21687:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5711:73;;;;;;;;;;;;5742:42;5711:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5711:73:0;;;;;;;;5954:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;5954:28:0;245:177:1;14047:341:0;;;;;;;;;;-1:-1:-1;14047:341:0;;;;;:::i;:::-;;:::i;:::-;;5298:109;;;;;;;;;;-1:-1:-1;5298:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;2739:6:1;2772:15;;;2754:34;;2824:15;;;2819:2;2804:18;;2797:43;2876:15;;2856:18;;;2849:43;;;;2717:2;2702:18;5298:109:0;2533:365:1;9289:80:0;;;;;;;;;;-1:-1:-1;9361:5:0;;;;;;;;;;;;-1:-1:-1;;;9361:5:0;;;;9289:80;;;;;;;:::i;5650:26::-;;;;;;;;;;-1:-1:-1;5650:26:0;;;;;;;-1:-1:-1;;;;;5650:26:0;;;5617;;;;;;;;;;-1:-1:-1;5617:26:0;;;;;;;;;;;3869:14:1;;3862:22;3844:41;;3832:2;3817:18;5617:26:0;3704:187:1;9897:161:0;;;;;;;;;;-1:-1:-1;9897:161:0;;;;;:::i;:::-;;:::i;13271:140::-;;;;;;;;;;-1:-1:-1;13271:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;13369:34:0;13345:4;13369:34;;;:25;:34;;;;;;;;;13271:140;16061:114;;;;;;;;;;;;;:::i;17583:809::-;;;;;;;;;;-1:-1:-1;17583:809:0;;;;;:::i;:::-;;:::i;9024:83::-;;;;;;;;;;;;;:::i;10567:306::-;;;;;;;;;;-1:-1:-1;10567:306:0;;;;;:::i;:::-;;:::i;15789:264::-;;;;;;;;;;-1:-1:-1;15789:264:0;;;;;:::i;:::-;;:::i;23727:447::-;;;;;;;;;;-1:-1:-1;23727:447:0;;;;;:::i;:::-;;:::i;6062:33::-;;;;;;;;;;;;;;;;13575:141;;;;;;;;;;;;;:::i;5416:42::-;;;;;;;;;;;;5454:4;5416:42;;5989:25;;;;;;;;;;;;;;;;9113:80;;;;;;;;;;-1:-1:-1;9113:80:0;;5109:2;6860:36:1;;6848:2;6833:18;9113:80:0;6718:184:1;15129:453:0;;;;;;;;;;-1:-1:-1;15129:453:0;;;;;:::i;:::-;;:::i;12846:140::-;;;;;;;;;;-1:-1:-1;12846:140:0;;;;;:::i;:::-;;:::i;5683:21::-;;;;;;;;;;-1:-1:-1;5683:21:0;;;;-1:-1:-1;;;;;5683:21:0;;;6161:34;;;;;;;;;;-1:-1:-1;6161:34:0;;;;;;;;16183:189;;;;;;;;;;-1:-1:-1;16183:189:0;;;;;:::i;:::-;;:::i;17087:217::-;;;;;;;;;;-1:-1:-1;17087:217:0;;;;;:::i;:::-;;:::i;7656:654::-;;;;;;;;;;-1:-1:-1;7656:654:0;;;;;:::i;:::-;;:::i;12994:127::-;;;;;;;;;;-1:-1:-1;12994:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13085:28:0;13061:4;13085:28;;;:19;:28;;;;;;;;;12994:127;6202:36;;;;;;;;;;-1:-1:-1;6202:36:0;;;;;;;;;;;13129:134;;;;;;;;;;-1:-1:-1;13129:134:0;;;;;:::i;:::-;;:::i;6275:26::-;;;;;;;;;;;;;;;;12141:557;;;;;;;;;;-1:-1:-1;12141:557:0;;;;;:::i;:::-;;:::i;12706:132::-;;;;;;;;;;-1:-1:-1;12706:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;12800:30:0;12776:4;12800:30;;;:21;:30;;;;;;;;;12706:132;9599:117;;;;;;;;;;-1:-1:-1;9599:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;9692:16:0;9665:7;9692:16;;;;;;;;;;;;9599:117;8318:310;;;;;;;;;;;;;:::i;5791:92::-;;;;;;;;;;-1:-1:-1;5791:92:0;;;;-1:-1:-1;;;;;5791:92:0;;;14939:182;;;;;;;;;;;;;:::i;11569:564::-;;;;;;;;;;-1:-1:-1;11569:564:0;;;;;:::i;:::-;;:::i;9375:79::-;;;;;;;;;;-1:-1:-1;9445:6:0;;-1:-1:-1;;;;;9445:6:0;9375:79;;10384:175;;;;;;;;;;;;;:::i;22488:737::-;;;;;;;;;;;;;:::i;9199:84::-;;;;;;;;;;-1:-1:-1;9273:7:0;;;;;;;;;;;;-1:-1:-1;;;9273:7:0;;;;9199:84;;14807:124;;;;;;;;;;-1:-1:-1;14807:124:0;;;;;:::i;:::-;;:::i;9724:165::-;;;;;;;;;;-1:-1:-1;9724:165:0;;;;;:::i;:::-;;:::i;23423:296::-;;;;;;;;;;-1:-1:-1;23423:296:0;;;;;:::i;:::-;;:::i;6021:34::-;;;;;;;;;;-1:-1:-1;6021:34:0;;;;;;;;17312:263;;;;;;;;;;-1:-1:-1;17312:263:0;;;;;:::i;:::-;;:::i;14533:202::-;;;;;;;;;;-1:-1:-1;14533:202:0;;;;;:::i;:::-;;:::i;9460:133::-;;;;;;;;;;-1:-1:-1;9460:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9562:19:0;;;9544:7;9562:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9460:133;10881:680;;;;;;;;;;-1:-1:-1;10881:680:0;;;;;:::i;:::-;;:::i;15590:191::-;;;;;;;;;;-1:-1:-1;15590:191:0;;;;;:::i;:::-;;:::i;23233:182::-;;;;;;;;;;;;;:::i;13788:251::-;;;;;;;;;;-1:-1:-1;13788:251:0;;;;;:::i;:::-;;:::i;16380:699::-;;;;;;;;;;-1:-1:-1;16380:699:0;;;;;:::i;:::-;;:::i;5908:39::-;;;;;;;;;;-1:-1:-1;5908:39:0;;;;-1:-1:-1;;;5908:39:0;;;;;;14396:129;;;;;;;;;;-1:-1:-1;14396:129:0;;;;;:::i;:::-;;:::i;13419:148::-;;;;;;;;;;-1:-1:-1;13419:148:0;;;;;:::i;:::-;;:::i;14047:341::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;;;;;;;;;14286:3:::1;14267:8;:15;:22;;14259:52;;;::::0;-1:-1:-1;;;14259:52:0;;10048:2:1;14259:52:0::1;::::0;::::1;10030:21:1::0;10087:2;10067:18;;;10060:30;10126:19;10106:18;;;10099:47;10163:18;;14259:52:0::1;9846:341:1::0;14259:52:0::1;14322:11;::::0;:58:::1;::::0;-1:-1:-1;;;14322:58:0;;:11;;;::::1;-1:-1:-1::0;;;;;14322:11:0::1;::::0;:39:::1;::::0;:58:::1;::::0;14362:8;;14372:7;;14322:58:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14047:341:::0;;:::o;9897:161::-;9974:4;9991:37;10000:10;10012:7;10021:6;9991:8;:37::i;:::-;-1:-1:-1;10046:4:0;9897:161;;;;;:::o;16061:114::-;16108:7;16153:13;5109:2;16153;:13;:::i;:::-;16135:14;;:32;;;;:::i;:::-;16128:39;;16061:114;:::o;17583:809::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;17687:23:::1;::::0;::::1;;17679:32;;;::::0;::::1;;-1:-1:-1::0;;;;;17730:23:0;::::1;17748:4;17730:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;17775:24:0;::::1;17794:4;17775:24;;17730:69;:107;;;;-1:-1:-1::0;17821:6:0::1;::::0;-1:-1:-1;;;;;17821:16:0;;::::1;:6:::0;::::1;:16;;17730:107;:146;;;;-1:-1:-1::0;17859:6:0::1;::::0;-1:-1:-1;;;;;17859:17:0;;::::1;:6:::0;::::1;:17;;17730:146;17722:170;;;::::0;-1:-1:-1;;;17722:170:0;;12967:2:1;17722:170:0::1;::::0;::::1;12949:21:1::0;13006:2;12986:18;;;12979:30;-1:-1:-1;;;13025:18:1;;;13018:41;13076:18;;17722:170:0::1;12765:335:1::0;17722:170:0::1;17917:7;-1:-1:-1::0;;;;;17907:17:0::1;:6;-1:-1:-1::0;;;;;17907:17:0::1;::::0;17903:482:::1;;-1:-1:-1::0;;;;;17941:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;17970:4:::1;-1:-1:-1::0;;17941:33:0;;::::1;::::0;::::1;::::0;;;17989:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;18036:34:::1;::::0;17941:26;;18036:19:::1;:34::i;:::-;17583:809:::0;;:::o;17903:482::-:1;-1:-1:-1::0;;;;;18103:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;18131:4:::1;-1:-1:-1::0;;18103:32:0;;::::1;::::0;::::1;::::0;;;18150:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;18198:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;18244:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;18291:33:::1;::::0;18103:25;;18291:19:::1;:33::i;:::-;18339:34;18359:7;18368:4;18339:19;:34::i;9024:83::-:0;9079:7;5170:13;5109:2;5170;:13;:::i;:::-;5153:30;;4969:7;5153:30;:::i;10567:306::-;-1:-1:-1;;;;;10688:19:0;;10667:4;10688:19;;;:11;:19;;;;;;;;10708:10;10688:31;;;;;;;;-1:-1:-1;;10688:52:0;10684:126;;-1:-1:-1;;;;;10757:19:0;;;;;;:11;:19;;;;;;;;10777:10;10757:31;;;;;;;:41;;10792:6;;10757:19;:41;;10792:6;;10757:41;:::i;:::-;;;;-1:-1:-1;;10684:126:0;10829:36;10839:6;10847:9;10858:6;10829:9;:36::i;:::-;10822:43;10567:306;-1:-1:-1;;;;10567:306:0:o;15789:264::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;15931:3:::1;5170:13;5109:2;5170;:13;:::i;:::-;5153:30;::::0;4969:7:::1;5153:30;:::i;:::-;15921:13;;;;:::i;:::-;15909:7:::0;15898;5170:13:::1;5109:2;5170;:13;:::i;:::-;5153:30;::::0;4969:7:::1;5153:30;:::i;:::-;15888:17;;;;:::i;:::-;15887:29;;;;:::i;:::-;:48;;15879:109;;;::::0;-1:-1:-1;;;15879:109:0;;13613:2:1;15879:109:0::1;::::0;::::1;13595:21:1::0;13652:2;13632:18;;;13625:30;13691:34;13671:18;;;13664:62;13762:18;13742;;;13735:46;13798:19;;15879:109:0::1;13411:412:1::0;15879:109:0::1;16038:7:::0;16027;5170:13:::1;5109:2;5170;:13;:::i;:::-;5153:30;::::0;4969:7:::1;5153:30;:::i;:::-;16017:17;;;;:::i;:::-;16016:29;;;;:::i;:::-;15999:14;:46:::0;-1:-1:-1;;15789:264:0:o;23727:447::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;23862:7:::1;:14;23843:8;:15;:33;23835:67;;;::::0;-1:-1:-1;;;23835:67:0;;14030:2:1;23835:67:0::1;::::0;::::1;14012:21:1::0;14069:2;14049:18;;;14042:30;14108:23;14088:18;;;14081:51;14149:18;;23835:67:0::1;13828:345:1::0;23835:67:0::1;23918:8;23913:254;23936:8;:15;23932:1;:19;;;23913:254;;;24017:13;5109:2;24017;:13;:::i;:::-;24006:7;24014:1;24006:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23991:10;9665:7:::0;9692:16;;;;;;;;;;;23981:49:::1;;23973:80;;;::::0;-1:-1:-1;;;23973:80:0;;14512:2:1;23973:80:0::1;::::0;::::1;14494:21:1::0;14551:2;14531:18;;;14524:30;14590:20;14570:18;;;14563:48;14628:18;;23973:80:0::1;14310:342:1::0;23973:80:0::1;24068:87;24085:10;24097:8;24106:1;24097:11;;;;;;;;;;:::i;:::-;;;;;;;5109:2;24121;:13;;;;:::i;:::-;24110:7;24118:1;24110:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24136:5;24143::::0;24150:4:::1;24068:16;:87::i;:::-;-1:-1:-1::0;23953:3:0;::::1;::::0;::::1;:::i;:::-;;;;23913:254;;;;23727:447:::0;;:::o;13575:141::-;13628:7;9692:16;;;;;;5742:42;9692:16;;;;13667:39;;9692:16;13667:39;:::i;:::-;5170:13;5109:2;5170;:13;:::i;:::-;5153:30;;4969:7;5153:30;:::i;:::-;13656:51;;;;:::i;15129:453::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;15237:14:::1;::::0;::::1;;15236:15;15228:45;;;::::0;-1:-1:-1;;;15228:45:0;;15191:2:1;15228:45:0::1;::::0;::::1;15173:21:1::0;15230:2;15210:18;;;15203:30;15269:19;15249:18;;;15242:47;15306:18;;15228:45:0::1;14989:341:1::0;15228:45:0::1;5454:4;15292:6;:21;;;;:65;;;;;5504:4;15334:7;:23;;;;15292:65;:117;;;;;5558:4;15378:11;:31;;;;15292:117;15284:170;;;::::0;-1:-1:-1;;;15284:170:0;;15537:2:1;15284:170:0::1;::::0;::::1;15519:21:1::0;15576:2;15556:18;;;15549:30;15615:25;15595:18;;;15588:53;15658:18;;15284:170:0::1;15335:347:1::0;15284:170:0::1;15465:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;15501:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;15539:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;15129:453::o;12846:140::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;-1:-1:-1;;;;;12938:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;12938:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12846:140::o;16183:189::-;16312:6;;-1:-1:-1;;;;;16312:6:0;16274:7;9692:16;;;;;;;;;;;5605:5;;16302:41;;16322:21;;16302:41;:::i;:::-;16301:62;;;;:::i;17087:217::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;17217:3:::1;17191:22;:29;;17183:64;;;::::0;-1:-1:-1;;;17183:64:0;;15889:2:1;17183:64:0::1;::::0;::::1;15871:21:1::0;15928:2;15908:18;;;15901:30;15967:24;15947:18;;;15940:52;16009:18;;17183:64:0::1;15687:346:1::0;17183:64:0::1;17258:13;:38:::0;17087:217::o;7656:654::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;-1:-1:-1;;;;;7735:22:0;::::1;7727:96;;;::::0;-1:-1:-1;;;7727:96:0;;16240:2:1;7727:96:0::1;::::0;::::1;16222:21:1::0;16279:2;16259:18;;;16252:30;16318:34;16298:18;;;16291:62;16389:31;16369:18;;;16362:59;16438:19;;7727:96:0::1;16038:425:1::0;7727:96:0::1;-1:-1:-1::0;;;;;;;7842:16:0;::::1;::::0;7834:90:::1;;;::::0;-1:-1:-1;;;7834:90:0;;16240:2:1;7834:90:0::1;::::0;::::1;16222:21:1::0;16279:2;16259:18;;;16252:30;16318:34;16298:18;;;16291:62;16389:31;16369:18;;;16362:59;16438:19;;7834:90:0::1;16038:425:1::0;7834:90:0::1;7955:6;::::0;7935:34:::1;::::0;-1:-1:-1;;;;;7955:6:0::1;;7935:19;:34::i;:::-;7980:35;8000:8;8010:4;7980:19;:35::i;:::-;8050:6;::::0;-1:-1:-1;;;;;8050:6:0::1;8060:1;9692:16:::0;;;;;;;;;;;8040:21;8036:127:::1;;8095:6;::::0;-1:-1:-1;;;;;8095:6:0::1;9665:7:::0;9692:16;;;;;;;;;;;8078:73:::1;::::0;8095:6;8103:8;;8113:17:::1;9599:117:::0;8078:73:::1;;8036:127;8202:6;::::0;;-1:-1:-1;;;;;8219:17:0;;::::1;-1:-1:-1::0;;;;;;8219:17:0;::::1;::::0;::::1;::::0;;;8252:40:::1;::::0;8202:6;::::1;::::0;8219:17;8202:6;;8252:40:::1;::::0;8183:16:::1;::::0;8252:40:::1;7716:594;7656:654:::0;:::o;13129:134::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;-1:-1:-1;;;;;13217:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13217:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13129:134::o;12141:557::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;12216:14:::1;::::0;::::1;;12215:15;12207:24;;;::::0;::::1;;12266:4;-1:-1:-1::0;;;;;12250:21:0;::::1;::::0;12242:48:::1;;;::::0;-1:-1:-1;;;12242:48:0;;16670:2:1;12242:48:0::1;::::0;::::1;16652:21:1::0;16709:2;16689:18;;;16682:30;16748:16;16728:18;;;16721:44;16782:18;;12242:48:0::1;16468:338:1::0;12242:48:0::1;12301:11;:31:::0;;-1:-1:-1;;;;;;12301:31:0::1;::::0;-1:-1:-1;;;;;12301:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12347:23:::1;::::0;;-1:-1:-1;;;12347:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;12347:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;12347:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;12347:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;12343:348;;12680:8;::::0;::::1;12343:348;12434:9;:29:::0;;-1:-1:-1;;12434:29:0::1;;-1:-1:-1::0;;;;;12434:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12465:6:::1;:22:::0;;-1:-1:-1;;;;;;12465:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12489:15:0;;;-1:-1:-1;12489:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12489:22:0::1;::::0;;::::1;::::0;;12536:6:::1;::::0;12552:9;;12527:55:::1;::::0;12536:6;::::1;::::0;12552:9;;::::1;;-1:-1:-1::0;;12527:8:0::1;:55::i;:::-;12629:9;::::0;12597:62:::1;::::0;12614:4:::1;::::0;12629:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12629:9:0::1;-1:-1:-1::0;;12597:8:0::1;:62::i;12343:348::-;12141:557:::0;:::o;8318:310::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;8385:14:::1;::::0;::::1;;8377:74;;;::::0;-1:-1:-1;;;8377:74:0;;17403:2:1;8377:74:0::1;::::0;::::1;17385:21:1::0;17442:2;17422:18;;;17415:30;17481:34;17461:18;;;17454:62;17552:17;17532:18;;;17525:45;17587:19;;8377:74:0::1;17201:411:1::0;8377:74:0::1;8482:6;::::0;8462:34:::1;::::0;-1:-1:-1;;;;;8482:6:0::1;;8462:19;:34::i;:::-;8526:6;::::0;;-1:-1:-1;;;;;;8543:19:0;::::1;::::0;;;8578:42:::1;::::0;-1:-1:-1;;;;;8526:6:0;;::::1;::::0;8507:16:::1;::::0;8526:6;;8578:42:::1;::::0;8507:16;;8578:42:::1;8366:262;8318:310::o:0;14939:182::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;15092:14:::1;:21:::0;;-1:-1:-1;;15092:21:0::1;15109:4;15092:21;::::0;;14939:182::o;11569:564::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;11651:7:::1;11646:480;;-1:-1:-1::0;;;;;11675:13:0;;::::1;11691:5;11675:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;11675:21:0::1;::::0;;11711:11:::1;::::0;:34;;-1:-1:-1;;;11711:34:0;;::::1;::::0;::::1;17785:74:1::0;;;;17875:18;;;17868:50;;;;11711:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;17758:18:1;;11711:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;11646:480;11782:17;::::0;:22;11778:135:::1;;11871:6;11851:17;;11833:15;:35;;;;:::i;:::-;:44;11825:72;;;::::0;-1:-1:-1;;;11825:72:0;;18131:2:1;11825:72:0::1;::::0;::::1;18113:21:1::0;18170:2;18150:18;;;18143:30;18209:17;18189:18;;;18182:45;18244:18;;11825:72:0::1;17929:339:1::0;11825:72:0::1;-1:-1:-1::0;;;;;11936:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;11935:14;11927:54;;;::::0;-1:-1:-1;;;11927:54:0;;18475:2:1;11927:54:0::1;::::0;::::1;18457:21:1::0;18514:2;18494:18;;;18487:30;18553:29;18533:18;;;18526:57;18600:18;;11927:54:0::1;18273:351:1::0;11927:54:0::1;-1:-1:-1::0;;;;;11996:13:0;;::::1;;::::0;;;12012:4:::1;11996:13;::::0;;;;;;;;:20;;-1:-1:-1;;11996:20:0::1;::::0;::::1;::::0;;12051:15:::1;12031:17;:35:::0;12081:11:::1;::::0;:33;;-1:-1:-1;;;12081:33:0;;::::1;::::0;::::1;17785:74:1::0;;;;17875:18;;;17868:50;12081:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;17758:18:1;;12081:33:0::1;17617:307:1::0;10384:175:0;7510:6;;10450:4;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;10499:9:::1;::::0;10467:62:::1;::::0;10484:4:::1;::::0;10499:9:::1;::::0;::::1;-1:-1:-1::0;;;;;10499:9:0::1;-1:-1:-1::0;;10467:8:0::1;:62::i;:::-;-1:-1:-1::0;10547:4:0::1;10384:175:::0;:::o;22488:737::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;22550:14:::1;::::0;::::1;;22549:15;22541:52;;;::::0;-1:-1:-1;;;22541:52:0;;18831:2:1;22541:52:0::1;::::0;::::1;18813:21:1::0;18870:2;18850:18;;;18843:30;18909:26;18889:18;;;18882:54;18953:18;;22541:52:0::1;18629:348:1::0;22541:52:0::1;22612:16;::::0;::::1;::::0;::::1;;;22604:53;;;::::0;-1:-1:-1;;;22604:53:0;;19184:2:1;22604:53:0::1;::::0;::::1;19166:21:1::0;19223:2;19203:18;;;19196:30;19262:26;19242:18;;;19235:54;19306:18;;22604:53:0::1;18982:348:1::0;22604:53:0::1;22680:11;::::0;;;::::1;-1:-1:-1::0;;;;;22680:11:0::1;22668:106;;22722:11;:40:::0;;-1:-1:-1;;;;;;22722:40:0::1;22756:4;22722:40:::0;::::1;;::::0;;22668:106:::1;22788:11;::::0;22810:6:::1;::::0;22788:87:::1;::::0;-1:-1:-1;;;22788:87:0;;-1:-1:-1;;;;;22810:6:0;;::::1;22788:87;::::0;::::1;19558:74:1::0;19680:10;22825:12:0::1;19668:23:1::0;19648:18;;;19641:51;19740:18;22847:15:0::1;19728:31:1::0;19708:18;;;19701:59;5109:2:0::1;19776:18:1::0;;;19769:45;22788:11:0;;;::::1;;::::0;:21:::1;::::0;19530:19:1;;22788:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;22901:11:0::1;::::0;22932:6:::1;::::0;-1:-1:-1;;;;;22932:6:0;;::::1;9665:7:::0;9692:16;;;;;;;;;;;;;22901:39;;-1:-1:-1;;;22901:39:0;;::::1;::::0;::::1;391:25:1::0;;;;22901:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;22901:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;22901:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;22901:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;22897:207:::0;::::1;;23012:13;:29:::0;;;;23056:10:::1;:27:::0;22897:207:::1;23114:14;:21:::0;;-1:-1:-1;;23114:21:0;;::::1;23131:4;23114:21;::::0;;;23146:23:::1;:31:::0;;;;::::1;::::0;;23202:15:::1;23188:11;:29:::0;22488:737::o;14807:124::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;14885:11:::1;::::0;:38:::1;::::0;-1:-1:-1;;;14885:38:0;;3869:14:1;;3862:22;14885:38:0::1;::::0;::::1;3844:41:1::0;14885:11:0;;;::::1;-1:-1:-1::0;;;;;14885:11:0::1;::::0;:26:::1;::::0;3817:18:1;;14885:38:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14807:124:::0;:::o;9724:165::-;9802:4;9819:40;9829:10;9841:9;9852:6;9819:9;:40::i;:::-;-1:-1:-1;9877:4:0;;9724:165;-1:-1:-1;;;9724:165:0:o;23423:296::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;23501:16:::1;::::0;::::1;::::0;::::1;;;23497:111;;;23559:4;-1:-1:-1::0;;;;;23542:22:0;::::1;::::0;23534:62:::1;;;::::0;-1:-1:-1;;;23534:62:0;;20277:2:1;23534:62:0::1;::::0;::::1;20259:21:1::0;20316:2;20296:18;;;20289:30;20355:29;20335:18;;;20328:57;20402:18;;23534:62:0::1;20075:351:1::0;23534:62:0::1;23672:6;::::0;23680:30:::1;::::0;-1:-1:-1;;;23680:30:0;;23704:4:::1;23680:30;::::0;::::1;160:74:1::0;23640:5:0;;-1:-1:-1;;;;;23657:14:0;;::::1;::::0;::::1;::::0;23672:6;;;::::1;::::0;23657:14;;23680:15:::1;::::0;133:18:1;;23680:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23657:54;::::0;-1:-1:-1;;;;;;23657:54:0::1;::::0;;;;;;-1:-1:-1;;;;;20812:55:1;;;23657:54:0::1;::::0;::::1;20794:74:1::0;20884:18;;;20877:34;20767:18;;23657:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17312:263::-:0;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;17421:19:::1;:33:::0;;-1:-1:-1;;;;17421:33:0::1;-1:-1:-1::0;;;17421:33:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;17465:22:::1;:47:::0;;-1:-1:-1;;17465:47:0::1;::::0;::::1;;;::::0;;17528:39:::1;::::0;3844:41:1;;;17528:39:0::1;::::0;3832:2:1;3817:18;17528:39:0::1;;;;;;;;17312:263:::0;;:::o;14533:202::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;14689:11:::1;::::0;:38:::1;::::0;-1:-1:-1;;;14689:38:0;;-1:-1:-1;;;;;178:55:1;;;14689:38:0::1;::::0;::::1;160:74:1::0;14689:11:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;133:18:1;;14689:38:0::1;14:226:1::0;10881:680:0;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;10961:16:::1;::::0;::::1;::::0;::::1;;;10960:17;10952:60;;;::::0;-1:-1:-1;;;10952:60:0;;21374:2:1;10952:60:0::1;::::0;::::1;21356:21:1::0;21413:2;21393:18;;;21386:30;21452:32;21432:18;;;21425:60;21502:18;;10952:60:0::1;21172:354:1::0;10952:60:0::1;11023:20;11056:9;11023:43;;11077:16;11107:10;-1:-1:-1::0;;;;;11107:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11096:40:0::1;;11145:4;11152:10;-1:-1:-1::0;;;;;11152:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11096:74;::::0;-1:-1:-1;;;;;;11096:74:0::1;::::0;;;;;;-1:-1:-1;;;;;22040:15:1;;;11096:74:0::1;::::0;::::1;22022:34:1::0;22092:15;;22072:18;;;22065:43;21934:18;;11096:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11189:6;::::0;-1:-1:-1;;;;;11189:6:0;;::::1;11199:5;11181:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;11181:23:0::1;::::0;;11077:93;;-1:-1:-1;11219:22:0;::::1;11215:200;;11278:10;-1:-1:-1::0;;;;;11278:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11267:43:0::1;;11319:4;11326:10;-1:-1:-1::0;;;;;11326:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11267:77;::::0;-1:-1:-1;;;;;;11267:77:0::1;::::0;;;;;;-1:-1:-1;;;;;22040:15:1;;;11267:77:0::1;::::0;::::1;22022:34:1::0;22092:15;;22072:18;;;22065:43;21934:18;;11267:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11258:6;:86:::0;;-1:-1:-1;;;;;;11258:86:0::1;-1:-1:-1::0;;;;;11258:86:0;;;::::1;::::0;;;::::1;::::0;;11215:200:::1;;;11386:6;:17:::0;;-1:-1:-1;;;;;;11386:17:0::1;-1:-1:-1::0;;;;;11386:17:0;::::1;;::::0;;11215:200:::1;11425:9;:22:::0;;-1:-1:-1;;11425:22:0::1;;-1:-1:-1::0;;;;;11425:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;11466:6:::1;::::0;;::::1;-1:-1:-1::0;11458:15:0;;;-1:-1:-1;11458:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;11458:22:0::1;::::0;;::::1;::::0;;11523:9;;11491:62:::1;::::0;11508:4:::1;::::0;11523:9;::::1;;-1:-1:-1::0;;11491:8:0::1;:62::i;15590:191::-:0;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;-1:-1:-1;;;;;15675:23:0;::::1;15667:59;;;::::0;-1:-1:-1;;;15667:59:0;;22321:2:1;15667:59:0::1;::::0;::::1;22303:21:1::0;22360:2;22340:18;;;22333:30;22399:25;22379:18;;;22372:53;22442:18;;15667:59:0::1;22119:347:1::0;15667:59:0::1;15737:15;:36:::0;;-1:-1:-1;;;;;;15737:36:0::1;-1:-1:-1::0;;;;;15737:36:0;;;::::1;::::0;;;::::1;::::0;;15590:191::o;23233:182::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;23300:16:::1;::::0;::::1;::::0;::::1;;;23299:17;23291:58;;;::::0;-1:-1:-1;;;23291:58:0;;22673:2:1;23291:58:0::1;::::0;::::1;22655:21:1::0;22712:2;22692:18;;;22685:30;22751;22731:18;;;22724:58;22799:18;;23291:58:0::1;22471:352:1::0;23291:58:0::1;23368:6;::::0;23360:47:::1;::::0;-1:-1:-1;;;;;23368:6:0;;::::1;::::0;23385:21:::1;23360:47:::0;::::1;;;::::0;23368:6:::1;23360:47:::0;23368:6;23360:47;23385:21;23368:6;23360:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;13788:251:::0;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;13982:11:::1;::::0;:49:::1;::::0;-1:-1:-1;;;13982:49:0;;-1:-1:-1;;;;;17803:55:1;;;13982:49:0::1;::::0;::::1;17785:74:1::0;17902:14;;17895:22;17875:18;;;17868:50;13982:11:0;;;::::1;::::0;;::::1;::::0;:31:::1;::::0;17758:18:1;;13982:49:0::1;17617:307:1::0;16380:699:0;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;16580:16;16560;5170:13:::1;5109:2;5170;:13;:::i;:::-;5153:30;::::0;4969:7:::1;5153:30;:::i;:::-;16550:26;;;;:::i;:::-;16549:47;;;;:::i;:::-;16533:13;:63:::0;16648:13;16631;5170::::1;5109:2;5170;:13;:::i;:::-;5153:30;::::0;4969:7:::1;5153:30;:::i;:::-;16621:23;;;;:::i;:::-;16620:41;;;;:::i;:::-;16607:10;:54:::0;;;16680:13:::1;::::0;:27:::1;;16672:73;;;::::0;-1:-1:-1;;;16672:73:0;;23030:2:1;16672:73:0::1;::::0;::::1;23012:21:1::0;23069:2;23049:18;;;23042:30;23108:34;23088:18;;;23081:62;-1:-1:-1;;;23159:18:1;;;23152:31;23200:19;;16672:73:0::1;22828:397:1::0;16672:73:0::1;16789:6;::::0;-1:-1:-1;;;;;16789:6:0::1;9665:7:::0;9692:16;;;;;;;;;;;5605:5:::1;::::0;16779:23:::1;::::0;16799:3:::1;16779:23;:::i;:::-;16778:44;;;;:::i;:::-;16764:10;;:58;;16756:106;;;::::0;-1:-1:-1;;;16756:106:0;;23432:2:1;16756:106:0::1;::::0;::::1;23414:21:1::0;23471:2;23451:18;;;23444:30;23510:34;23490:18;;;23483:62;-1:-1:-1;;;23561:18:1;;;23554:33;23604:19;;16756:106:0::1;23230:399:1::0;16756:106:0::1;16905:9;5170:13;5109:2;5170;:13;:::i;:::-;5153:30;::::0;4969:7:::1;5153:30;:::i;:::-;16895:19;;;;:::i;:::-;16881:10;;:33;;16873:92;;;::::0;-1:-1:-1;;;16873:92:0;;23836:2:1;16873:92:0::1;::::0;::::1;23818:21:1::0;23875:2;23855:18;;;23848:30;23914:34;23894:18;;;23887:62;-1:-1:-1;;;23965:18:1;;;23958:44;24019:19;;16873:92:0::1;23634:410:1::0;16873:92:0::1;17011:9;5170:13;5109:2;5170;:13;:::i;:::-;5153:30;::::0;4969:7:::1;5153:30;:::i;:::-;17001:19;;;;:::i;:::-;16984:13;;:36;;16976:95;;;::::0;-1:-1:-1;;;16976:95:0;;23836:2:1;16976:95:0::1;::::0;::::1;23818:21:1::0;23875:2;23855:18;;;23848:30;23914:34;23894:18;;;23887:62;-1:-1:-1;;;23965:18:1;;;23958:44;24019:19;;16976:95:0::1;23634:410:1::0;16976:95:0::1;16380:699:::0;;;;:::o;14396:129::-;14483:11;;:34;;-1:-1:-1;;;14483:34:0;;-1:-1:-1;;;;;178:55:1;;;14483:34:0;;;160:74:1;14459:4:0;;14483:11;;;;;:25;;133:18:1;;14483:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13419:148::-;7510:6;;-1:-1:-1;;;;;7510:6:0;7520:10;7510:20;7502:50;;;;-1:-1:-1;;;7502:50:0;;9702:2:1;7502:50:0;;;9684:21:1;9741:2;9721:18;;;9714:30;-1:-1:-1;;;;;;;;;;;9760:18:1;;;9753:47;9817:18;;7502:50:0;9500:341:1;7502:50:0;-1:-1:-1;;;;;13515:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;13515:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13419:148::o;10066:310::-;-1:-1:-1;;;;;10161:20:0;;10153:52;;;;-1:-1:-1;;;10153:52:0;;24251:2:1;10153:52:0;;;24233:21:1;24290:2;24270:18;;;24263:30;-1:-1:-1;;;24309:18:1;;;24302:49;24368:18;;10153:52:0;24049:343:1;10153:52:0;-1:-1:-1;;;;;10224:21:0;;10216:53;;;;-1:-1:-1;;;10216:53:0;;24251:2:1;10216:53:0;;;24233:21:1;24290:2;24270:18;;;24263:30;-1:-1:-1;;;24309:18:1;;;24302:49;24368:18;;10216:53:0;24049:343:1;10216:53:0;-1:-1:-1;;;;;10282:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10335:33;;391:25:1;;;10335:33:0;;364:18:1;10335:33:0;;;;;;;10066:310;;;:::o;18854:2286::-;18933:4;-1:-1:-1;;;;;18958:18:0;;18950:68;;;;-1:-1:-1;;;18950:68:0;;24599:2:1;18950:68:0;;;24581:21:1;24638:2;24618:18;;;24611:30;24677:34;24657:18;;;24650:62;-1:-1:-1;;;24728:18:1;;;24721:35;24773:19;;18950:68:0;24397:401:1;18950:68:0;-1:-1:-1;;;;;19037:16:0;;19029:64;;;;-1:-1:-1;;;19029:64:0;;25005:2:1;19029:64:0;;;24987:21:1;25044:2;25024:18;;;25017:30;25083:34;25063:18;;;25056:62;-1:-1:-1;;;25134:18:1;;;25127:33;25177:19;;19029:64:0;24803:399:1;19029:64:0;19121:1;19112:6;:10;19104:64;;;;-1:-1:-1;;;19104:64:0;;25409:2:1;19104:64:0;;;25391:21:1;25448:2;25428:18;;;25421:30;25487:34;25467:18;;;25460:62;-1:-1:-1;;;25538:18:1;;;25531:39;25587:19;;19104:64:0;25207:405:1;19104:64:0;-1:-1:-1;;;;;19267:13:0;;19179:8;19267:13;;;:7;:13;;;;;;19179:8;;;;19267:13;;19263:162;;;19303:4;19297:10;;19263:162;;;-1:-1:-1;;;;;19329:11:0;;;;;;:7;:11;;;;;;;;19325:100;;;19364:4;19357:11;;19325:100;;;-1:-1:-1;19409:4:0;19325:100;19491:9;:17;19511:4;19491:17;;;;;;:24;:42;;;;-1:-1:-1;19519:14:0;;;;19491:42;19487:182;;;19573:11;;:24;;19587:10;19573:24;:::i;:::-;19554:15;:43;19550:108;;19618:9;:24;;-1:-1:-1;;19618:24:0;;;;;19550:108;19685:20;19696:4;19702:2;19685:10;:20::i;:::-;19681:628;;;19726:14;;;;19722:319;;19766:5;19761:265;;19796:34;;-1:-1:-1;;;19796:34:0;;25819:2:1;19796:34:0;;;25801:21:1;25858:2;25838:18;;;25831:30;25897:26;25877:18;;;25870:54;25941:18;;19796:34:0;25617:348:1;19761:265:0;-1:-1:-1;;;;;19861:31:0;;;;;;:25;:31;;;;;;;;19860:32;:66;;;;-1:-1:-1;;;;;;19897:29:0;;;;;;:25;:29;;;;;;;;19896:30;19860:66;19856:170;;;19951:55;;-1:-1:-1;;;19951:55:0;;26172:2:1;19951:55:0;;;26154:21:1;26211:2;26191:18;;;26184:30;26250:34;26230:18;;;26223:62;-1:-1:-1;;;26301:18:1;;;26294:43;26354:19;;19951:55:0;25970:409:1;19856:170:0;20073:9;;-1:-1:-1;;;;;20059:24:0;;;20073:9;;;;;20059:24;;;;:33;;;20088:4;20087:5;20059:33;20055:243;;;-1:-1:-1;;;;;20118:25:0;;;;;;:21;:25;;;;;;;;20113:170;;20202:14;;20192:6;20176:13;20186:2;-1:-1:-1;;;;;9692:16:0;9665:7;9692:16;;;;;;;;;;;;9599:117;20176:13;:22;;;;:::i;:::-;:40;;20168:95;;;;-1:-1:-1;;;20168:95:0;;26586:2:1;20168:95:0;;;26568:21:1;26625:2;26605:18;;;26598:30;26664:34;26644:18;;;26637:62;-1:-1:-1;;;26715:18:1;;;26708:40;26765:19;;20168:95:0;26384:406:1;20168:95:0;20325:4;20321:742;;;20351:6;;-1:-1:-1;;;20351:6:0;;;;20346:706;;20382:19;;-1:-1:-1;;;20382:19:0;;;;:64;;;;-1:-1:-1;;;;;;20426:20:0;;;;;;:16;:20;;;;;;;;20425:21;20382:64;:111;;;;-1:-1:-1;;;;;;20471:22:0;;;;;;:16;:22;;;;;;;;20470:23;20382:111;20378:659;;;20585:4;20536:28;9692:16;;;;;;;;;;;20642:13;;20618:37;;20614:404;;20702:10;;20743:22;;;;20739:97;;;20800:13;;20790:6;;-1:-1:-1;;;;;20790:6:0;9665:7;9692:16;;;;;;;;;;;5605:5;;20780:33;;;:::i;:::-;20779:54;;;;:::i;:::-;20769:64;;20739:97;20890:7;20866:20;:31;20862:72;;20924:7;20901:30;;20862:72;20960:34;20973:20;20960:12;:34::i;:::-;20657:361;20614:404;20513:524;20378:659;21080:52;21097:4;21103:2;21107:6;21115:3;21120:4;21126:5;21080:16;:52::i;:::-;21073:59;18854:2286;-1:-1:-1;;;;;;;18854:2286:0:o;24182:1055::-;24301:4;24322:20;24333:4;24339:2;24322:10;:20::i;:::-;24318:228;;;24377:11;;:39;;-1:-1:-1;;;24377:39:0;;-1:-1:-1;;;;;27076:15:1;;;24377:39:0;;;27058:34:1;27128:15;;;27108:18;;;27101:43;27160:18;;;27153:34;;;24346:12:0;;24377:11;;;;;:21;;26970:18:1;;24377:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;24377:39:0;;;;;;;;-1:-1:-1;;24377:39:0;;;;;;;;;;;;:::i;:::-;;;24373:122;;24484:8;;;24373:122;24467:5;-1:-1:-1;24513:7:0;24509:26;;24524:8;;;24509:26;24344:202;24318:228;-1:-1:-1;;;;;24590:25:0;;24556:12;24590:25;;;:19;:25;;;;;;24571:4;;24590:25;;;:52;;-1:-1:-1;;;;;;24619:23:0;;;;;;:19;:23;;;;;;;;24590:52;24586:99;;;-1:-1:-1;24668:5:0;24586:99;-1:-1:-1;;;;;24695:13:0;;:7;:13;;;;;;;;;;:23;;24712:6;;24695:7;:23;;24712:6;;24695:23;:::i;:::-;;;;-1:-1:-1;24729:22:0;;-1:-1:-1;24755:7:0;24754:55;;24803:6;24754:55;;;24766:34;24776:4;24782:6;24790:3;24795:4;24766:9;:34::i;:::-;24729:80;;24835:14;24820:7;:11;24828:2;-1:-1:-1;;;;;24820:11:0;-1:-1:-1;;;;;24820:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;24880:2;-1:-1:-1;;;;;24865:34:0;24874:4;-1:-1:-1;;;;;24865:34:0;;24884:14;24865:34;;;;391:25:1;;379:2;364:18;;245:177;24865:34:0;;;;;;;;24915:16;;;;;;;24910:298;;24948:28;24967:4;24973:2;24948:18;:28::i;:::-;24996:16;;;;;;;24995:17;:41;;;;;25016:20;25027:4;25033:2;25016:10;:20::i;:::-;24995:77;;;;-1:-1:-1;;;;;;25041:31:0;;;;;;:25;:31;;;;;;;;25040:32;24995:77;:111;;;;-1:-1:-1;;;;;;25077:29:0;;;;;;:25;:29;;;;;;;;25076:30;24995:111;:121;;;;;25111:5;25110:6;24995:121;24991:206;;;25137:44;;-1:-1:-1;;;25137:44:0;;27400:2:1;25137:44:0;;;27382:21:1;27439:2;27419:18;;;27412:30;27478:34;27458:18;;;27451:62;-1:-1:-1;;;27529:18:1;;;27522:32;27571:19;;25137:44:0;27198:398:1;24991:206:0;-1:-1:-1;25225:4:0;;24182:1055;-1:-1:-1;;;;;;;;24182:1055:0:o;18400:446::-;18501:6;;18469:4;;-1:-1:-1;;;;;18493:14:0;;;18501:6;;18493:14;;;;:43;;-1:-1:-1;18530:6:0;;-1:-1:-1;;;;;18524:12:0;;;18530:6;;18524:12;;18493:43;:79;;;;-1:-1:-1;18566:6:0;;-1:-1:-1;;;;;18566:6:0;18553:9;:19;;18493:79;:118;;;;-1:-1:-1;;;;;;18590:21:0;;;;;;:17;:21;;;;;;;;18589:22;18493:118;:159;;;;-1:-1:-1;;;;;;18629:23:0;;;;;;:17;:23;;;;;;;;18628:24;18493:159;:186;;;;-1:-1:-1;;;;;;18669:10:0;;5742:42;18669:10;;18493:186;:219;;;;-1:-1:-1;;;;;;18696:16:0;;;;18493:219;:257;;;;-1:-1:-1;;;;;;18729:21:0;;18745:4;18729:21;;18493:257;:302;;;;-1:-1:-1;18783:11:0;;-1:-1:-1;;;;;18767:28:0;;;18783:11;;;;;18767:28;;18493:302;:345;;;;-1:-1:-1;18826:11:0;;-1:-1:-1;;;;;18812:26:0;;;18826:11;;;;;18812:26;;18493:345;18486:352;18400:446;-1:-1:-1;;;18400:446:0:o;21148:761::-;6466:6;:13;;-1:-1:-1;;;;6466:13:0;-1:-1:-1;;;6466:13:0;;;21255:4:::1;6466:13:::0;21235:26;;;:11:::1;:26;::::0;;;;;;;21270:9:::1;::::0;6466:13;21270:9;::::1;-1:-1:-1::0;;;;;21270:9:0::1;21235:46:::0;;;;;;;;-1:-1:-1;;21235:67:0::1;21231:166;;21339:4;21319:26;::::0;;;:11:::1;:26;::::0;;;;;;;21354:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;21354:9:0::1;21319:46:::0;;;;;;;-1:-1:-1;;21319:66:0;;21231:166:::1;21441:16;::::0;;21455:1:::1;21441:16:::0;;;;;::::1;::::0;;21417:21:::1;::::0;21441:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21441:16:0::1;21417:40;;21486:4;21468;21473:1;21468:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;21468:23:0::1;;;-1:-1:-1::0;;;;;21468:23:0::1;;;::::0;::::1;21512:9;;;;;;;;;-1:-1:-1::0;;;;;21512:9:0::1;-1:-1:-1::0;;;;;21512:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21502:4;21507:1;21502:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21502:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21545:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;21545:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;21620:20;;21655:1:::1;::::0;21671:4;;21698::::1;::::0;21718:15:::1;::::0;21545:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;21541:246;;21769:7;;;21541:246;21835:15;::::0;:66:::1;::::0;21799:12:::1;::::0;-1:-1:-1;;;;;21835:15:0::1;::::0;21891:5:::1;::::0;21863:21:::1;::::0;21799:12;21835:66;21799:12;21835:66;21863:21;21835:15;21891:5;21835:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6490:1:0::1;-1:-1:-1::0;6502:6:0;:14;;-1:-1:-1;;;;6502:14:0;;;21148:761::o;25245:767::-;25333:7;25353:18;25386:3;25382:205;;;-1:-1:-1;25419:9:0;:16;;;25382:205;;;25457:4;25453:134;;;-1:-1:-1;25491:9:0;:17;;;;;;25453:134;;;-1:-1:-1;25554:9:0;:21;;;;;;25453:134;25601:10;25615:1;25601:15;25597:39;;25627:6;25620:13;;;;;25597:39;25658:11;;;;;-1:-1:-1;;;;;25658:11:0;25682:4;25650:37;:73;;;;;25704:13;25721:2;25704:19;;25650:73;25646:101;;;-1:-1:-1;25740:4:0;25646:101;25757:17;5605:5;25777:19;25786:10;25777:6;:19;:::i;:::-;:38;;;;:::i;:::-;25757:58;-1:-1:-1;25830:13:0;;25826:141;;25876:4;25860:7;:22;;;;;;;;;;:35;;25886:9;;25860:7;:35;;25886:9;;25860:35;:::i;:::-;;;;-1:-1:-1;;25915:40:0;;391:25:1;;;25938:4:0;;-1:-1:-1;;;;;25915:40:0;;;;;379:2:1;364:18;25915:40:0;;;;;;;25826:141;25986:18;25995:9;25986:6;:18;:::i;21917:563::-;22000:16;;;;;;;21999:17;21991:65;;;;-1:-1:-1;;;21991:65:0;;28623:2:1;21991:65:0;;;28605:21:1;28662:2;28642:18;;;28635:30;28701:34;28681:18;;;28674:62;-1:-1:-1;;;28752:18:1;;;28745:33;28795:19;;21991:65:0;28421:399:1;21991:65:0;22072:20;22083:4;22089:2;22072:10;:20::i;:::-;22071:21;:37;;;;-1:-1:-1;22102:6:0;;-1:-1:-1;;;;;22096:12:0;;;22102:6;;22096:12;22071:37;22067:406;;;-1:-1:-1;;;;;22125:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;22125:30:0;;;22151:4;22125:30;;;;;;22170:19;:25;;;;;:32;;;;;;;;;;22217:16;:23;;-1:-1:-1;;22217:23:0;22125:30;22217:23;;;;;22267:11;;;;22255:114;;22313:11;:40;;-1:-1:-1;;;;;;22313:40:0;22347:4;22313:40;;;;;22255:114;22383:19;:26;;-1:-1:-1;;;;22383:26:0;-1:-1:-1;;;22383:26:0;;;22429:32;;-1:-1:-1;3844:41:1;;22429:32:0;;3832:2:1;3817:18;22429:32:0;3704:187:1;427:127;488:10;483:3;479:20;476:1;469:31;519:4;516:1;509:15;543:4;540:1;533:15;559:275;630:2;624:9;695:2;676:13;;-1:-1:-1;;672:27:1;660:40;;730:18;715:34;;751:22;;;712:62;709:88;;;777:18;;:::i;:::-;813:2;806:22;559:275;;-1:-1:-1;559:275:1:o;839:183::-;899:4;932:18;924:6;921:30;918:56;;;954:18;;:::i;:::-;-1:-1:-1;999:1:1;995:14;1011:4;991:25;;839:183::o;1027:154::-;-1:-1:-1;;;;;1106:5:1;1102:54;1095:5;1092:65;1082:93;;1171:1;1168;1161:12;1186:737;1240:5;1293:3;1286:4;1278:6;1274:17;1270:27;1260:55;;1311:1;1308;1301:12;1260:55;1347:6;1334:20;1373:4;1397:60;1413:43;1453:2;1413:43;:::i;:::-;1397:60;:::i;:::-;1491:15;;;1577:1;1573:10;;;;1561:23;;1557:32;;;1522:12;;;;1601:15;;;1598:35;;;1629:1;1626;1619:12;1598:35;1665:2;1657:6;1653:15;1677:217;1693:6;1688:3;1685:15;1677:217;;;1773:3;1760:17;1790:31;1815:5;1790:31;:::i;:::-;1834:18;;1872:12;;;;1710;;1677:217;;;-1:-1:-1;1912:5:1;1186:737;-1:-1:-1;;;;;;1186:737:1:o;1928:118::-;2014:5;2007:13;2000:21;1993:5;1990:32;1980:60;;2036:1;2033;2026:12;2051:477;2141:6;2149;2202:2;2190:9;2181:7;2177:23;2173:32;2170:52;;;2218:1;2215;2208:12;2170:52;2258:9;2245:23;2291:18;2283:6;2280:30;2277:50;;;2323:1;2320;2313:12;2277:50;2346:61;2399:7;2390:6;2379:9;2375:22;2346:61;:::i;:::-;2336:71;;;2457:2;2446:9;2442:18;2429:32;2470:28;2492:5;2470:28;:::i;:::-;2517:5;2507:15;;;2051:477;;;;;:::o;2903:548::-;3015:4;3044:2;3073;3062:9;3055:21;3105:6;3099:13;3148:6;3143:2;3132:9;3128:18;3121:34;3173:1;3183:140;3197:6;3194:1;3191:13;3183:140;;;3292:14;;;3288:23;;3282:30;3258:17;;;3277:2;3254:26;3247:66;3212:10;;3183:140;;;3187:3;3372:1;3367:2;3358:6;3347:9;3343:22;3339:31;3332:42;3442:2;3435;3431:7;3426:2;3418:6;3414:15;3410:29;3399:9;3395:45;3391:54;3383:62;;;;2903:548;;;;:::o;3896:315::-;3964:6;3972;4025:2;4013:9;4004:7;4000:23;3996:32;3993:52;;;4041:1;4038;4031:12;3993:52;4080:9;4067:23;4099:31;4124:5;4099:31;:::i;:::-;4149:5;4201:2;4186:18;;;;4173:32;;-1:-1:-1;;;3896:315:1:o;4216:247::-;4275:6;4328:2;4316:9;4307:7;4303:23;4299:32;4296:52;;;4344:1;4341;4334:12;4296:52;4383:9;4370:23;4402:31;4427:5;4402:31;:::i;4468:388::-;4536:6;4544;4597:2;4585:9;4576:7;4572:23;4568:32;4565:52;;;4613:1;4610;4603:12;4565:52;4652:9;4639:23;4671:31;4696:5;4671:31;:::i;:::-;4721:5;-1:-1:-1;4778:2:1;4763:18;;4750:32;4791:33;4750:32;4791:33;:::i;4861:456::-;4938:6;4946;4954;5007:2;4995:9;4986:7;4982:23;4978:32;4975:52;;;5023:1;5020;5013:12;4975:52;5062:9;5049:23;5081:31;5106:5;5081:31;:::i;:::-;5131:5;-1:-1:-1;5188:2:1;5173:18;;5160:32;5201:33;5160:32;5201:33;:::i;:::-;4861:456;;5253:7;;-1:-1:-1;;;5307:2:1;5292:18;;;;5279:32;;4861:456::o;5322:248::-;5390:6;5398;5451:2;5439:9;5430:7;5426:23;5422:32;5419:52;;;5467:1;5464;5457:12;5419:52;-1:-1:-1;;5490:23:1;;;5560:2;5545:18;;;5532:32;;-1:-1:-1;5322:248:1:o;5575:1138::-;5693:6;5701;5754:2;5742:9;5733:7;5729:23;5725:32;5722:52;;;5770:1;5767;5760:12;5722:52;5810:9;5797:23;5839:18;5880:2;5872:6;5869:14;5866:34;;;5896:1;5893;5886:12;5866:34;5919:61;5972:7;5963:6;5952:9;5948:22;5919:61;:::i;:::-;5909:71;;5999:2;5989:12;;6054:2;6043:9;6039:18;6026:32;6083:2;6073:8;6070:16;6067:36;;;6099:1;6096;6089:12;6067:36;6122:24;;;-1:-1:-1;6177:4:1;6169:13;;6165:27;-1:-1:-1;6155:55:1;;6206:1;6203;6196:12;6155:55;6242:2;6229:16;6265:60;6281:43;6321:2;6281:43;:::i;6265:60::-;6359:15;;;6441:1;6437:10;;;;6429:19;;6425:28;;;6390:12;;;;6465:19;;;6462:39;;;6497:1;6494;6487:12;6462:39;6521:11;;;;6541:142;6557:6;6552:3;6549:15;6541:142;;;6623:17;;6611:30;;6574:12;;;;6661;;;;6541:142;;;6702:5;6692:15;;;;;;;5575:1138;;;;;:::o;6907:159::-;6974:20;;7034:6;7023:18;;7013:29;;7003:57;;7056:1;7053;7046:12;7003:57;6907:159;;;:::o;7071:328::-;7145:6;7153;7161;7214:2;7202:9;7193:7;7189:23;7185:32;7182:52;;;7230:1;7227;7220:12;7182:52;7253:28;7271:9;7253:28;:::i;:::-;7243:38;;7300:37;7333:2;7322:9;7318:18;7300:37;:::i;:::-;7290:47;;7356:37;7389:2;7378:9;7374:18;7356:37;:::i;:::-;7346:47;;7071:328;;;;;:::o;7404:382::-;7469:6;7477;7530:2;7518:9;7509:7;7505:23;7501:32;7498:52;;;7546:1;7543;7536:12;7498:52;7585:9;7572:23;7604:31;7629:5;7604:31;:::i;:::-;7654:5;-1:-1:-1;7711:2:1;7696:18;;7683:32;7724:30;7683:32;7724:30;:::i;7791:180::-;7850:6;7903:2;7891:9;7882:7;7878:23;7874:32;7871:52;;;7919:1;7916;7909:12;7871:52;-1:-1:-1;7942:23:1;;7791:180;-1:-1:-1;7791:180:1:o;8223:241::-;8279:6;8332:2;8320:9;8311:7;8307:23;8303:32;8300:52;;;8348:1;8345;8338:12;8300:52;8387:9;8374:23;8406:28;8428:5;8406:28;:::i;8469:376::-;8531:6;8539;8592:2;8580:9;8571:7;8567:23;8563:32;8560:52;;;8608:1;8605;8598:12;8560:52;8647:9;8634:23;8666:28;8688:5;8666:28;:::i;9110:385::-;9196:6;9204;9212;9220;9273:3;9261:9;9252:7;9248:23;9244:33;9241:53;;;9290:1;9287;9280:12;9241:53;-1:-1:-1;;9313:23:1;;;9383:2;9368:18;;9355:32;;-1:-1:-1;9434:2:1;9419:18;;9406:32;;9485:2;9470:18;9457:32;;-1:-1:-1;9110:385:1;-1:-1:-1;9110:385:1:o;10192:484::-;10245:3;10283:5;10277:12;10310:6;10305:3;10298:19;10336:4;10365:2;10360:3;10356:12;10349:19;;10402:2;10395:5;10391:14;10423:1;10433:218;10447:6;10444:1;10441:13;10433:218;;;10512:13;;-1:-1:-1;;;;;10508:62:1;10496:75;;10591:12;;;;10626:15;;;;10469:1;10462:9;10433:218;;;-1:-1:-1;10667:3:1;;10192:484;-1:-1:-1;;;;;10192:484:1:o;10681:342::-;10882:2;10871:9;10864:21;10845:4;10902:56;10954:2;10943:9;10939:18;10931:6;10902:56;:::i;:::-;10894:64;;11008:6;11001:14;10994:22;10989:2;10978:9;10974:18;10967:50;10681:342;;;;;:::o;11028:127::-;11089:10;11084:3;11080:20;11077:1;11070:31;11120:4;11117:1;11110:15;11144:4;11141:1;11134:15;11160:422;11249:1;11292:5;11249:1;11306:270;11327:7;11317:8;11314:21;11306:270;;;11386:4;11382:1;11378:6;11374:17;11368:4;11365:27;11362:53;;;11395:18;;:::i;:::-;11445:7;11435:8;11431:22;11428:55;;;11465:16;;;;11428:55;11544:22;;;;11504:15;;;;11306:270;;;11310:3;11160:422;;;;;:::o;11587:806::-;11636:5;11666:8;11656:80;;-1:-1:-1;11707:1:1;11721:5;;11656:80;11755:4;11745:76;;-1:-1:-1;11792:1:1;11806:5;;11745:76;11837:4;11855:1;11850:59;;;;11923:1;11918:130;;;;11830:218;;11850:59;11880:1;11871:10;;11894:5;;;11918:130;11955:3;11945:8;11942:17;11939:43;;;11962:18;;:::i;:::-;-1:-1:-1;;12018:1:1;12004:16;;12033:5;;11830:218;;12132:2;12122:8;12119:16;12113:3;12107:4;12104:13;12100:36;12094:2;12084:8;12081:16;12076:2;12070:4;12067:12;12063:35;12060:77;12057:159;;;-1:-1:-1;12169:19:1;;;12201:5;;12057:159;12248:34;12273:8;12267:4;12248:34;:::i;:::-;12318:6;12314:1;12310:6;12306:19;12297:7;12294:32;12291:58;;;12329:18;;:::i;:::-;12367:20;;11587:806;-1:-1:-1;;;11587:806:1:o;12398:140::-;12456:5;12485:47;12526:4;12516:8;12512:19;12506:4;12485:47;:::i;12543:217::-;12583:1;12609;12599:132;;12653:10;12648:3;12644:20;12641:1;12634:31;12688:4;12685:1;12678:15;12716:4;12713:1;12706:15;12599:132;-1:-1:-1;12745:9:1;;12543:217::o;13105:168::-;13178:9;;;13209;;13226:15;;;13220:22;;13206:37;13196:71;;13247:18;;:::i;13278:128::-;13345:9;;;13366:11;;;13363:37;;;13380:18;;:::i;14178:127::-;14239:10;14234:3;14230:20;14227:1;14220:31;14270:4;14267:1;14260:15;14294:4;14291:1;14284:15;14657:197;14695:3;14723:6;14764:2;14757:5;14753:14;14791:2;14782:7;14779:15;14776:41;;14797:18;;:::i;:::-;14846:1;14833:15;;14657:197;-1:-1:-1;;;14657:197:1:o;14859:125::-;14924:9;;;14945:10;;;14942:36;;;14958:18;;:::i;16811:385::-;16890:6;16898;16951:2;16939:9;16930:7;16926:23;16922:32;16919:52;;;16967:1;16964;16957:12;16919:52;16999:9;16993:16;17018:31;17043:5;17018:31;:::i;:::-;17118:2;17103:18;;17097:25;17068:5;;-1:-1:-1;17131:33:1;17097:25;17131:33;:::i;19825:245::-;19904:6;19912;19965:2;19953:9;19944:7;19940:23;19936:32;19933:52;;;19981:1;19978;19971:12;19933:52;-1:-1:-1;;20004:16:1;;20060:2;20045:18;;;20039:25;20004:16;;20039:25;;-1:-1:-1;19825:245:1:o;20431:184::-;20501:6;20554:2;20542:9;20533:7;20529:23;20525:32;20522:52;;;20570:1;20567;20560:12;20522:52;-1:-1:-1;20593:16:1;;20431:184;-1:-1:-1;20431:184:1:o;20922:245::-;20989:6;21042:2;21030:9;21021:7;21017:23;21013:32;21010:52;;;21058:1;21055;21048:12;21010:52;21090:9;21084:16;21109:28;21131:5;21109:28;:::i;21531:251::-;21601:6;21654:2;21642:9;21633:7;21629:23;21625:32;21622:52;;;21670:1;21667;21660:12;21622:52;21702:9;21696:16;21721:31;21746:5;21721:31;:::i;27601:605::-;27900:6;27889:9;27882:25;27943:6;27938:2;27927:9;27923:18;27916:34;27986:3;27981:2;27970:9;27966:18;27959:31;27863:4;28007:57;28059:3;28048:9;28044:19;28036:6;28007:57;:::i;:::-;-1:-1:-1;;;;;28100:55:1;;;;28095:2;28080:18;;28073:83;-1:-1:-1;28187:3:1;28172:19;28165:35;27999:65;27601:605;-1:-1:-1;;;27601:605:1:o

Swarm Source

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