ETH Price: $2,939.85 (-5.79%)
Gas: 7 Gwei

Token

ASTROCAT (ASTROCAT)
 

Overview

Max Total Supply

100,000,000,000 ASTROCAT

Holders

59

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
468,438,184.179269219 ASTROCAT

Value
$0.00
0xe7d3a376404a49a40a6b2921f12265e9fb0b1238
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:
ASTROCAT

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-28
*/

// WEBSITE : https://www.astrocat.live/
// TELEGRAM : https://t.me/AstroCatErc20
// TWITTER : https://twitter.com/AstroCatERC20

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

abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
  /**
   * @dev Returns the amount of tokens in existence.
   */
  function totalSupply() external view returns (uint256);

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external view returns (uint8);

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external view returns (string memory);

  /**
  * @dev Returns the token name.
  */
  function name() external view returns (string memory);

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

  /**
   * @dev Returns the amount of tokens owned by `account`.
   */
  function balanceOf(address account) external view returns (uint256);

  /**
   * @dev Moves `amount` tokens from the caller's account to `recipient`.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transfer(address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Returns the remaining number of tokens that `spender` will be
   * allowed to spend on behalf of `owner` through {transferFrom}. This is
   * zero by default.
   *
   * This value changes when {approve} or {transferFrom} are called.
   */
  function allowance(address _owner, address spender) external view returns (uint256);

  /**
   * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * IMPORTANT: Beware that changing an allowance with this method brings the risk
   * that someone may use both the old and the new allowance by unfortunate
   * transaction ordering. One possible solution to mitigate this race
   * condition is to first reduce the spender's allowance to 0 and set the
   * desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * Emits an {Approval} event.
   */
  function approve(address spender, uint256 amount) external returns (bool);

  /**
   * @dev Moves `amount` tokens from `sender` to `recipient` using the
   * allowance mechanism. `amount` is then deducted from the caller's
   * allowance.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Emitted when `value` tokens are moved from one account (`from`) to
   * another (`to`).
   *
   * Note that `value` may be zero.
   */
  event Transfer(address indexed from, address indexed to, uint256 value);

  /**
   * @dev Emitted when the allowance of a `spender` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IUniswapV2Factory {
    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 IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    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);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract ASTROCAT is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isSniperOrBlacklisted;
    mapping (address => bool) private _liquidityHolders;

    uint256 private startingSupply = 100_000_000_000;

    string private _name = "ASTROCAT";
    string private _symbol = "ASTROCAT";

    uint256 public _buyFee = 1200;
    uint256 public _sellFee = 1700;
    uint256 public _transferFee = 2000;

    uint256 constant public maxBuyTaxes = 2000;
    uint256 constant public maxSellTaxes = 2000;
    uint256 constant public maxTransferTaxes = 2000;

    uint256 public _liquidityRatio = 325;
    uint256 public _marketingRatio = 500;
    uint256 public _devRatio = 375;

    uint256 private constant masterTaxDivisor = 10000;

    uint256 private constant MAX = ~uint256(0);
    uint8 constant private _decimals = 9;
    uint256 constant private _decimalsMul = _decimals;
    uint256 private _tTotal = startingSupply * 10**_decimalsMul;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    // UNI ROUTER
    address private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable private _marketingWallet = payable(0x26A19F2e785dAa0375407ddf5Dd21A7aA3099433);
    address payable private _teamWallet = payable(0xceC4AE975591Fff4E2a42411f5d94c7e86Dd4A4c);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent = 2;
    uint256 private maxTxDivisor = 100;
    uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
    uint256 public maxTxAmountUI = (startingSupply * maxTxPercent) / maxTxDivisor;

    uint256 private maxWalletPercent = 3;
    uint256 private maxWalletDivisor = 100;
    uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
    uint256 public maxWalletSizeUI = (startingSupply * maxWalletPercent) / maxWalletDivisor;

    uint256 private swapThreshold = (_tTotal * 5) / 10000;
    uint256 private swapAmount = (_tTotal * 5) / 1000;

    bool private sniperProtection = true;
    bool public _hasLiqBeenAdded = false;
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0;
    uint256 private snipeBlockAmt = 0;
    uint256 public snipersCaught = 0;
    bool private sameBlockActive = true;
    mapping (address => uint256) private lastTrade;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;

        // Set the owner.
        _owner = msg.sender;

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

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

        // Approve the owner for PancakeSwap, timesaver.
        _approve(_msgSender(), _routerAddress, _tTotal);

        // Ever-growing sniper/tool blacklist


        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    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 (_marketingWallet == payable(_owner))
            _marketingWallet = payable(newOwner);
        
        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

    function renounceOwnership() public virtual onlyOwner() {
        setExcludedFromFees(_owner, false);
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view 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(_msgSender(), recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

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

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 1 weeks, "One week cooldown.");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

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

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

    function isSniperOrBlacklisted(address account) public view returns (bool) {
        return _isSniperOrBlacklisted[account];
    }

    function isProtected(uint256 rInitializer) external onlyOwner {
        require (_liqAddStatus == 0, "Error.");
        _liqAddStatus = rInitializer;
        snipeBlockAmt = 4;
    }

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

    function setProtectionSettings(bool antiSnipe, bool antiBlock) external onlyOwner() {
        sniperProtection = antiSnipe;
        sameBlockActive = antiBlock;
    }

    function setTaxes(uint256 buyFee, uint256 sellFee, uint256 transferFee) external onlyOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _buyFee = buyFee;
        _sellFee = sellFee;
        _transferFee = transferFee;
    }

    function setRatios(uint256 liquidity, uint256 marketing, uint256 dev) external onlyOwner {
        require (liquidity + marketing + dev == 1200, "Must add up to 1200");
        _liquidityRatio = liquidity;
        _marketingRatio = marketing;
        _devRatio = dev;
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply.");
        _maxTxAmount = check;
        maxTxAmountUI = (startingSupply * percent) / divisor;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply.");
        _maxWalletSize = check;
        maxWalletSizeUI = (startingSupply * percent) / divisor;
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setWallets(address payable marketingWallet, address payable teamWallet) external onlyOwner {
        _marketingWallet = payable(marketingWallet);
        _teamWallet = payable(teamWallet);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        if(_hasLimits(from, to)) {
            if (sameBlockActive) {
                if (lpPairs[from]){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                } else {
                    require(lastTrade[from] != block.number);
                    lastTrade[from] = block.number;
                }
            }
            if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
            }
            if(to != _routerAddress && !lpPairs[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (_liquidityRatio + _marketingRatio + _devRatio == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * _liquidityRatio) / (_liquidityRatio + _marketingRatio + _devRatio)) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;
        swapTokensForEth(toSwapForEth);

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * _liquidityRatio) / (_liquidityRatio + _marketingRatio + _devRatio)) / 2;

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {
            _marketingWallet.transfer(((currentBalance - liquidityBalance) * _marketingRatio) / (_marketingRatio + _devRatio));
            _teamWallet.transfer(address(this).balance);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            DEAD,
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            if (snipeBlockAmt != 4) {
                _liqAddBlock = block.number + 5000;
            } else {
                _liqAddBlock = block.number;
            }

            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (sniperProtection){
            if (isSniperOrBlacklisted(from) || isSniperOrBlacklisted(to)) {
                revert("Sniper rejected.");
            }

            if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(from, to);
                if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                    revert("Only owner can transfer at this time.");
                }
            } else {
                if (_liqAddBlock > 0 
                    && lpPairs[from] 
                    && _hasLimits(from, to)
                ) {
                    if (block.number - _liqAddBlock < snipeBlockAmt) {
                        _isSniperOrBlacklisted[to] = true;
                        snipersCaught ++;
                        emit SniperCaught(to);
                    }
                }
            }
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount;
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (from == lpPair) {
            currentFee = _buyFee;
        } else if (to == lpPair) {
            currentFee = _sellFee;
        } else {
            currentFee = _transferFee;
        }

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != 69) {
                revert();
            }
        }

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;

        _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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rInitializer","type":"uint256"}],"name":"isProtected","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniperOrBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSizeUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"antiSnipe","type":"bool"},{"internalType":"bool","name":"antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","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":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWallet","type":"address"},{"internalType":"address payable","name":"teamWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"}]

600060035564174876e800600890815560c06040526080819052671054d51493d0d05560c21b60a0908152620000399160099190620006a8565b50604080518082019091526008808252671054d51493d0d05560c21b60209092019182526200006b91600a91620006a8565b506104b0600b556106a4600c556107d0600d55610145600e556101f4600f556101776010556200009e6009600a620007ec565b600854620000ad9190620008aa565b6011819055601580546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d17909155601680549091167326a19f2e785daa0375407ddf5dd21a7aa309943317905560178054600161ff0160a01b03191673cec4ae975591fff4e2a42411f5d94c7e86dd4a4c1790556002601881905560646019819055916200013c9190620008aa565b62000148919062000780565b601a55601954601854600854620001609190620008aa565b6200016c919062000780565b601b556003601c556064601d55601d54601c546011546200018e9190620008aa565b6200019a919062000780565b601e55601d54601c54600854620001b29190620008aa565b620001be919062000780565b601f556127106011546005620001d59190620008aa565b620001e1919062000780565b6020556103e86011546005620001f89190620008aa565b62000204919062000780565b6021556022805461ffff1916600190811790915560006023819055602481905560258190556026819055602781905560288190556029805460ff1916831790556011549190620002513390565b6001600160a01b03908116825260208083019390935260409182016000908120949094558354336001600160a01b0319918216179094556015546013805491909216941684179055805163c45a015560e01b8152905163c45a015592600480840193919291829003018186803b158015620002cb57600080fd5b505afa158015620002e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030691906200074e565b6001600160a01b031663c9c65396601360009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036357600080fd5b505afa15801562000378573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039e91906200074e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015620003e657600080fd5b505af1158015620003fb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042191906200074e565b601480546001600160a01b0319166001600160a01b039283169081179091556000908152600260209081526040808320805460ff191660019081179091553084526004835281842060135490951684529390915281206000199055600590620004926000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252812080548316600190811790915561dead82527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805490931681179092556007906200051a6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055620005666200054e3390565b6015546011546001600160a01b0390911690620005a7565b60115460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36200091f565b6001600160a01b038316620005f95760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620006475760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620005f0565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b828054620006b690620008cc565b90600052602060002090601f016020900481019282620006da576000855562000725565b82601f10620006f557805160ff191683800117855562000725565b8280016001018555821562000725579182015b828111156200072557825182559160200191906001019062000708565b506200073392915062000737565b5090565b5b8082111562000733576000815560010162000738565b6000602082840312156200076157600080fd5b81516001600160a01b03811681146200077957600080fd5b9392505050565b6000826200079e57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620007e4578160001904821115620007c857620007c862000909565b80851615620007d657918102915b93841c9390800290620007a8565b509250929050565b60006200077983836000826200080557506001620008a4565b816200081457506000620008a4565b81600181146200082d5760028114620008385762000858565b6001915050620008a4565b60ff8411156200084c576200084c62000909565b50506001821b620008a4565b5060208310610133831016604e8410600b84101617156200087d575081810a620008a4565b620008898383620007a3565b8060001904821115620008a057620008a062000909565b0290505b92915050565b6000816000190483118215151615620008c757620008c762000909565b500290565b600181811c90821680620008e157607f821691505b602082108114156200090357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b612d29806200092f6000396000f3fe6080604052600436106103175760003560e01c8063640384091161019a578063b1b08f71116100e1578063e79d41601161008a578063eec2744e11610064578063eec2744e14610881578063f6540ec7146108a1578063fb78680d146108b757600080fd5b8063e79d41601461082b578063e9dae5ed14610841578063eafb5a3c1461086157600080fd5b8063cdfdb7dc116100bb578063cdfdb7dc146107a5578063d3f6a157146107c5578063dd62ed3e146107e557600080fd5b8063b1b08f7114610449578063b3d514fb14610449578063c49b9a801461078557600080fd5b806389fd9bc111610143578063a457c2d71161011d578063a457c2d71461072f578063a8edc7971461074f578063a9059cbb1461076557600080fd5b806389fd9bc1146106e15780638da5cb5b146106c357806395d89b411461071a57600080fd5b806380c581d11161017457806380c581d11461068357806381c6f11b146106a3578063893d20e8146106c357600080fd5b8063640384091461062257806370a0823114610638578063715018a61461066e57600080fd5b80633df9a8d21161025e5780634fb2e45d11610207578063571ac8b0116101e1578063571ac8b0146105cc578063590f897e146105ec578063590ffdce1461060257600080fd5b80634fb2e45d146105545780634fbee1931461057457806350a8e016146105ad57600080fd5b8063452ed4f111610238578063452ed4f1146104fd5780634a74bb021461051d5780634ef3cce51461053e57600080fd5b80633df9a8d2146104b15780633f3cf56c146104c757806340b9a54b146104e757600080fd5b806323b872dd116102c0578063313ce5671161029a578063313ce5671461045f578063384f6b511461047b578063395093511461049157600080fd5b806323b872dd1461040957806326003957146104295780632b28fc7a1461044957600080fd5b80630758d924116102f15780630758d9241461039a578063095ea7b3146103ba57806318160ddd146103ea57600080fd5b806303fd2a4514610323578063044df7261461035657806306fdde031461037857600080fd5b3661031e57005b600080fd5b34801561032f57600080fd5b5061033961dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561036257600080fd5b50610376610371366004612a40565b6108d7565b005b34801561038457600080fd5b5061038d61094a565b60405161034d9190612b23565b3480156103a657600080fd5b50601354610339906001600160a01b031681565b3480156103c657600080fd5b506103da6103d53660046129f9565b6109dc565b604051901515815260200161034d565b3480156103f657600080fd5b506011545b60405190815260200161034d565b34801561041557600080fd5b506103da610424366004612983565b6109f2565b34801561043557600080fd5b50610376610444366004612a75565b610a6a565b34801561045557600080fd5b506103fb6107d081565b34801561046b57600080fd5b506040516009815260200161034d565b34801561048757600080fd5b506103fb600e5481565b34801561049d57600080fd5b506103da6104ac3660046129f9565b610b67565b3480156104bd57600080fd5b506103fb600d5481565b3480156104d357600080fd5b506103766104e2366004612a75565b610ba3565b3480156104f357600080fd5b506103fb600b5481565b34801561050957600080fd5b50601454610339906001600160a01b031681565b34801561052957600080fd5b506017546103da90600160a81b900460ff1681565b34801561054a57600080fd5b506103fb600f5481565b34801561056057600080fd5b5061037661056f366004612910565b610ca0565b34801561058057600080fd5b506103da61058f366004612910565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105b957600080fd5b506022546103da90610100900460ff1681565b3480156105d857600080fd5b506103da6105e7366004612910565b610ef8565b3480156105f857600080fd5b506103fb600c5481565b34801561060e57600080fd5b5061037661061d3660046129c4565b610f0c565b34801561062e57600080fd5b506103fb601b5481565b34801561064457600080fd5b506103fb610653366004612910565b6001600160a01b031660009081526001602052604090205490565b34801561067a57600080fd5b50610376610f85565b34801561068f57600080fd5b5061037661069e3660046129c4565b611028565b3480156106af57600080fd5b506103766106be366004612a5c565b611130565b3480156106cf57600080fd5b506000546001600160a01b0316610339565b3480156106ed57600080fd5b506103da6106fc366004612910565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561072657600080fd5b5061038d6111d8565b34801561073b57600080fd5b506103da61074a3660046129f9565b6111e7565b34801561075b57600080fd5b506103fb60105481565b34801561077157600080fd5b506103da6107803660046129f9565b61121e565b34801561079157600080fd5b506103766107a0366004612a25565b611235565b3480156107b157600080fd5b506103766107c0366004612a97565b6112db565b3480156107d157600080fd5b506103766107e036600461294a565b61139c565b3480156107f157600080fd5b506103fb61080036600461294a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561083757600080fd5b506103fb60285481565b34801561084d57600080fd5b5061037661085c366004612a97565b611418565b34801561086d57600080fd5b5061037661087c366004612910565b6114e2565b34801561088d57600080fd5b5061037661089c3660046129c4565b6118bc565b3480156108ad57600080fd5b506103fb601f5481565b3480156108c357600080fd5b506103766108d2366004612af1565b611935565b6000546001600160a01b0316331461092a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6022805492151560ff199384161790556029805491151591909216179055565b60606009805461095990612c59565b80601f016020809104026020016040519081016040528092919081815260200182805461098590612c59565b80156109d25780601f106109a7576101008083540402835291602001916109d2565b820191906000526020600020905b8154815290600101906020018083116109b557829003601f168201915b5050505050905090565b60006109e93384846119c2565b50600192915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610a57576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610a51908490612c42565b90915550505b610a62848484611acf565b949350505050565b6000546001600160a01b03163314610ab85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b60008183601154610ac99190612c23565b610ad39190612c01565b90506103e8601154610ae59190612c01565b811015610b405760405162461bcd60e51b815260206004820152602360248201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604482015262363c9760e91b6064820152608401610921565b601e8190556008548290610b55908590612c23565b610b5f9190612c01565b601f55505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109e9918590610b9e908690612be9565b6119c2565b6000546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b60008183601154610c029190612c23565b610c0c9190612c01565b90506103e8601154610c1e9190612c01565b811015610c795760405162461bcd60e51b815260206004820152602360248201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604482015262363c9760e91b6064820152608401610921565b601a8190556008548290610c8e908590612c23565b610c989190612c01565b601b55505050565b6000546001600160a01b03163314610cee5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b6001600160a01b038116610d6a5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610921565b6001600160a01b03811661dead1415610deb5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610921565b60008054610e04916001600160a01b0390911690610f0c565b610e0f816001610f0c565b6000546016546001600160a01b0390811691161415610e4457601680546001600160a01b0319166001600160a01b0383161790555b600080546001600160a01b03908116825260016020818152604080852054600483528186208786168752835281862055845490931684525290205415610ead57600080546001600160a01b03168082526001602052604090912054610eab91908390611acf565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610f06826000196109dc565b92915050565b6000546001600160a01b03163314610f5a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610fd35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b60008054610fec916001600160a01b0390911690610f0c565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146110765760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b8061109d57506001600160a01b03166000908152600260205260409020805460ff19169055565b600354156111045762093a80600354426110b79190612c42565b116111045760405162461bcd60e51b815260206004820152601260248201527f4f6e65207765656b20636f6f6c646f776e2e00000000000000000000000000006044820152606401610921565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b0316331461117e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b602354156111ce5760405162461bcd60e51b815260206004820152600660248201527f4572726f722e00000000000000000000000000000000000000000000000000006044820152606401610921565b6023556004602755565b6060600a805461095990612c59565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109e9918590610b9e908690612c42565b600061122b338484611acf565b5060019392505050565b6000546001600160a01b031633146112835760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b60178054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906112d090831515815260200190565b60405180910390a150565b6000546001600160a01b031633146113295760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b806113348385612be9565b61133e9190612be9565b6104b01461138e5760405162461bcd60e51b815260206004820152601360248201527f4d7573742061646420757020746f2031323030000000000000000000000000006044820152606401610921565b600e92909255600f55601055565b6000546001600160a01b031633146113ea5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b601680546001600160a01b039384166001600160a01b03199182161790915560178054929093169116179055565b6000546001600160a01b031633146114665760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b6107d0831115801561147a57506107d08211155b801561148857506107d08111155b6114d45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610921565b600b92909255600c55600d55565b6000546001600160a01b031633146115305760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561157057600080fd5b505afa158015611584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a8919061292d565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156115f057600080fd5b505afa158015611604573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611628919061292d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561168657600080fd5b505afa15801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be919061292d565b90506001600160a01b03811661187c57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561170757600080fd5b505afa15801561171b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173f919061292d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561178757600080fd5b505afa15801561179b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bf919061292d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561181f57600080fd5b505af1158015611833573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611857919061292d565b601480546001600160a01b0319166001600160a01b0392909216919091179055611898565b601480546001600160a01b0319166001600160a01b0383161790555b50601380546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b0316331461190a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119835760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b82846011546119929190612c23565b61199c9190612c01565b60205560115481906119af908490612c23565b6119b99190612c01565b60215550505050565b6001600160a01b038316611a185760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610921565b6001600160a01b038216611a6e5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610921565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611b275760405162461bcd60e51b815260206004820152601460248201527f45524332303a205a65726f20616464726573732e0000000000000000000000006044820152606401610921565b6001600160a01b038316611b7d5760405162461bcd60e51b815260206004820152601460248201527f45524332303a205a65726f20616464726573732e0000000000000000000000006044820152606401610921565b60008211611bcd5760405162461bcd60e51b815260206004820152600860248201527f4d757374203e302e0000000000000000000000000000000000000000000000006044820152606401610921565b611bd78484611eb8565b15611ddb5760295460ff1615611c8e576001600160a01b03841660009081526002602052604090205460ff1615611c4d576001600160a01b0383166000908152602a6020526040902054431415611c2d57600080fd5b6001600160a01b0383166000908152602a60205260409020439055611c8e565b6001600160a01b0384166000908152602a6020526040902054431415611c7257600080fd5b6001600160a01b0384166000908152602a602052604090204390555b6001600160a01b03841660009081526002602052604090205460ff1680611ccd57506001600160a01b03831660009081526002602052604090205460ff165b15611d2457601a54821115611d245760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e00000000000000006044820152606401610921565b6015546001600160a01b03848116911614801590611d5b57506001600160a01b03831660009081526002602052604090205460ff16155b15611ddb57601e5482611d83856001600160a01b031660009081526001602052604090205490565b611d8d9190612be9565b1115611ddb5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610921565b6001600160a01b03841660009081526005602052604090205460019060ff1680611e1d57506001600160a01b03841660009081526005602052604090205460ff165b15611e26575060005b6001600160a01b03841660009081526002602052604090205460ff1615611ea357601754600160a01b900460ff16158015611e6a5750601754600160a81b900460ff165b15611ea3573060009081526001602052604081205490506020548110611ea1576021548110611e9857506021545b611ea181611f76565b505b611eaf85858584612173565b95945050505050565b600080546001600160a01b03848116911614801590611ee557506000546001600160a01b03838116911614155b8015611f0a57506001600160a01b03821660009081526007602052604090205460ff16155b8015611f2f57506001600160a01b03831660009081526007602052604090205460ff16155b8015611f4657506001600160a01b03821661dead14155b8015611f5a57506001600160a01b03821615155b8015611f6f57506001600160a01b0383163014155b9392505050565b6017805460ff60a01b1916600160a01b179055601054600f54600e54611f9c9190612be9565b611fa69190612be9565b611faf57612163565b60006002601054600f54600e54611fc69190612be9565b611fd09190612be9565b600e54611fdd9085612c23565b611fe79190612c01565b611ff19190612c01565b90506000611fff8284612c42565b905061200a81612457565b600047905060006002601054600f54600e546120269190612be9565b6120309190612be9565b600e5461203d9085612c23565b6120479190612c01565b6120519190612c01565b905083156120a55761206384826125d9565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b60006120b18587612c42565b111561215e57601654601054600f546001600160a01b03909216916108fc916120d991612be9565b600f546120e68587612c42565b6120f09190612c23565b6120fa9190612c01565b6040518115909202916000818181858888f19350505050158015612122573d6000803e3d6000fd5b506017546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561215c573d6000803e3d6000fd5b505b505050505b506017805460ff60a01b19169055565b60225460009060ff1615612384576001600160a01b03851660009081526006602052604090205460ff16806121c057506001600160a01b03841660009081526006602052604090205460ff165b1561220d5760405162461bcd60e51b815260206004820152601060248201527f536e697065722072656a65637465642e000000000000000000000000000000006044820152606401610921565b602254610100900460ff166122bb57612226858561269b565b602254610100900460ff1615801561224357506122438585611eb8565b156122b65760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610921565b612384565b60006024541180156122e557506001600160a01b03851660009081526002602052604090205460ff165b80156122f657506122f68585611eb8565b156123845760275460245461230b9043612c42565b1015612384576001600160a01b0384166000908152600660205260408120805460ff19166001179055602880549161234283612c94565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b038516600090815260016020526040812080548592906123ac908490612c42565b9091555060009050826123bf57836123ca565b6123ca8686866127f2565b6001600160a01b0386166000908152600160205260408120805492935083929091906123f7908490612be9565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161244391815260200190565b60405180910390a350600195945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061248c5761248c612cc5565b6001600160a01b03928316602091820292909201810191909152601354604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b1580156124f957600080fd5b505afa15801561250d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612531919061292d565b8160018151811061254457612544612cc5565b6001600160a01b0392831660209182029290920101526013546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906125a3908590600090869030904290600401612b78565b600060405180830381600087803b1580156125bd57600080fd5b505af11580156125d1573d6000803e3d6000fd5b505050505050565b6013546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561265b57600080fd5b505af115801561266f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126949190612ac3565b5050505050565b602254610100900460ff16156127195760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610921565b6127238282611eb8565b15801561273d57506014546001600160a01b038281169116145b1561112c576027546004146127605761275843611388612be9565b602455612765565b436024555b6001600160a01b03821660009081526007602052604090819020805460ff191660019081179091556022805461ff001916610100179055426025556017805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159916127e691901515815260200190565b60405180910390a15050565b60145460009081906001600160a01b03868116911614156128165750600b5461283a565b6014546001600160a01b03858116911614156128355750600c5461283a565b50600d545b6128448585611eb8565b1561286557602354158061285b5750602354604514155b1561286557600080fd5b60006127106128748386612c23565b61287e9190612c01565b306000908152600160205260408120805492935083929091906128a2908490612be9565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36128f18185612c42565b9695505050505050565b8035801515811461290b57600080fd5b919050565b60006020828403121561292257600080fd5b8135611f6f81612cdb565b60006020828403121561293f57600080fd5b8151611f6f81612cdb565b6000806040838503121561295d57600080fd5b823561296881612cdb565b9150602083013561297881612cdb565b809150509250929050565b60008060006060848603121561299857600080fd5b83356129a381612cdb565b925060208401356129b381612cdb565b929592945050506040919091013590565b600080604083850312156129d757600080fd5b82356129e281612cdb565b91506129f0602084016128fb565b90509250929050565b60008060408385031215612a0c57600080fd5b8235612a1781612cdb565b946020939093013593505050565b600060208284031215612a3757600080fd5b611f6f826128fb565b60008060408385031215612a5357600080fd5b6129e2836128fb565b600060208284031215612a6e57600080fd5b5035919050565b60008060408385031215612a8857600080fd5b50508035926020909101359150565b600080600060608486031215612aac57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612ad857600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612b0757600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b81811015612b5057858101830151858201604001528201612b34565b81811115612b62576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612bc85784516001600160a01b031683529383019391830191600101612ba3565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612bfc57612bfc612caf565b500190565b600082612c1e57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612c3d57612c3d612caf565b500290565b600082821015612c5457612c54612caf565b500390565b600181811c90821680612c6d57607f821691505b60208210811415612c8e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612ca857612ca8612caf565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612cf057600080fd5b5056fea264697066735822122083af6bd047c4694a76b2787838f23c4abad0773cd59f6f5eb55c3b8fd9c28c9f64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103175760003560e01c8063640384091161019a578063b1b08f71116100e1578063e79d41601161008a578063eec2744e11610064578063eec2744e14610881578063f6540ec7146108a1578063fb78680d146108b757600080fd5b8063e79d41601461082b578063e9dae5ed14610841578063eafb5a3c1461086157600080fd5b8063cdfdb7dc116100bb578063cdfdb7dc146107a5578063d3f6a157146107c5578063dd62ed3e146107e557600080fd5b8063b1b08f7114610449578063b3d514fb14610449578063c49b9a801461078557600080fd5b806389fd9bc111610143578063a457c2d71161011d578063a457c2d71461072f578063a8edc7971461074f578063a9059cbb1461076557600080fd5b806389fd9bc1146106e15780638da5cb5b146106c357806395d89b411461071a57600080fd5b806380c581d11161017457806380c581d11461068357806381c6f11b146106a3578063893d20e8146106c357600080fd5b8063640384091461062257806370a0823114610638578063715018a61461066e57600080fd5b80633df9a8d21161025e5780634fb2e45d11610207578063571ac8b0116101e1578063571ac8b0146105cc578063590f897e146105ec578063590ffdce1461060257600080fd5b80634fb2e45d146105545780634fbee1931461057457806350a8e016146105ad57600080fd5b8063452ed4f111610238578063452ed4f1146104fd5780634a74bb021461051d5780634ef3cce51461053e57600080fd5b80633df9a8d2146104b15780633f3cf56c146104c757806340b9a54b146104e757600080fd5b806323b872dd116102c0578063313ce5671161029a578063313ce5671461045f578063384f6b511461047b578063395093511461049157600080fd5b806323b872dd1461040957806326003957146104295780632b28fc7a1461044957600080fd5b80630758d924116102f15780630758d9241461039a578063095ea7b3146103ba57806318160ddd146103ea57600080fd5b806303fd2a4514610323578063044df7261461035657806306fdde031461037857600080fd5b3661031e57005b600080fd5b34801561032f57600080fd5b5061033961dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561036257600080fd5b50610376610371366004612a40565b6108d7565b005b34801561038457600080fd5b5061038d61094a565b60405161034d9190612b23565b3480156103a657600080fd5b50601354610339906001600160a01b031681565b3480156103c657600080fd5b506103da6103d53660046129f9565b6109dc565b604051901515815260200161034d565b3480156103f657600080fd5b506011545b60405190815260200161034d565b34801561041557600080fd5b506103da610424366004612983565b6109f2565b34801561043557600080fd5b50610376610444366004612a75565b610a6a565b34801561045557600080fd5b506103fb6107d081565b34801561046b57600080fd5b506040516009815260200161034d565b34801561048757600080fd5b506103fb600e5481565b34801561049d57600080fd5b506103da6104ac3660046129f9565b610b67565b3480156104bd57600080fd5b506103fb600d5481565b3480156104d357600080fd5b506103766104e2366004612a75565b610ba3565b3480156104f357600080fd5b506103fb600b5481565b34801561050957600080fd5b50601454610339906001600160a01b031681565b34801561052957600080fd5b506017546103da90600160a81b900460ff1681565b34801561054a57600080fd5b506103fb600f5481565b34801561056057600080fd5b5061037661056f366004612910565b610ca0565b34801561058057600080fd5b506103da61058f366004612910565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105b957600080fd5b506022546103da90610100900460ff1681565b3480156105d857600080fd5b506103da6105e7366004612910565b610ef8565b3480156105f857600080fd5b506103fb600c5481565b34801561060e57600080fd5b5061037661061d3660046129c4565b610f0c565b34801561062e57600080fd5b506103fb601b5481565b34801561064457600080fd5b506103fb610653366004612910565b6001600160a01b031660009081526001602052604090205490565b34801561067a57600080fd5b50610376610f85565b34801561068f57600080fd5b5061037661069e3660046129c4565b611028565b3480156106af57600080fd5b506103766106be366004612a5c565b611130565b3480156106cf57600080fd5b506000546001600160a01b0316610339565b3480156106ed57600080fd5b506103da6106fc366004612910565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561072657600080fd5b5061038d6111d8565b34801561073b57600080fd5b506103da61074a3660046129f9565b6111e7565b34801561075b57600080fd5b506103fb60105481565b34801561077157600080fd5b506103da6107803660046129f9565b61121e565b34801561079157600080fd5b506103766107a0366004612a25565b611235565b3480156107b157600080fd5b506103766107c0366004612a97565b6112db565b3480156107d157600080fd5b506103766107e036600461294a565b61139c565b3480156107f157600080fd5b506103fb61080036600461294a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561083757600080fd5b506103fb60285481565b34801561084d57600080fd5b5061037661085c366004612a97565b611418565b34801561086d57600080fd5b5061037661087c366004612910565b6114e2565b34801561088d57600080fd5b5061037661089c3660046129c4565b6118bc565b3480156108ad57600080fd5b506103fb601f5481565b3480156108c357600080fd5b506103766108d2366004612af1565b611935565b6000546001600160a01b0316331461092a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6022805492151560ff199384161790556029805491151591909216179055565b60606009805461095990612c59565b80601f016020809104026020016040519081016040528092919081815260200182805461098590612c59565b80156109d25780601f106109a7576101008083540402835291602001916109d2565b820191906000526020600020905b8154815290600101906020018083116109b557829003601f168201915b5050505050905090565b60006109e93384846119c2565b50600192915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610a57576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610a51908490612c42565b90915550505b610a62848484611acf565b949350505050565b6000546001600160a01b03163314610ab85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b60008183601154610ac99190612c23565b610ad39190612c01565b90506103e8601154610ae59190612c01565b811015610b405760405162461bcd60e51b815260206004820152602360248201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604482015262363c9760e91b6064820152608401610921565b601e8190556008548290610b55908590612c23565b610b5f9190612c01565b601f55505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109e9918590610b9e908690612be9565b6119c2565b6000546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b60008183601154610c029190612c23565b610c0c9190612c01565b90506103e8601154610c1e9190612c01565b811015610c795760405162461bcd60e51b815260206004820152602360248201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604482015262363c9760e91b6064820152608401610921565b601a8190556008548290610c8e908590612c23565b610c989190612c01565b601b55505050565b6000546001600160a01b03163314610cee5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b6001600160a01b038116610d6a5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610921565b6001600160a01b03811661dead1415610deb5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610921565b60008054610e04916001600160a01b0390911690610f0c565b610e0f816001610f0c565b6000546016546001600160a01b0390811691161415610e4457601680546001600160a01b0319166001600160a01b0383161790555b600080546001600160a01b03908116825260016020818152604080852054600483528186208786168752835281862055845490931684525290205415610ead57600080546001600160a01b03168082526001602052604090912054610eab91908390611acf565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610f06826000196109dc565b92915050565b6000546001600160a01b03163314610f5a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610fd35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b60008054610fec916001600160a01b0390911690610f0c565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146110765760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b8061109d57506001600160a01b03166000908152600260205260409020805460ff19169055565b600354156111045762093a80600354426110b79190612c42565b116111045760405162461bcd60e51b815260206004820152601260248201527f4f6e65207765656b20636f6f6c646f776e2e00000000000000000000000000006044820152606401610921565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b0316331461117e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b602354156111ce5760405162461bcd60e51b815260206004820152600660248201527f4572726f722e00000000000000000000000000000000000000000000000000006044820152606401610921565b6023556004602755565b6060600a805461095990612c59565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109e9918590610b9e908690612c42565b600061122b338484611acf565b5060019392505050565b6000546001600160a01b031633146112835760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b60178054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906112d090831515815260200190565b60405180910390a150565b6000546001600160a01b031633146113295760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b806113348385612be9565b61133e9190612be9565b6104b01461138e5760405162461bcd60e51b815260206004820152601360248201527f4d7573742061646420757020746f2031323030000000000000000000000000006044820152606401610921565b600e92909255600f55601055565b6000546001600160a01b031633146113ea5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b601680546001600160a01b039384166001600160a01b03199182161790915560178054929093169116179055565b6000546001600160a01b031633146114665760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b6107d0831115801561147a57506107d08211155b801561148857506107d08111155b6114d45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610921565b600b92909255600c55600d55565b6000546001600160a01b031633146115305760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561157057600080fd5b505afa158015611584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a8919061292d565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156115f057600080fd5b505afa158015611604573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611628919061292d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561168657600080fd5b505afa15801561169a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116be919061292d565b90506001600160a01b03811661187c57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561170757600080fd5b505afa15801561171b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173f919061292d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561178757600080fd5b505afa15801561179b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bf919061292d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561181f57600080fd5b505af1158015611833573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611857919061292d565b601480546001600160a01b0319166001600160a01b0392909216919091179055611898565b601480546001600160a01b0319166001600160a01b0383161790555b50601380546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b0316331461190a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119835760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610921565b82846011546119929190612c23565b61199c9190612c01565b60205560115481906119af908490612c23565b6119b99190612c01565b60215550505050565b6001600160a01b038316611a185760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610921565b6001600160a01b038216611a6e5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610921565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611b275760405162461bcd60e51b815260206004820152601460248201527f45524332303a205a65726f20616464726573732e0000000000000000000000006044820152606401610921565b6001600160a01b038316611b7d5760405162461bcd60e51b815260206004820152601460248201527f45524332303a205a65726f20616464726573732e0000000000000000000000006044820152606401610921565b60008211611bcd5760405162461bcd60e51b815260206004820152600860248201527f4d757374203e302e0000000000000000000000000000000000000000000000006044820152606401610921565b611bd78484611eb8565b15611ddb5760295460ff1615611c8e576001600160a01b03841660009081526002602052604090205460ff1615611c4d576001600160a01b0383166000908152602a6020526040902054431415611c2d57600080fd5b6001600160a01b0383166000908152602a60205260409020439055611c8e565b6001600160a01b0384166000908152602a6020526040902054431415611c7257600080fd5b6001600160a01b0384166000908152602a602052604090204390555b6001600160a01b03841660009081526002602052604090205460ff1680611ccd57506001600160a01b03831660009081526002602052604090205460ff165b15611d2457601a54821115611d245760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e00000000000000006044820152606401610921565b6015546001600160a01b03848116911614801590611d5b57506001600160a01b03831660009081526002602052604090205460ff16155b15611ddb57601e5482611d83856001600160a01b031660009081526001602052604090205490565b611d8d9190612be9565b1115611ddb5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610921565b6001600160a01b03841660009081526005602052604090205460019060ff1680611e1d57506001600160a01b03841660009081526005602052604090205460ff165b15611e26575060005b6001600160a01b03841660009081526002602052604090205460ff1615611ea357601754600160a01b900460ff16158015611e6a5750601754600160a81b900460ff165b15611ea3573060009081526001602052604081205490506020548110611ea1576021548110611e9857506021545b611ea181611f76565b505b611eaf85858584612173565b95945050505050565b600080546001600160a01b03848116911614801590611ee557506000546001600160a01b03838116911614155b8015611f0a57506001600160a01b03821660009081526007602052604090205460ff16155b8015611f2f57506001600160a01b03831660009081526007602052604090205460ff16155b8015611f4657506001600160a01b03821661dead14155b8015611f5a57506001600160a01b03821615155b8015611f6f57506001600160a01b0383163014155b9392505050565b6017805460ff60a01b1916600160a01b179055601054600f54600e54611f9c9190612be9565b611fa69190612be9565b611faf57612163565b60006002601054600f54600e54611fc69190612be9565b611fd09190612be9565b600e54611fdd9085612c23565b611fe79190612c01565b611ff19190612c01565b90506000611fff8284612c42565b905061200a81612457565b600047905060006002601054600f54600e546120269190612be9565b6120309190612be9565b600e5461203d9085612c23565b6120479190612c01565b6120519190612c01565b905083156120a55761206384826125d9565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b60006120b18587612c42565b111561215e57601654601054600f546001600160a01b03909216916108fc916120d991612be9565b600f546120e68587612c42565b6120f09190612c23565b6120fa9190612c01565b6040518115909202916000818181858888f19350505050158015612122573d6000803e3d6000fd5b506017546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561215c573d6000803e3d6000fd5b505b505050505b506017805460ff60a01b19169055565b60225460009060ff1615612384576001600160a01b03851660009081526006602052604090205460ff16806121c057506001600160a01b03841660009081526006602052604090205460ff165b1561220d5760405162461bcd60e51b815260206004820152601060248201527f536e697065722072656a65637465642e000000000000000000000000000000006044820152606401610921565b602254610100900460ff166122bb57612226858561269b565b602254610100900460ff1615801561224357506122438585611eb8565b156122b65760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610921565b612384565b60006024541180156122e557506001600160a01b03851660009081526002602052604090205460ff165b80156122f657506122f68585611eb8565b156123845760275460245461230b9043612c42565b1015612384576001600160a01b0384166000908152600660205260408120805460ff19166001179055602880549161234283612c94565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b038516600090815260016020526040812080548592906123ac908490612c42565b9091555060009050826123bf57836123ca565b6123ca8686866127f2565b6001600160a01b0386166000908152600160205260408120805492935083929091906123f7908490612be9565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161244391815260200190565b60405180910390a350600195945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061248c5761248c612cc5565b6001600160a01b03928316602091820292909201810191909152601354604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b1580156124f957600080fd5b505afa15801561250d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612531919061292d565b8160018151811061254457612544612cc5565b6001600160a01b0392831660209182029290920101526013546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906125a3908590600090869030904290600401612b78565b600060405180830381600087803b1580156125bd57600080fd5b505af11580156125d1573d6000803e3d6000fd5b505050505050565b6013546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561265b57600080fd5b505af115801561266f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126949190612ac3565b5050505050565b602254610100900460ff16156127195760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610921565b6127238282611eb8565b15801561273d57506014546001600160a01b038281169116145b1561112c576027546004146127605761275843611388612be9565b602455612765565b436024555b6001600160a01b03821660009081526007602052604090819020805460ff191660019081179091556022805461ff001916610100179055426025556017805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159916127e691901515815260200190565b60405180910390a15050565b60145460009081906001600160a01b03868116911614156128165750600b5461283a565b6014546001600160a01b03858116911614156128355750600c5461283a565b50600d545b6128448585611eb8565b1561286557602354158061285b5750602354604514155b1561286557600080fd5b60006127106128748386612c23565b61287e9190612c01565b306000908152600160205260408120805492935083929091906128a2908490612be9565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36128f18185612c42565b9695505050505050565b8035801515811461290b57600080fd5b919050565b60006020828403121561292257600080fd5b8135611f6f81612cdb565b60006020828403121561293f57600080fd5b8151611f6f81612cdb565b6000806040838503121561295d57600080fd5b823561296881612cdb565b9150602083013561297881612cdb565b809150509250929050565b60008060006060848603121561299857600080fd5b83356129a381612cdb565b925060208401356129b381612cdb565b929592945050506040919091013590565b600080604083850312156129d757600080fd5b82356129e281612cdb565b91506129f0602084016128fb565b90509250929050565b60008060408385031215612a0c57600080fd5b8235612a1781612cdb565b946020939093013593505050565b600060208284031215612a3757600080fd5b611f6f826128fb565b60008060408385031215612a5357600080fd5b6129e2836128fb565b600060208284031215612a6e57600080fd5b5035919050565b60008060408385031215612a8857600080fd5b50508035926020909101359150565b600080600060608486031215612aac57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612ad857600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612b0757600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b81811015612b5057858101830151858201604001528201612b34565b81811115612b62576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612bc85784516001600160a01b031683529383019391830191600101612ba3565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612bfc57612bfc612caf565b500190565b600082612c1e57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612c3d57612c3d612caf565b500290565b600082821015612c5457612c54612caf565b500390565b600181811c90821680612c6d57607f821691505b60208210811415612c8e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612ca857612ca8612caf565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612cf057600080fd5b5056fea264697066735822122083af6bd047c4694a76b2787838f23c4abad0773cd59f6f5eb55c3b8fd9c28c9f64736f6c63430008070033

Deployed Bytecode Sourcemap

5841:18886:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7389:73;;;;;;;;;;;;7420:42;7389:73;;;;;-1:-1:-1;;;;;4652:55:1;;;4634:74;;4622:2;4607:18;7389:73:0;;;;;;;;16211:169;;;;;;;;;;-1:-1:-1;16211:169:0;;;;;:::i;:::-;;:::i;:::-;;12529:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7214:35::-;;;;;;;;;;-1:-1:-1;7214:35:0;;;;-1:-1:-1;;;;;7214:35:0;;;13142:161;;;;;;;;;;-1:-1:-1;13142:161:0;;;;;:::i;:::-;;:::i;:::-;;;5851:14:1;;5844:22;5826:41;;5814:2;5799:18;13142:161:0;5686:187:1;12264:83:0;;;;;;;;;;-1:-1:-1;12337:7:0;;12264:83;;;12340:25:1;;;12328:2;12313:18;12264:83:0;12194:177:1;13756:306:0;;;;;;;;;;-1:-1:-1;13756:306:0;;;;;:::i;:::-;;:::i;17383:325::-;;;;;;;;;;-1:-1:-1;17383:325:0;;;;;:::i;:::-;;:::i;6627:42::-;;;;;;;;;;;;6665:4;6627:42;;12353:80;;;;;;;;;;-1:-1:-1;12353:80:0;;7049:1;13873:36:1;;13861:2;13846:18;12353:80:0;13731:184:1;6782:36:0;;;;;;;;;;;;;;;;14070:215;;;;;;;;;;-1:-1:-1;14070:215:0;;;;;:::i;:::-;;:::i;6584:34::-;;;;;;;;;;;;;;;;17055:320;;;;;;;;;;-1:-1:-1;17055:320:0;;;;;:::i;:::-;;:::i;6511:29::-;;;;;;;;;;;;;;;;7256:21;;;;;;;;;;-1:-1:-1;7256:21:0;;;;-1:-1:-1;;;;;7256:21:0;;;7700:41;;;;;;;;;;-1:-1:-1;7700:41:0;;;;-1:-1:-1;;;7700:41:0;;;;;;6825:36;;;;;;;;;;;;;;;;10947:761;;;;;;;;;;-1:-1:-1;10947:761:0;;;;;:::i;:::-;;:::i;15453:125::-;;;;;;;;;;-1:-1:-1;15453:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;15542:28:0;15518:4;15542:28;;;:19;:28;;;;;;;;;15453:125;8429:36;;;;;;;;;;-1:-1:-1;8429:36:0;;;;;;;;;;;13628:120;;;;;;;;;;-1:-1:-1;13628:120:0;;;;;:::i;:::-;;:::i;6547:30::-;;;;;;;;;;;;;;;;15586:134;;;;;;;;;;-1:-1:-1;15586:134:0;;;;;:::i;:::-;;:::i;7911:77::-;;;;;;;;;;;;;;;;12842:117;;;;;;;;;;-1:-1:-1;12842:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;12935:16:0;12908:7;12935:16;;;:7;:16;;;;;;;12842:117;11716:195;;;;;;;;;;;;;:::i;15035:410::-;;;;;;;;;;-1:-1:-1;15035:410:0;;;;;:::i;:::-;;:::i;15868:186::-;;;;;;;;;;-1:-1:-1;15868:186:0;;;;;:::i;:::-;;:::i;12615:80::-;;;;;;;;;;-1:-1:-1;12667:7:0;10925:6;-1:-1:-1;;;;;10925:6:0;12615:80;;15728:132;;;;;;;;;;-1:-1:-1;15728:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;15821:31:0;15797:4;15821:31;;;:22;:31;;;;;;;;;15728:132;12439:84;;;;;;;;;;;;;:::i;14293:225::-;;;;;;;;;;-1:-1:-1;14293:225:0;;;;;:::i;:::-;;:::i;6868:30::-;;;;;;;;;;;;;;;;12967:167;;;;;;;;;;-1:-1:-1;12967:167:0;;;;;:::i;:::-;;:::i;18227:171::-;;;;;;;;;;-1:-1:-1;18227:171:0;;;;;:::i;:::-;;:::i;16769:278::-;;;;;;;;;;-1:-1:-1;16769:278:0;;;;;:::i;:::-;;:::i;18013:206::-;;;;;;;;;;-1:-1:-1;18013:206:0;;;;;:::i;:::-;;:::i;12701:133::-;;;;;;;;;;-1:-1:-1;12701:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12803:19:0;;;12785:7;12803:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12701:133;8680:32;;;;;;;;;;;;;;;;16388:373;;;;;;;;;;-1:-1:-1;16388:373:0;;;;;:::i;:::-;;:::i;14526:501::-;;;;;;;;;;-1:-1:-1;14526:501:0;;;;;:::i;:::-;;:::i;16062:141::-;;;;;;;;;;-1:-1:-1;16062:141:0;;;;;:::i;:::-;;:::i;8172:87::-;;;;;;;;;;;;;;;;17716:289;;;;;;;;;;-1:-1:-1;17716:289:0;;;;;:::i;:::-;;:::i;16211:169::-;9374:6;;-1:-1:-1;;;;;9374:6:0;322:10;9374:22;9366:52;;;;-1:-1:-1;;;9366:52:0;;6939:2:1;9366:52:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:47;7054:18;;9366:52:0;;;;;;;;;16306:16:::1;:28:::0;;;::::1;;-1:-1:-1::0;;16306:28:0;;::::1;;::::0;;16345:15:::1;:27:::0;;;::::1;;::::0;;;::::1;;::::0;;16211:169::o;12529:80::-;12577:13;12601:5;12594:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12529:80;:::o;13142:161::-;13217:4;13234:39;322:10;13257:7;13266:6;13234:8;:39::i;:::-;-1:-1:-1;13291:4:0;13142:161;;;;:::o;13756:306::-;-1:-1:-1;;;;;13877:19:0;;13856:4;13877:19;;;:11;:19;;;;;;;;13897:10;13877:31;;;;;;;;-1:-1:-1;;13877:52:0;13873:126;;-1:-1:-1;;;;;13946:19:0;;;;;;:11;:19;;;;;;;;13966:10;13946:31;;;;;;;:41;;13981:6;;13946:19;:41;;13981:6;;13946:41;:::i;:::-;;;;-1:-1:-1;;13873:126:0;14018:36;14028:6;14036:9;14047:6;14018:9;:36::i;:::-;14011:43;13756:306;-1:-1:-1;;;;13756:306:0:o;17383:325::-;9374:6;;-1:-1:-1;;;;;9374:6:0;322:10;9374:22;9366:52;;;;-1:-1:-1;;;9366:52:0;;6939:2:1;9366:52:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:47;7054:18;;9366:52:0;6737:341:1;9366:52:0;17473:13:::1;17511:7;17500;17490;;:17;;;;:::i;:::-;17489:29;;;;:::i;:::-;17473:45;;17557:4;17547:7;;:14;;;;:::i;:::-;17537:5;:25;;17529:73;;;::::0;-1:-1:-1;;;17529:73:0;;8447:2:1;17529:73:0::1;::::0;::::1;8429:21:1::0;8486:2;8466:18;;;8459:30;8525:34;8505:18;;;8498:62;-1:-1:-1;;;8576:18:1;;;8569:33;8619:19;;17529:73:0::1;8245:399:1::0;17529:73:0::1;17613:14;:22:::0;;;17665:14:::1;::::0;17693:7;;17665:24:::1;::::0;17682:7;;17665:24:::1;:::i;:::-;17664:36;;;;:::i;:::-;17646:15;:54:::0;-1:-1:-1;;;17383:325:0:o;14070:215::-;322:10;14158:4;14207:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14207:34:0;;;;;;;;;;14158:4;;14175:80;;14198:7;;14207:47;;14244:10;;14207:47;:::i;:::-;14175:8;:80::i;17055:320::-;9374:6;;-1:-1:-1;;;;;9374:6:0;322:10;9374:22;9366:52;;;;-1:-1:-1;;;9366:52:0;;6939:2:1;9366:52:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:47;7054:18;;9366:52:0;6737:341:1;9366:52:0;17144:13:::1;17182:7;17171;17161;;:17;;;;:::i;:::-;17160:29;;;;:::i;:::-;17144:45;;17228:4;17218:7;;:14;;;;:::i;:::-;17208:5;:25;;17200:73;;;::::0;-1:-1:-1;;;17200:73:0;;8447:2:1;17200:73:0::1;::::0;::::1;8429:21:1::0;8486:2;8466:18;;;8459:30;8525:34;8505:18;;;8498:62;-1:-1:-1;;;8576:18:1;;;8569:33;8619:19;;17200:73:0::1;8245:399:1::0;17200:73:0::1;17284:12;:20:::0;;;17332:14:::1;::::0;17360:7;;17332:24:::1;::::0;17349:7;;17332:24:::1;:::i;:::-;17331:36;;;;:::i;:::-;17315:13;:52:::0;-1:-1:-1;;;17055:320:0:o;10947:761::-;9374:6;;-1:-1:-1;;;;;9374:6:0;322:10;9374:22;9366:52;;;;-1:-1:-1;;;9366:52:0;;6939:2:1;9366:52:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:47;7054:18;;9366:52:0;6737:341:1;9366:52:0;-1:-1:-1;;;;;11028:22:0;::::1;11020:96;;;::::0;-1:-1:-1;;;11020:96:0;;11966:2:1;11020:96:0::1;::::0;::::1;11948:21:1::0;12005:2;11985:18;;;11978:30;12044:34;12024:18;;;12017:62;12115:31;12095:18;;;12088:59;12164:19;;11020:96:0::1;11764:425:1::0;11020:96:0::1;-1:-1:-1::0;;;;;11135:16:0;::::1;7420:42;11135:16;;11127:90;;;::::0;-1:-1:-1;;;11127:90:0;;11966:2:1;11127:90:0::1;::::0;::::1;11948:21:1::0;12005:2;11985:18;;;11978:30;12044:34;12024:18;;;12017:62;12115:31;12095:18;;;12088:59;12164:19;;11127:90:0::1;11764:425:1::0;11127:90:0::1;11248:6;::::0;;11228:34:::1;::::0;-1:-1:-1;;;;;11248:6:0;;::::1;::::0;11228:19:::1;:34::i;:::-;11273:35;11293:8;11303:4;11273:19;:35::i;:::-;11361:6;::::0;11333:16:::1;::::0;-1:-1:-1;;;;;11333:16:0;;::::1;11361:6:::0;::::1;11333:35;11329:90;;;11383:16;:36:::0;;-1:-1:-1;;;;;;11383:36:0::1;-1:-1:-1::0;;;;;11383:36:0;::::1;;::::0;;11329:90:::1;11482:6;::::0;;-1:-1:-1;;;;;11482:6:0;;::::1;12935:16:::0;;:7;:16;;;;;;;;;11440:11:::1;:19:::0;;;;;:29;;::::1;::::0;;;;;;;:49;11513:6;;;;::::1;12935:16:::0;;;;;;11503:21;11500:99:::1;;11551:6;::::0;;-1:-1:-1;;;;;11551:6:0::1;12935:16:::0;;;:7;:16;;;;;;;11541:46:::1;::::0;11551:6;11559:8;;11541:9:::1;:46::i;:::-;;11500:99;11619:6;:17:::0;;-1:-1:-1;;;;;;11619:17:0::1;-1:-1:-1::0;;;;;11619:17:0;::::1;::::0;;::::1;::::0;;11652:38:::1;::::0;11619:17;;;;11652:38:::1;::::0;11619:6;11652:38:::1;10947:761:::0;:::o;13628:120::-;13681:4;13705:35;13713:7;-1:-1:-1;;13705:7:0;:35::i;:::-;13698:42;13628:120;-1:-1:-1;;13628:120:0:o;15586:134::-;9374:6;;-1:-1:-1;;;;;9374:6:0;322:10;9374:22;9366:52;;;;-1:-1:-1;;;9366:52:0;;6939:2:1;9366:52:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:47;7054:18;;9366:52:0;6737:341:1;9366:52:0;-1:-1:-1;;;;;15674:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;15674:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15586:134::o;11716:195::-;9374:6;;-1:-1:-1;;;;;9374:6:0;322:10;9374:22;9366:52;;;;-1:-1:-1;;;9366:52:0;;6939:2:1;9366:52:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:47;7054:18;;9366:52:0;6737:341:1;9366:52:0;11803:6:::1;::::0;;11783:34:::1;::::0;-1:-1:-1;;;;;11803:6:0;;::::1;::::0;11783:19:::1;:34::i;:::-;11845:1;11828:19:::0;;-1:-1:-1;;;;;;11828:19:0::1;::::0;;11863:40:::1;::::0;11845:1;;11863:40:::1;::::0;11845:1;;11863:40:::1;11716:195::o:0;15035:410::-;9374:6;;-1:-1:-1;;;;;9374:6:0;322:10;9374:22;9366:52;;;;-1:-1:-1;;;9366:52:0;;6939:2:1;9366:52:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:47;7054:18;;9366:52:0;6737:341:1;9366:52:0;15116:16;15112:326:::1;;-1:-1:-1::0;;;;;;15149:13:0::1;15165:5;15149:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;15149:21:0::1;::::0;;15035:410::o;15112:326::-:1;15207:17;::::0;:22;15203:139:::1;;15296:7;15276:17;;15258:15;:35;;;;:::i;:::-;:45;15250:76;;;::::0;-1:-1:-1;;;15250:76:0;;9200:2:1;15250:76:0::1;::::0;::::1;9182:21:1::0;9239:2;9219:18;;;9212:30;9278:20;9258:18;;;9251:48;9316:18;;15250:76:0::1;8998:342:1::0;15250:76:0::1;-1:-1:-1::0;;;;;15356:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;15356:20:0::1;15372:4;15356:20;::::0;;15411:15:::1;15391:17;:35:::0;15112:326:::1;15035:410:::0;;:::o;15868:186::-;9374:6;;-1:-1:-1;;;;;9374:6:0;322:10;9374:22;9366:52;;;;-1:-1:-1;;;9366:52:0;;6939:2:1;9366:52:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:47;7054:18;;9366:52:0;6737:341:1;9366:52:0;15950:13:::1;::::0;:18;15941:38:::1;;;::::0;-1:-1:-1;;;15941:38:0;;10924:2:1;15941:38:0::1;::::0;::::1;10906:21:1::0;10963:1;10943:18;;;10936:29;11001:8;10981:18;;;10974:36;11027:18;;15941:38:0::1;10722:329:1::0;15941:38:0::1;15990:13;:28:::0;16045:1:::1;16029:13;:17:::0;15868:186::o;12439:84::-;12489:13;12513:7;12506:14;;;;;:::i;14293:225::-;322:10;14386:4;14435:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14435:34:0;;;;;;;;;;14386:4;;14403:85;;14426:7;;14435:52;;14472:15;;14435:52;:::i;12967:167::-;13045:4;13062:42;322:10;13086:9;13097:6;13062:9;:42::i;:::-;-1:-1:-1;13122:4:0;;12967:167;-1:-1:-1;;;12967:167:0:o;18227:171::-;9374:6;;-1:-1:-1;;;;;9374:6:0;322:10;9374:22;9366:52;;;;-1:-1:-1;;;9366:52:0;;6939:2:1;9366:52:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:47;7054:18;;9366:52:0;6737:341:1;9366:52:0;18304:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;18304:32:0::1;-1:-1:-1::0;;;;18304:32:0;;::::1;;::::0;;18352:38:::1;::::0;::::1;::::0;::::1;::::0;18328:8;5851:14:1;5844:22;5826:41;;5814:2;5799:18;;5686:187;18352:38:0::1;;;;;;;;18227:171:::0;:::o;16769:278::-;9374:6;;-1:-1:-1;;;;;9374:6:0;322:10;9374:22;9366:52;;;;-1:-1:-1;;;9366:52:0;;6939:2:1;9366:52:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:47;7054:18;;9366:52:0;6737:341:1;9366:52:0;16902:3;16878:21:::1;16890:9:::0;16878;:21:::1;:::i;:::-;:27;;;;:::i;:::-;16909:4;16878:35;16869:68;;;::::0;-1:-1:-1;;;16869:68:0;;10576:2:1;16869:68:0::1;::::0;::::1;10558:21:1::0;10615:2;10595:18;;;10588:30;10654:21;10634:18;;;10627:49;10693:18;;16869:68:0::1;10374:343:1::0;16869:68:0::1;16948:15;:27:::0;;;;16986:15:::1;:27:::0;17024:9:::1;:15:::0;16769:278::o;18013:206::-;9374:6;;-1:-1:-1;;;;;9374:6:0;322:10;9374:22;9366:52;;;;-1:-1:-1;;;9366:52:0;;6939:2:1;9366:52:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:47;7054:18;;9366:52:0;6737:341:1;9366:52:0;18124:16:::1;:43:::0;;-1:-1:-1;;;;;18124:43:0;;::::1;-1:-1:-1::0;;;;;;18124:43:0;;::::1;;::::0;;;18178:11:::1;:33:::0;;;;;::::1;::::0;::::1;;::::0;;18013:206::o;16388:373::-;9374:6;;-1:-1:-1;;;;;9374:6:0;322:10;9374:22;9366:52;;;;-1:-1:-1;;;9366:52:0;;6939:2:1;9366:52:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:47;7054:18;;9366:52:0;6737:341:1;9366:52:0;6665:4:::1;16498:6;:21;;:65;;;;;6715:4;16540:7;:23;;16498:65;:117;;;;;6769:4;16584:11;:31;;16498:117;16490:170;;;::::0;-1:-1:-1;;;16490:170:0;;8095:2:1;16490:170:0::1;::::0;::::1;8077:21:1::0;8134:2;8114:18;;;8107:30;8173:25;8153:18;;;8146:53;8216:18;;16490:170:0::1;7893:347:1::0;16490:170:0::1;16671:7;:16:::0;;;;16698:8:::1;:18:::0;16727:12:::1;:26:::0;16388:373::o;14526:501::-;9374:6;;-1:-1:-1;;;;;9374:6:0;322:10;9374:22;9366:52;;;;-1:-1:-1;;;9366:52:0;;6939:2:1;9366:52:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:47;7054:18;;9366:52:0;6737:341:1;9366:52:0;14597:29:::1;14648:9;14597:61;;14669:16;14706:10;-1:-1:-1::0;;;;;14706:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14688:47:0::1;;14744:4;14751:10;-1:-1:-1::0;;;;;14751:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14688:81;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;4972:15:1;;;14688:81:0::1;::::0;::::1;4954:34:1::0;5024:15;;5004:18;;;4997:43;4866:18;;14688:81:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14669:100:::0;-1:-1:-1;;;;;;14784:22:0;::::1;14780:207;;14850:10;-1:-1:-1::0;;;;;14850:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14832:50:0::1;;14891:4;14898:10;-1:-1:-1::0;;;;;14898:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14832:84;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;4972:15:1;;;14832:84:0::1;::::0;::::1;4954:34:1::0;5024:15;;5004:18;;;4997:43;4866:18;;14832:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14823:6;:93:::0;;-1:-1:-1;;;;;;14823:93:0::1;-1:-1:-1::0;;;;;14823:93:0;;;::::1;::::0;;;::::1;::::0;;14780:207:::1;;;14958:6;:17:::0;;-1:-1:-1;;;;;;14958:17:0::1;-1:-1:-1::0;;;;;14958:17:0;::::1;;::::0;;14780:207:::1;-1:-1:-1::0;14997:9:0::1;:22:::0;;-1:-1:-1;;;;;;14997:22:0::1;-1:-1:-1::0;;;;;14997:22:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;14526:501:0:o;16062:141::-;9374:6;;-1:-1:-1;;;;;9374:6:0;322:10;9374:22;9366:52;;;;-1:-1:-1;;;9366:52:0;;6939:2:1;9366:52:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:47;7054:18;;9366:52:0;6737:341:1;9366:52:0;-1:-1:-1;;;;;16154:31:0;;;::::1;;::::0;;;:22:::1;:31;::::0;;;;:41;;-1:-1:-1;;16154:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16062:141::o;17716:289::-;9374:6;;-1:-1:-1;;;;;9374:6:0;322:10;9374:22;9366:52;;;;-1:-1:-1;;;9366:52:0;;6939:2:1;9366:52:0;;;6921:21:1;6978:2;6958:18;;;6951:30;-1:-1:-1;;;6997:18:1;;;6990:47;7054:18;;9366:52:0;6737:341:1;9366:52:0;17916:16:::1;17896;17886:7;;:26;;;;:::i;:::-;17885:47;;;;:::i;:::-;17869:13;:63:::0;17957:7:::1;::::0;17984:13;;17957:23:::1;::::0;17967:13;;17957:23:::1;:::i;:::-;17956:41;;;;:::i;:::-;17943:10;:54:::0;-1:-1:-1;;;;17716:289:0:o;13311:309::-;-1:-1:-1;;;;;13405:20:0;;13397:52;;;;-1:-1:-1;;;13397:52:0;;9883:2:1;13397:52:0;;;9865:21:1;9922:2;9902:18;;;9895:30;9961:21;9941:18;;;9934:49;10000:18;;13397:52:0;9681:343:1;13397:52:0;-1:-1:-1;;;;;13468:21:0;;13460:53;;;;-1:-1:-1;;;13460:53:0;;9883:2:1;13460:53:0;;;9865:21:1;9922:2;9902:18;;;9895:30;9961:21;9941:18;;;9934:49;10000:18;;13460:53:0;9681:343:1;13460:53:0;-1:-1:-1;;;;;13526:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13579:33;;12340:25:1;;;13579:33:0;;12313:18:1;13579:33:0;;;;;;;13311:309;;;:::o;18737:1646::-;18816:4;-1:-1:-1;;;;;18841:18:0;;18833:51;;;;-1:-1:-1;;;18833:51:0;;8851:2:1;18833:51:0;;;8833:21:1;8890:2;8870:18;;;8863:30;8929:22;8909:18;;;8902:50;8969:18;;18833:51:0;8649:344:1;18833:51:0;-1:-1:-1;;;;;18903:16:0;;18895:49;;;;-1:-1:-1;;;18895:49:0;;8851:2:1;18895:49:0;;;8833:21:1;8890:2;8870:18;;;8863:30;8929:22;8909:18;;;8902:50;8969:18;;18895:49:0;8649:344:1;18895:49:0;18972:1;18963:6;:10;18955:31;;;;-1:-1:-1;;;18955:31:0;;9547:2:1;18955:31:0;;;9529:21:1;9586:1;9566:18;;;9559:29;9624:10;9604:18;;;9597:38;9652:18;;18955:31:0;9345:331:1;18955:31:0;19000:20;19011:4;19017:2;19000:10;:20::i;:::-;18997:707;;;19041:15;;;;19037:347;;;-1:-1:-1;;;;;19081:13:0;;;;;;:7;:13;;;;;;;;19077:292;;;-1:-1:-1;;;;;19126:13:0;;;;;;:9;:13;;;;;;19143:12;19126:29;;19118:38;;;;;;-1:-1:-1;;;;;19179:13:0;;;;;;:9;:13;;;;;19195:12;19179:28;;19077:292;;;-1:-1:-1;;;;;19264:15:0;;;;;;:9;:15;;;;;;19283:12;19264:31;;19256:40;;;;;;-1:-1:-1;;;;;19319:15:0;;;;;;:9;:15;;;;;19337:12;19319:30;;19077:292;-1:-1:-1;;;;;19401:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;19418:11:0;;;;;;:7;:11;;;;;;;;19401:28;19398:126;;;19467:12;;19457:6;:22;;19449:59;;;;-1:-1:-1;;;19449:59:0;;11613:2:1;19449:59:0;;;11595:21:1;11652:2;11632:18;;;11625:30;11691:26;11671:18;;;11664:54;11735:18;;19449:59:0;11411:348:1;19449:59:0;19547:14;;-1:-1:-1;;;;;19541:20:0;;;19547:14;;19541:20;;;;:36;;-1:-1:-1;;;;;;19566:11:0;;;;;;:7;:11;;;;;;;;19565:12;19541:36;19538:155;;;19632:14;;19622:6;19606:13;19616:2;-1:-1:-1;;;;;12935:16:0;12908:7;12935:16;;;:7;:16;;;;;;;12842:117;19606:13;:22;;;;:::i;:::-;:40;;19598:79;;;;-1:-1:-1;;;19598:79:0;;11258:2:1;19598:79:0;;;11240:21:1;11297:2;11277:18;;;11270:30;11336:28;11316:18;;;11309:56;11382:18;;19598:79:0;11056:350:1;19598:79:0;-1:-1:-1;;;;;19749:25:0;;19716:12;19749:25;;;:19;:25;;;;;;19731:4;;19749:25;;;:52;;-1:-1:-1;;;;;;19778:23:0;;;;;;:19;:23;;;;;;;;19749:52;19746:98;;;-1:-1:-1;19827:5:0;19746:98;-1:-1:-1;;;;;19860:11:0;;;;;;:7;:11;;;;;;;;19856:457;;;19893:16;;-1:-1:-1;;;19893:16:0;;;;19892:17;:59;;;;-1:-1:-1;19930:21:0;;-1:-1:-1;;;19930:21:0;;;;19892:59;19888:408;;;20035:4;19986:28;12935:16;;;:7;:16;;;;;;19986:55;;20088:13;;20064:20;:37;20060:221;;20153:10;;20129:20;:34;20126:77;;-1:-1:-1;20190:10:0;;20126:77;20225:36;20240:20;20225:14;:36::i;:::-;19967:329;19888:408;20331:44;20349:4;20355:2;20359:6;20367:7;20331:17;:44::i;:::-;20324:51;18737:1646;-1:-1:-1;;;;;18737:1646:0:o;18406:323::-;18474:4;10925:6;;-1:-1:-1;;;;;18498:15:0;;;10925:6;;18498:15;;;;:45;;-1:-1:-1;10898:7:0;10925:6;-1:-1:-1;;;;;18530:13:0;;;10925:6;;18530:13;;18498:45;:84;;;;-1:-1:-1;;;;;;18561:21:0;;;;;;:17;:21;;;;;;;;18560:22;18498:84;:125;;;;-1:-1:-1;;;;;;18600:23:0;;;;;;:17;:23;;;;;;;;18599:24;18498:125;:152;;;;-1:-1:-1;;;;;;18640:10:0;;7420:42;18640:10;;18498:152;:185;;;;-1:-1:-1;;;;;;18667:16:0;;;;18498:185;:223;;;;-1:-1:-1;;;;;;18700:21:0;;18716:4;18700:21;;18498:223;18491:230;18406:323;-1:-1:-1;;;18406:323:0:o;20391:1015::-;9248:16;:23;;-1:-1:-1;;;;9248:23:0;-1:-1:-1;;;9248:23:0;;;20516:9:::1;::::0;20498:15:::1;::::0;20480::::1;::::0;:33:::1;::::0;20498:15;20480:33:::1;:::i;:::-;:45;;;;:::i;:::-;20476:76;;20545:7;;20476:76;20562:17;20677:1;20663:9;;20645:15;;20627;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;20607:15;::::0;20584:38:::1;::::0;:20;:38:::1;:::i;:::-;20583:90;;;;:::i;:::-;20582:96;;;;:::i;:::-;20562:116:::0;-1:-1:-1;20691:20:0::1;20714:32;20562:116:::0;20714:20;:32:::1;:::i;:::-;20691:55;;20757:30;20774:12;20757:16;:30::i;:::-;20800:22;20825:21;20800:46;;20857:24;20973:1;20959:9;;20941:15;;20923;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;20903:15;::::0;20886:32:::1;::::0;:14;:32:::1;:::i;:::-;20885:84;;;;:::i;:::-;20884:90;;;;:::i;:::-;20857:117:::0;-1:-1:-1;20991:13:0;;20987:161:::1;;21021:41;21034:9;21045:16;21021:12;:41::i;:::-;21082:54;::::0;;13609:25:1;;;13665:2;13650:18;;13643:34;;;13693:18;;;13686:34;;;21082:54:0::1;::::0;13597:2:1;13582:18;21082:54:0::1;;;;;;;20987:161;21197:1;21162:32;21185:9:::0;21162:20;:32:::1;:::i;:::-;:36;21158:241;;;21215:16;::::0;21318:9:::1;::::0;21300:15:::1;::::0;-1:-1:-1;;;;;21215:16:0;;::::1;::::0;:114:::1;::::0;21300:27:::1;::::0;::::1;:::i;:::-;21280:15;::::0;21243:33:::1;21260:16:::0;21243:14;:33:::1;:::i;:::-;21242:53;;;;:::i;:::-;21241:87;;;;:::i;:::-;21215:114;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;21344:11:0::1;::::0;:43:::1;::::0;-1:-1:-1;;;;;21344:11:0;;::::1;::::0;21365:21:::1;21344:43:::0;::::1;;;::::0;:11:::1;:43:::0;:11;:43;21365:21;21344:11;:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21158:241;20465:941;;;;9282:1;-1:-1:-1::0;9294:16:0;:24;;-1:-1:-1;;;;9294:24:0;;;20391:1015::o;22802:1216::-;22923:16;;22902:4;;22923:16;;22919:858;;;-1:-1:-1;;;;;15821:31:0;;15797:4;15821:31;;;:22;:31;;;;;;;;22959:56;;;-1:-1:-1;;;;;;15821:31:0;;15797:4;15821:31;;;:22;:31;;;;;;;;22990:25;22955:123;;;23036:26;;-1:-1:-1;;;23036:26:0;;10231:2:1;23036:26:0;;;10213:21:1;10270:2;10250:18;;;10243:30;10309:18;10289;;;10282:46;10345:18;;23036:26:0;10029:340:1;22955:123:0;23099:16;;;;;;;23094:672;;23136:28;23155:4;23161:2;23136:18;:28::i;:::-;23188:16;;;;;;;23187:17;:41;;;;;23208:20;23219:4;23225:2;23208:10;:20::i;:::-;23183:137;;;23253:47;;-1:-1:-1;;;23253:47:0;;7689:2:1;23253:47:0;;;7671:21:1;7728:2;7708:18;;;7701:30;7767:34;7747:18;;;7740:62;7838:7;7818:18;;;7811:35;7863:19;;23253:47:0;7487:401:1;23183:137:0;23094:672;;;23379:1;23364:12;;:16;:55;;;;-1:-1:-1;;;;;;23406:13:0;;;;;;:7;:13;;;;;;;;23364:55;:101;;;;;23445:20;23456:4;23462:2;23445:10;:20::i;:::-;23360:391;;;23542:13;;23527:12;;23512:27;;:12;:27;:::i;:::-;:43;23508:224;;;-1:-1:-1;;;;;23584:26:0;;;;;;:22;:26;;;;;:33;;-1:-1:-1;;23584:33:0;23613:4;23584:33;;;23644:13;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;23692:16:0;;-1:-1:-1;;;;;4652:55:1;;4634:74;;23692:16:0;;4622:2:1;4607:18;23692:16:0;;;;;;;23508:224;-1:-1:-1;;;;;23789:13:0;;;;;;:7;:13;;;;;:23;;23806:6;;23789:13;:23;;23806:6;;23789:23;:::i;:::-;;;;-1:-1:-1;23823:22:0;;-1:-1:-1;23849:7:0;23848:48;;23890:6;23848:48;;;23860:27;23870:4;23876:2;23880:6;23860:9;:27::i;:::-;-1:-1:-1;;;;;23907:11:0;;;;;;:7;:11;;;;;:29;;23823:73;;-1:-1:-1;23823:73:0;;23907:11;;;:29;;23823:73;;23907:29;:::i;:::-;;;;;;;;23969:2;-1:-1:-1;;;;;23954:34:0;23963:4;-1:-1:-1;;;;;23954:34:0;;23973:14;23954:34;;;;12340:25:1;;12328:2;12313:18;;12194:177;23954:34:0;;;;;;;;-1:-1:-1;24006:4:0;;22802:1216;-1:-1:-1;;;;;22802:1216:0:o;21414:417::-;21505:16;;;21519:1;21505:16;;;;;;;;21481:21;;21505:16;;;;;;;;;;-1:-1:-1;21505:16:0;21481:40;;21550:4;21532;21537:1;21532:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21532:23:0;;;:7;;;;;;;;;;:23;;;;21576:9;;:16;;;;;;;;:9;;;;;:14;;:16;;;;;21532:7;;21576:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21566:4;21571:1;21566:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21566:26:0;;;:7;;;;;;;;;:26;21605:9;;:218;;;;;:9;;;:60;;:218;;21680:11;;21605:9;;21750:4;;21777;;21797:15;;21605:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21470:361;21414:417;:::o;21839:332::-;21920:9;;:243;;;;;21986:4;21920:243;;;5415:34:1;5465:18;;;5458:34;;;21920:9:0;5508:18:1;;;5501:34;;;5551:18;;;5544:34;7420:42:0;5594:19:1;;;5587:44;22137:15:0;5647:19:1;;;5640:35;-1:-1:-1;;;;;21920:9:0;;;;:25;;21953:9;;5326:19:1;;21920:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21839:332;;:::o;22179:615::-;22261:16;;;;;;;22260:17;22252:65;;;;-1:-1:-1;;;22252:65:0;;7285:2:1;22252:65:0;;;7267:21:1;7324:2;7304:18;;;7297:30;7363:34;7343:18;;;7336:62;7434:5;7414:18;;;7407:33;7457:19;;22252:65:0;7083:399:1;22252:65:0;22333:20;22344:4;22350:2;22333:10;:20::i;:::-;22332:21;:37;;;;-1:-1:-1;22363:6:0;;-1:-1:-1;;;;;22357:12:0;;;22363:6;;22357:12;22332:37;22328:459;;;22390:13;;22407:1;22390:18;22386:161;;22444:19;:12;22459:4;22444:19;:::i;:::-;22429:12;:34;22386:161;;;22519:12;22504;:27;22386:161;-1:-1:-1;;;;;22563:23:0;;;;;;:17;:23;;;;;;;:30;;-1:-1:-1;;22563:30:0;22589:4;22563:30;;;;;;22608:16;:23;;-1:-1:-1;;22608:23:0;22563:30;22608:23;;;22661:15;22646:12;:30;22693:21;:28;;-1:-1:-1;;;;22693:28:0;-1:-1:-1;;;22693:28:0;;;22741:34;;;;;;5851:14:1;;5844:22;5826:41;;5814:2;5799:18;;5686:187;22741:34:0;;;;;;;;22179:615;;:::o;24026:698::-;24166:6;;24105:7;;;;-1:-1:-1;;;;;24158:14:0;;;24166:6;;24158:14;24154:197;;;-1:-1:-1;24202:7:0;;24154:197;;;24237:6;;-1:-1:-1;;;;;24231:12:0;;;24237:6;;24231:12;24227:124;;;-1:-1:-1;24273:8:0;;24227:124;;;-1:-1:-1;24327:12:0;;24227:124;24367:20;24378:4;24384:2;24367:10;:20::i;:::-;24363:141;;;24407:13;;:18;;:41;;;24429:13;;24446:2;24429:19;;24407:41;24403:90;;;24469:8;;;24403:90;24516:17;6951:5;24536:19;24545:10;24536:6;:19;:::i;:::-;:38;;;;:::i;:::-;24603:4;24587:22;;;;:7;:22;;;;;:35;;24516:58;;-1:-1:-1;24516:58:0;;24587:22;;;:35;;24516:58;;24587:35;:::i;:::-;;;;-1:-1:-1;;24638:40:0;;12340:25:1;;;24661:4:0;;-1:-1:-1;;;;;24638:40:0;;;;;12328:2:1;12313:18;24638:40:0;;;;;;;24698:18;24707:9;24698:6;:18;:::i;:::-;24691:25;24026:698;-1:-1:-1;;;;;;24026:698:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:404::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;-1:-1:-1;1013:2:1;998:18;;985:32;1026:33;985:32;1026:33;:::i;:::-;1078:7;1068:17;;;687:404;;;;;:::o;1489:456::-;1566:6;1574;1582;1635:2;1623:9;1614:7;1610:23;1606:32;1603:52;;;1651:1;1648;1641:12;1603:52;1690:9;1677:23;1709:31;1734:5;1709:31;:::i;:::-;1759:5;-1:-1:-1;1816:2:1;1801:18;;1788:32;1829:33;1788:32;1829:33;:::i;:::-;1489:456;;1881:7;;-1:-1:-1;;;1935:2:1;1920:18;;;;1907:32;;1489:456::o;1950:315::-;2015:6;2023;2076:2;2064:9;2055:7;2051:23;2047:32;2044:52;;;2092:1;2089;2082:12;2044:52;2131:9;2118:23;2150:31;2175:5;2150:31;:::i;:::-;2200:5;-1:-1:-1;2224:35:1;2255:2;2240:18;;2224:35;:::i;:::-;2214:45;;1950:315;;;;;:::o;2270:::-;2338:6;2346;2399:2;2387:9;2378:7;2374:23;2370:32;2367:52;;;2415:1;2412;2405:12;2367:52;2454:9;2441:23;2473:31;2498:5;2473:31;:::i;:::-;2523:5;2575:2;2560:18;;;;2547:32;;-1:-1:-1;;;2270:315:1:o;2590:180::-;2646:6;2699:2;2687:9;2678:7;2674:23;2670:32;2667:52;;;2715:1;2712;2705:12;2667:52;2738:26;2754:9;2738:26;:::i;2775:248::-;2837:6;2845;2898:2;2886:9;2877:7;2873:23;2869:32;2866:52;;;2914:1;2911;2904:12;2866:52;2937:26;2953:9;2937:26;:::i;3028:180::-;3087:6;3140:2;3128:9;3119:7;3115:23;3111:32;3108:52;;;3156:1;3153;3146:12;3108:52;-1:-1:-1;3179:23:1;;3028:180;-1:-1:-1;3028:180:1:o;3213:248::-;3281:6;3289;3342:2;3330:9;3321:7;3317:23;3313:32;3310:52;;;3358:1;3355;3348:12;3310:52;-1:-1:-1;;3381:23:1;;;3451:2;3436:18;;;3423:32;;-1:-1:-1;3213:248:1:o;3466:316::-;3543:6;3551;3559;3612:2;3600:9;3591:7;3587:23;3583:32;3580:52;;;3628:1;3625;3618:12;3580:52;-1:-1:-1;;3651:23:1;;;3721:2;3706:18;;3693:32;;-1:-1:-1;3772:2:1;3757:18;;;3744:32;;3466:316;-1:-1:-1;3466:316:1:o;3787:306::-;3875:6;3883;3891;3944:2;3932:9;3923:7;3919:23;3915:32;3912:52;;;3960:1;3957;3950:12;3912:52;3989:9;3983:16;3973:26;;4039:2;4028:9;4024:18;4018:25;4008:35;;4083:2;4072:9;4068:18;4062:25;4052:35;;3787:306;;;;;:::o;4098:385::-;4184:6;4192;4200;4208;4261:3;4249:9;4240:7;4236:23;4232:33;4229:53;;;4278:1;4275;4268:12;4229:53;-1:-1:-1;;4301:23:1;;;4371:2;4356:18;;4343:32;;-1:-1:-1;4422:2:1;4407:18;;4394:32;;4473:2;4458:18;4445:32;;-1:-1:-1;4098:385:1;-1:-1:-1;4098:385:1:o;6135:597::-;6247:4;6276:2;6305;6294:9;6287:21;6337:6;6331:13;6380:6;6375:2;6364:9;6360:18;6353:34;6405:1;6415:140;6429:6;6426:1;6423:13;6415:140;;;6524:14;;;6520:23;;6514:30;6490:17;;;6509:2;6486:26;6479:66;6444:10;;6415:140;;;6573:6;6570:1;6567:13;6564:91;;;6643:1;6638:2;6629:6;6618:9;6614:22;6610:31;6603:42;6564:91;-1:-1:-1;6716:2:1;6695:15;-1:-1:-1;;6691:29:1;6676:45;;;;6723:2;6672:54;;6135:597;-1:-1:-1;;;6135:597:1:o;12376:1026::-;12638:4;12686:3;12675:9;12671:19;12717:6;12706:9;12699:25;12743:2;12781:6;12776:2;12765:9;12761:18;12754:34;12824:3;12819:2;12808:9;12804:18;12797:31;12848:6;12883;12877:13;12914:6;12906;12899:22;12952:3;12941:9;12937:19;12930:26;;12991:2;12983:6;12979:15;12965:29;;13012:1;13022:218;13036:6;13033:1;13030:13;13022:218;;;13101:13;;-1:-1:-1;;;;;13097:62:1;13085:75;;13215:15;;;;13180:12;;;;13058:1;13051:9;13022:218;;;-1:-1:-1;;;;;;;13296:55:1;;;;13291:2;13276:18;;13269:83;-1:-1:-1;;;13383:3:1;13368:19;13361:35;13257:3;12376:1026;-1:-1:-1;;;12376:1026:1:o;13920:128::-;13960:3;13991:1;13987:6;13984:1;13981:13;13978:39;;;13997:18;;:::i;:::-;-1:-1:-1;14033:9:1;;13920:128::o;14053:274::-;14093:1;14119;14109:189;;-1:-1:-1;;;14151:1:1;14144:88;14255:4;14252:1;14245:15;14283:4;14280:1;14273:15;14109:189;-1:-1:-1;14312:9:1;;14053:274::o;14332:168::-;14372:7;14438:1;14434;14430:6;14426:14;14423:1;14420:21;14415:1;14408:9;14401:17;14397:45;14394:71;;;14445:18;;:::i;:::-;-1:-1:-1;14485:9:1;;14332:168::o;14505:125::-;14545:4;14573:1;14570;14567:8;14564:34;;;14578:18;;:::i;:::-;-1:-1:-1;14615:9:1;;14505:125::o;14635:437::-;14714:1;14710:12;;;;14757;;;14778:61;;14832:4;14824:6;14820:17;14810:27;;14778:61;14885:2;14877:6;14874:14;14854:18;14851:38;14848:218;;;-1:-1:-1;;;14919:1:1;14912:88;15023:4;15020:1;15013:15;15051:4;15048:1;15041:15;14848:218;;14635:437;;;:::o;15077:135::-;15116:3;-1:-1:-1;;15137:17:1;;15134:43;;;15157:18;;:::i;:::-;-1:-1:-1;15204:1:1;15193:13;;15077:135::o;15217:184::-;-1:-1:-1;;;15266:1:1;15259:88;15366:4;15363:1;15356:15;15390:4;15387:1;15380:15;15406:184;-1:-1:-1;;;15455:1:1;15448:88;15555:4;15552:1;15545:15;15579:4;15576:1;15569:15;15784:154;-1:-1:-1;;;;;15863:5:1;15859:54;15852:5;15849:65;15839:93;;15928:1;15925;15918:12;15839:93;15784:154;:::o

Swarm Source

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