ETH Price: $2,517.28 (+2.57%)

Token

Attention-Deficit/Hyperactivity Disorder (ADHD)
 

Overview

Max Total Supply

420,690,000,000,000 ADHD

Holders

7

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
6,943,961,114,780.675923671342564658 ADHD

Value
$0.00
0xe6ac3ec406f7ce2b3346e55a682461612e872cff
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:
ADHD

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// Sources flattened with hardhat v2.7.0 https://hardhat.org

// File @openzeppelin/contracts/utils/[email protected]
// SPDX-License-Identifier: MIT

// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

pragma solidity ^0.8.0;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) { return _name; }
    function symbol() public view virtual override returns (string memory) { return _symbol; }
    function decimals() public view virtual override returns (uint8) { return 18; }
    function totalSupply() public view virtual override returns (uint256) { return _totalSupply; }
    function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; }
    function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }
        return true;
    }

    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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            _totalSupply -= amount;
        }
        emit Transfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn,
        uint amountOutMin, address[] calldata path, address to, uint deadline) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint amountOutMin,
        address[] calldata path, address to, uint deadline) external payable;

    function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin,
        uint256 amountETHMin, address to, uint256 deadline) external payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}

interface IDexFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

contract ADHD is ERC20, Ownable {
    IDexRouter public dexRouter;
    address public lpPair;

    address devAddress;
    address operationsAddress;

    uint256 public maxTxAmount;
    uint256 public maxWalletAmount;
    uint256 public swapTokensAtAmount;

    struct Set { uint256 dev; uint256 operations; uint256 burn; uint256 liquidity; }

    Set public tokensFor;
    Set public buyFees;
    Set public sellFees;
    uint256 public buyTotalFees;
    uint256 public sellTotalFees;

    uint256 public tradingActiveBlock = 0;
    uint256 public deadBlocks = 1;
    uint256 public blockForPenaltyEnd;
    mapping (address => bool) public boughtEarly;
    uint256 public botsCaught;

    bool private swapping;
    bool public limitsInEffect  = true;
    bool public tradingActive   = false;
    bool public swapEnabled     = false;
 
    bool public transferDelayEnabled = true;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTx;

    mapping (address => bool) public automatedMarketMakerPairs;

    event EnabledTrading();
    event ExcludedFromFees(address indexed account, bool isExcluded);
    event ExcludedFromMaxTx(address _address, bool excluded);
    event UpdatedMaxTxAmount(uint256 newAmount);
    event UpdatedMaxWalletAmount(uint256 newAmount);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event OwnerForcedSwapBack(uint256 timestamp);
    event CaughtEarlyBuyer(address bot);
    event RemovedLimits();

    constructor () ERC20 ("Attention-Deficit/Hyperactivity Disorder", unicode"ADHD") {
        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        excludeFromMaxTxAmount(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 420690000000000 * 1e18;
        maxTxAmount         = totalSupply * 20 / 1e3; // 2.0%
        maxWalletAmount     = totalSupply * 20 / 1e3; // 2.0%
        swapTokensAtAmount  = totalSupply * 5 / 1e4; // 0.05%

        buyFees             = Set(15, 0, 0, 0); // dev, operations, burn, liquidity
        sellFees            = Set(20, 0, 0, 0);

        buyTotalFees        = buyFees.dev + buyFees.operations + buyFees.burn + buyFees.liquidity;
        sellTotalFees       = sellFees.dev + sellFees.operations + sellFees.burn + sellFees.liquidity;

        devAddress          = msg.sender;
        operationsAddress   = msg.sender;

        excludeFromMaxTxAmount(msg.sender, true);
        excludeFromMaxTxAmount(address(this), true);
        excludeFromMaxTxAmount(address(0xdead), true);

        excludeFromFees(msg.sender, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
         _createInitialSupply(msg.sender, totalSupply);
    }

    receive() external payable { }

    function setOperationsAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0), "_operationsAddress address cannot be 0");
        operationsAddress = payable(_operationsAddress);
        excludeFromMaxTxAmount(operationsAddress, true);
        excludeFromFees(operationsAddress, true);
    }

    function enableTrading(uint256 _deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading.");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        if (_deadBlocks == 0) deadBlocks = 1;
        else deadBlocks = _deadBlocks;
        blockForPenaltyEnd = tradingActiveBlock + deadBlocks;
        emit EnabledTrading();
    }

    function excludeFromFees(address _account, bool _excluded) public onlyOwner {
        _isExcludedFromFees[_account] = _excluded;
        emit ExcludedFromFees(_account, _excluded);
    }

    function excludeFromMaxTxAmount(address _account, bool _excluded) public onlyOwner {
        if (_excluded == false) { require(_account != lpPair, "Cannot include Uniswap pair from maxTxAmount restriction."); }
        _isExcludedMaxTx[_account] = _excluded;
        emit ExcludedFromMaxTx(_account, _excluded);
    }

    function updateMaxTx(uint256 _newAmount) external onlyOwner {
        require(_newAmount >= (totalSupply() * 2 / 1e3) / 1e18, "Cannot set maxTxAmount lower than 0.2%");
        maxTxAmount = _newAmount * 1e18;
        emit UpdatedMaxTxAmount(maxTxAmount);
    }

    function updateMaxWallet(uint256 _newAmount) external onlyOwner {
        require(_newAmount >= (totalSupply() * 3 / 1e3) / 1e18, "Cannot set maxWalletAmount lower than 0.3%");
        maxWalletAmount = _newAmount * 1e18;
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    function updateSwapTokens(uint256 _newAmount) external onlyOwner {
  	    require(_newAmount >= totalSupply() * 1 / 1e5, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(_newAmount <= totalSupply() * 1 / 1e4, "Swap amount cannot be higher than 0.1% total supply.");
  	    swapTokensAtAmount = _newAmount;
  	}

    function setBuyFees(uint256 _devFee, uint256 _operationsFee, uint256 _burnFee, uint256 _liquidityFee) external onlyOwner {
        buyFees.dev         = _devFee;
        buyFees.operations  = _operationsFee;
        buyFees.burn        = _burnFee;
        buyFees.liquidity   = _liquidityFee;
        buyTotalFees        = buyFees.dev + buyFees.operations + buyFees.burn + buyFees.liquidity;
        require(buyTotalFees <= 30, "Cannot set buyTotalFees higher than 30%");
    }

    function setSellFees(uint256 _devFee, uint256 _operationsFee, uint256 _burnFee, uint256 _liquidityFee) external onlyOwner {
        sellFees.dev        = _devFee;
        sellFees.operations = _operationsFee;
        sellFees.burn       = _burnFee;
        sellFees.liquidity  = _liquidityFee;
        sellTotalFees = sellFees.dev + sellFees.operations + sellFees.burn + sellFees.liquidity;
        require(sellTotalFees <= 99, "Cannot set sellTotalFees higher than 99%");
    }

    function setAutomatedMarketMakerPair(address _pair, bool _value) external onlyOwner {
        require(_pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs.");

        _setAutomatedMarketMakerPair(_pair, _value);
        emit SetAutomatedMarketMakerPair(_pair, _value);
    }

    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction.");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }

    ////

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");

        if (!tradingActive) {
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        if (blockForPenaltyEnd > 0) {
            require(!boughtEarly[from] || to == owner() || to == address(0xdead), "Bots cannot transfer tokens in or out except to owner or dead address.");
        }

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
                if (transferDelayEnabled) {
                    if (to != address(dexRouter) && to != address(lpPair)) {
                        require(_holderLastTransferTimestamp[tx.origin] < block.number - 2 && _holderLastTransferTimestamp[to] < block.number - 2, "_transfer:: Transfer delay enabled. Try again later.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }
    
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTx[to]) { // Buy
                    require(amount <= maxTxAmount, "Cannot exceed the maxTxAmount.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot exceed the maxWalletAmount.");
                }
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTx[from]) { // Sell
                    require(amount <= maxTxAmount, "Cannot exceed the maxTxAmount.");
                }
                else if (!_isExcludedMaxTx[to]) {
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot exceed the maxWalletAmount.");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        uint256 fees = 0;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { // takeFee
            if (earlyBuyPenaltyInEffect() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0) { // botPenalty
                if (!boughtEarly[to]) {
                    boughtEarly[to] = true;
                    botsCaught += 1;
                    emit CaughtEarlyBuyer(to);
                }

                fees = amount * 99 / 100;
        	    tokensFor.dev += fees * buyFees.dev / buyTotalFees;
                tokensFor.operations += fees * buyFees.operations / buyTotalFees;
                tokensFor.burn += fees * buyFees.burn / buyTotalFees;
                tokensFor.liquidity += fees * buyFees.liquidity / buyTotalFees;
            }
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { // Buy
        	    fees = amount * buyTotalFees / 100;
        	    tokensFor.dev += fees * buyFees.dev / buyTotalFees;
                tokensFor.operations += fees * buyFees.operations / buyTotalFees;
                tokensFor.burn += fees * buyFees.burn / buyTotalFees;
                tokensFor.liquidity += fees * buyFees.liquidity / buyTotalFees;
            }
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { // Sell
                fees = amount * sellTotalFees / 100;
                tokensFor.dev += fees * sellFees.dev / sellTotalFees;
                tokensFor.operations += fees * sellFees.operations / sellTotalFees;
                tokensFor.burn += fees * sellFees.burn / sellTotalFees;
                tokensFor.liquidity += fees * sellFees.liquidity / sellTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

        	amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function earlyBuyPenaltyInEffect() public view returns (bool) {
        return block.number < blockForPenaltyEnd;
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        excludeFromMaxTxAmount(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

        _approve(address(this), address(dexRouter), tokenAmount);

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(dexRouter), tokenAmount);

        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            address(0xdead),
            block.timestamp
        );
    }

    function swapBack() private {
        if (tokensFor.burn > 0 && balanceOf(address(this)) >= tokensFor.burn) {
            _burn(address(this), tokensFor.burn);
        }
        tokensFor.burn = 0;

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensFor.dev + tokensFor.operations + tokensFor.liquidity;

        if (contractBalance == 0 || totalTokensToSwap == 0) { return; }

        if (contractBalance > swapTokensAtAmount * 60) {
            contractBalance = swapTokensAtAmount * 60;
        }

        uint256 liquidityTokens = contractBalance * tokensFor.liquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForOperations = ethBalance * tokensFor.operations / (totalTokensToSwap - (tokensFor.liquidity / 2));
        uint256 ethForDev = ethBalance * tokensFor.dev / (totalTokensToSwap - (tokensFor.liquidity / 2));

        ethForLiquidity -= ethForOperations + ethForDev;

        tokensFor.dev = 0;
        tokensFor.operations = 0;
        tokensFor.liquidity = 0;
        tokensFor.burn = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        bool success;
        (success,) = address(devAddress).call{value: ethForDev}("");
        (success,) = address(operationsAddress).call{value: address(this).balance}("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","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":"address","name":"bot","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludedFromMaxTx","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxTxAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"operations","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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 IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_excluded","type":"bool"}],"name":"excludeFromMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","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":[],"name":"limitsInEffect","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":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"operations","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensFor","outputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"operations","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"updateMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"updateSwapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000601b556001601c556020805464ffffffff0019166401000001001790553480156200003057600080fd5b506040518060600160405280602881526020016200383a602891396040805180820190915260048152631051121160e21b6020820152600362000074838262000844565b50600462000083828262000844565b5050506000620000986200045d60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa1580156200014c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000172919062000910565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e6919062000910565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a919062000910565b600780546001600160a01b0319166001600160a01b039290921691821790556200028690600162000461565b6007546200029f906001600160a01b03166001620005a4565b6d14bddab3e51a57cff87a500000006103e8620002be82601462000958565b620002ca919062000978565b600a556103e8620002dd82601462000958565b620002e9919062000978565b600b55612710620002fc82600562000958565b62000308919062000978565b600c556040805160808082018352600f808352600060208085018290528486018290526060948501829052601183905560128290556013829055601482815586519485018752808552908401829052948301819052919092018190526015929092556016829055601782905560188290558190620003889082906200099b565b6200039491906200099b565b620003a091906200099b565b601955601854601754601654601554620003bb91906200099b565b620003c791906200099b565b620003d391906200099b565b601a5560088054336001600160a01b0319918216811790925560098054909116821790556200040490600162000461565b6200041130600162000461565b6200042061dead600162000461565b6200042d33600162000610565b6200043a30600162000610565b6200044961dead600162000610565b620004553382620006ba565b5050620009b1565b3390565b6005546001600160a01b03163314620004b05760405162461bcd60e51b815260206004820181905260248201526000805160206200381a83398151915260448201526064015b60405180910390fd5b80151560000362000541576007546001600160a01b0390811690831603620005415760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f7420696e636c75646520556e697377617020706169722066726f6d60448201527f206d61785478416d6f756e74207265737472696374696f6e2e000000000000006064820152608401620004a7565b6001600160a01b038216600081815260236020908152604091829020805460ff19168515159081179091558251938452908301527f77a0fec448da1c340eddbf781d9ff0520a78d5a35fd142eaaec4e04a81157a0f910160405180910390a15050565b6001600160a01b0382166000908152602460205260409020805460ff1916821515179055620005d4828262000461565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b031633146200065b5760405162461bcd60e51b815260206004820181905260248201526000805160206200381a8339815191526044820152606401620004a7565b6001600160a01b038216600081815260226020908152604091829020805460ff191685151590811790915591519182527f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb910160405180910390a25050565b6001600160a01b038216620007125760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004a7565b80600260008282546200072691906200099b565b90915550506001600160a01b03821660009081526020819052604081208054839290620007559084906200099b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620007ca57607f821691505b602082108103620007eb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200083f57600081815260208120601f850160051c810160208610156200081a5750805b601f850160051c820191505b818110156200083b5782815560010162000826565b5050505b505050565b81516001600160401b038111156200086057620008606200079f565b6200087881620008718454620007b5565b84620007f1565b602080601f831160018114620008b05760008415620008975750858301515b600019600386901b1c1916600185901b1785556200083b565b600085815260208120601f198616915b82811015620008e157888601518255948401946001909101908401620008c0565b5085821015620009005787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200092357600080fd5b81516001600160a01b03811681146200093b57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000972576200097262000942565b92915050565b6000826200099657634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000972576200097262000942565b612e5980620009c16000396000f3fe6080604052600436106102b25760003560e01c806382aa7c6811610175578063bbc0c742116100dc578063e0f3ccf511610095578063ee40166e1161006f578063ee40166e14610892578063f2fde38b146108a8578063f5648a4f146108c8578063fabb0b4f146108dd57600080fd5b8063e0f3ccf514610836578063e2f4560514610859578063e4748b9e1461086f57600080fd5b8063bbc0c74214610758578063c024666814610778578063c2d0ffca14610798578063c876d0b9146107b8578063d85ba063146107da578063dd62ed3e146107f057600080fd5b80639a7a23d61161012e5780639a7a23d61461069c578063a457c2d7146106bc578063a62068ce146106dc578063a9059cbb146106f2578063aa4bde2814610712578063b62496f51461072857600080fd5b806382aa7c68146105d357806385ecfd28146105f3578063882c3d98146106235780638c0b5e22146106535780638da5cb5b1461066957806395d89b411461068757600080fd5b8063499b8394116102195780636b0a894c116101d25780636b0a894c146105325780636c5b2855146105485780636ddd17131461056857806370a0823114610589578063715018a6146105a9578063751039fc146105be57600080fd5b8063499b8394146104915780634a62bb65146104b157806351f205e4146104d057806358a6d531146104e5578063595cc84f146104fc5780636a486a8e1461051c57600080fd5b806323b872dd1161026b57806323b872dd146103b2578063313ce567146103d25780633373d18f146103ee5780633950935114610431578063452ed4f11461045157806346f1f5de1461047157600080fd5b806306fdde03146102be5780630758d924146102e9578063095ea7b314610321578063178d9b8e1461035157806318160ddd146103735780631c499ab01461039257600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d36108f3565b6040516102e091906129f8565b60405180910390f35b3480156102f557600080fd5b50600654610309906001600160a01b031681565b6040516001600160a01b0390911681526020016102e0565b34801561032d57600080fd5b5061034161033c366004612a5b565b610985565b60405190151581526020016102e0565b34801561035d57600080fd5b5061037161036c366004612a87565b61099c565b005b34801561037f57600080fd5b506002545b6040519081526020016102e0565b34801561039e57600080fd5b506103716103ad366004612ab9565b610a6e565b3480156103be57600080fd5b506103416103cd366004612ad2565b610b7c565b3480156103de57600080fd5b50604051601281526020016102e0565b3480156103fa57600080fd5b50600d54600e54600f546010546104119392919084565b6040805194855260208501939093529183015260608201526080016102e0565b34801561043d57600080fd5b5061034161044c366004612a5b565b610c26565b34801561045d57600080fd5b50600754610309906001600160a01b031681565b34801561047d57600080fd5b5061037161048c366004612ab9565b610c62565b34801561049d57600080fd5b506103716104ac366004612b13565b610dad565b3480156104bd57600080fd5b5060205461034190610100900460ff1681565b3480156104dc57600080fd5b50610371610e7f565b3480156104f157600080fd5b50601d544310610341565b34801561050857600080fd5b50610371610517366004612b37565b610f85565b34801561052857600080fd5b50610384601a5481565b34801561053e57600080fd5b50610384601f5481565b34801561055457600080fd5b50610371610563366004612a87565b6110a0565b34801561057457600080fd5b50602054610341906301000000900460ff1681565b34801561059557600080fd5b506103846105a4366004612b13565b611164565b3480156105b557600080fd5b5061037161117f565b3480156105ca57600080fd5b506103716111f3565b3480156105df57600080fd5b506103716105ee366004612ab9565b611256565b3480156105ff57600080fd5b5061034161060e366004612b13565b601e6020526000908152604090205460ff1681565b34801561062f57600080fd5b5061034161063e366004612b13565b60236020526000908152604090205460ff1681565b34801561065f57600080fd5b50610384600a5481565b34801561067557600080fd5b506005546001600160a01b0316610309565b34801561069357600080fd5b506102d3611348565b3480156106a857600080fd5b506103716106b7366004612b37565b611357565b3480156106c857600080fd5b506103416106d7366004612a5b565b61144b565b3480156106e857600080fd5b50610384601d5481565b3480156106fe57600080fd5b5061034161070d366004612a5b565b6114e4565b34801561071e57600080fd5b50610384600b5481565b34801561073457600080fd5b50610341610743366004612b13565b60246020526000908152604090205460ff1681565b34801561076457600080fd5b506020546103419062010000900460ff1681565b34801561078457600080fd5b50610371610793366004612b37565b6114f1565b3480156107a457600080fd5b506103716107b3366004612ab9565b61157a565b3480156107c457600080fd5b5060205461034190640100000000900460ff1681565b3480156107e657600080fd5b5061038460195481565b3480156107fc57600080fd5b5061038461080b366004612b75565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561084257600080fd5b506015546016546017546018546104119392919084565b34801561086557600080fd5b50610384600c5481565b34801561087b57600080fd5b506011546012546013546014546104119392919084565b34801561089e57600080fd5b50610384601b5481565b3480156108b457600080fd5b506103716108c3366004612b13565b61167d565b3480156108d457600080fd5b50610371611768565b3480156108e957600080fd5b50610384601c5481565b60606003805461090290612ba3565b80601f016020809104026020016040519081016040528092919081815260200182805461092e90612ba3565b801561097b5780601f106109505761010080835404028352916020019161097b565b820191906000526020600020905b81548152906001019060200180831161095e57829003601f168201915b5050505050905090565b60006109923384846117d4565b5060015b92915050565b6005546001600160a01b031633146109cf5760405162461bcd60e51b81526004016109c690612bdd565b60405180910390fd5b601184905560128390556013829055601481905580826109ef8587612c28565b6109f99190612c28565b610a039190612c28565b6019819055601e1015610a685760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742073657420627579546f74616c4665657320686967686572207460448201526668616e2033302560c81b60648201526084016109c6565b50505050565b6005546001600160a01b03163314610a985760405162461bcd60e51b81526004016109c690612bdd565b670de0b6b3a76400006103e8610aad60025490565b610ab8906003612c3b565b610ac29190612c52565b610acc9190612c52565b811015610b2e5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d617857616c6c6574416d6f756e74206c6f776572604482015269207468616e20302e332560b01b60648201526084016109c6565b610b4081670de0b6b3a7640000612c3b565b600b8190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b6000610b898484846118f9565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c0e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109c6565b610c1b85338584036117d4565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610992918590610c5d908690612c28565b6117d4565b6005546001600160a01b03163314610c8c5760405162461bcd60e51b81526004016109c690612bdd565b620186a0610c9960025490565b610ca4906001612c3b565b610cae9190612c52565b811015610d1b5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016109c6565b612710610d2760025490565b610d32906001612c3b565b610d3c9190612c52565b811115610da85760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b60648201526084016109c6565b600c55565b6005546001600160a01b03163314610dd75760405162461bcd60e51b81526004016109c690612bdd565b6001600160a01b038116610e3c5760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b60648201526084016109c6565b600980546001600160a01b0319166001600160a01b038316908117909155610e65906001610f85565b600954610e7c906001600160a01b031660016114f1565b50565b6005546001600160a01b03163314610ea95760405162461bcd60e51b81526004016109c690612bdd565b600c54610eb530611164565b1015610f335760405162461bcd60e51b815260206004820152604160248201527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152601760f91b608482015260a4016109c6565b6020805460ff19166001179055610f486122ff565b6020805460ff191681556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb32910160405180910390a1565b6005546001600160a01b03163314610faf5760405162461bcd60e51b81526004016109c690612bdd565b80151560000361103d576007546001600160a01b039081169083160361103d5760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f7420696e636c75646520556e697377617020706169722066726f6d60448201527f206d61785478416d6f756e74207265737472696374696f6e2e0000000000000060648201526084016109c6565b6001600160a01b038216600081815260236020908152604091829020805460ff19168515159081179091558251938452908301527f77a0fec448da1c340eddbf781d9ff0520a78d5a35fd142eaaec4e04a81157a0f910160405180910390a15050565b6005546001600160a01b031633146110ca5760405162461bcd60e51b81526004016109c690612bdd565b601584905560168390556017829055601881905580826110ea8587612c28565b6110f49190612c28565b6110fe9190612c28565b601a81905560631015610a685760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f74207365742073656c6c546f74616c4665657320686967686572206044820152677468616e2039392560c01b60648201526084016109c6565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146111a95760405162461bcd60e51b81526004016109c690612bdd565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461121d5760405162461bcd60e51b81526004016109c690612bdd565b6020805464ff0000ff00191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146112805760405162461bcd60e51b81526004016109c690612bdd565b60205462010000900460ff16156112d95760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74207265656e61626c652074726164696e672e000000000000000060448201526064016109c6565b6020805463ffff00001916630101000017905543601b556000819003611303576001601c55611309565b601c8190555b601c54601b546113199190612c28565b601d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a150565b60606004805461090290612ba3565b6005546001600160a01b031633146113815760405162461bcd60e51b81526004016109c690612bdd565b6007546001600160a01b03908116908316036114055760405162461bcd60e51b815260206004820152603a60248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972732e00000000000060648201526084016109c6565b61140f8282612547565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114cd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109c6565b6114da33858584036117d4565b5060019392505050565b60006109923384846118f9565b6005546001600160a01b0316331461151b5760405162461bcd60e51b81526004016109c690612bdd565b6001600160a01b038216600081815260226020908152604091829020805460ff191685151590811790915591519182527f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb910160405180910390a25050565b6005546001600160a01b031633146115a45760405162461bcd60e51b81526004016109c690612bdd565b670de0b6b3a76400006103e86115b960025490565b6115c4906002612c3b565b6115ce9190612c52565b6115d89190612c52565b8110156116365760405162461bcd60e51b815260206004820152602660248201527f43616e6e6f7420736574206d61785478416d6f756e74206c6f776572207468616044820152656e20302e322560d01b60648201526084016109c6565b61164881670de0b6b3a7640000612c3b565b600a8190556040519081527f9f5e246af7c18550ffbb625af523d90c3be8c2f4c33faede31f8005c517200fa90602001610b71565b6005546001600160a01b031633146116a75760405162461bcd60e51b81526004016109c690612bdd565b6001600160a01b03811661170c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109c6565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146117925760405162461bcd60e51b81526004016109c690612bdd565b604051600090339047908381818185875af1925050503d8060008114610a68576040519150601f19603f3d011682016040523d82523d6000602084013e610a68565b6001600160a01b0383166118365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109c6565b6001600160a01b0382166118975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109c6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661191f5760405162461bcd60e51b81526004016109c690612c74565b6001600160a01b0382166119455760405162461bcd60e51b81526004016109c690612cb9565b600081116119955760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016109c6565b60205462010000900460ff16611a29576001600160a01b03831660009081526022602052604090205460ff16806119e457506001600160a01b03821660009081526022602052604090205460ff165b611a295760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109c6565b601d5415611afc576001600160a01b0383166000908152601e602052604090205460ff161580611a6657506005546001600160a01b038381169116145b80611a7b57506001600160a01b03821661dead145b611afc5760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a4016109c6565b602054610100900460ff1615611e8a576005546001600160a01b03848116911614801590611b3857506005546001600160a01b03838116911614155b8015611b4c57506001600160a01b03821615155b8015611b6357506001600160a01b03821661dead14155b8015611b8857506001600160a01b03831660009081526022602052604090205460ff16155b8015611bad57506001600160a01b03821660009081526022602052604090205460ff16155b15611e8a57602054640100000000900460ff1615611ccd576006546001600160a01b03838116911614801590611bf157506007546001600160a01b03838116911614155b15611ccd57611c01600243612cfc565b32600090815260216020526040902054108015611c3f5750611c24600243612cfc565b6001600160a01b038316600090815260216020526040902054105b611ca85760405162461bcd60e51b815260206004820152603460248201527f5f7472616e736665723a3a205472616e736665722064656c617920656e61626c60448201527332b217102a393c9030b3b0b4b7103630ba32b91760611b60648201526084016109c6565b3260009081526021602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526024602052604090205460ff168015611d0e57506001600160a01b03821660009081526023602052604090205460ff16155b15611d9e57600a54811115611d655760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742065786365656420746865206d61785478416d6f756e742e000060448201526064016109c6565b600b54611d7183611164565b611d7b9083612c28565b1115611d995760405162461bcd60e51b81526004016109c690612d0f565b611e8a565b6001600160a01b03821660009081526024602052604090205460ff168015611ddf57506001600160a01b03831660009081526023602052604090205460ff16155b15611e3657600a54811115611d995760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742065786365656420746865206d61785478416d6f756e742e000060448201526064016109c6565b6001600160a01b03821660009081526023602052604090205460ff16611e8a57600b54611e6283611164565b611e6c9083612c28565b1115611e8a5760405162461bcd60e51b81526004016109c690612d0f565b6000611e9530611164565b600c5490915081108015908190611eb557506020546301000000900460ff165b8015611ec4575060205460ff16155b8015611ee957506001600160a01b03851660009081526024602052604090205460ff16155b8015611f0e57506001600160a01b03851660009081526022602052604090205460ff16155b8015611f3357506001600160a01b03841660009081526022602052604090205460ff16155b15611f58576020805460ff19166001179055611f4d6122ff565b6020805460ff191690555b6001600160a01b03851660009081526022602052604081205460ff1680611f9757506001600160a01b03851660009081526022602052604090205460ff165b156122ec57601d5443108015611fc557506001600160a01b03861660009081526024602052604090205460ff165b8015611fea57506001600160a01b03851660009081526024602052604090205460ff16155b8015611ff857506000601954115b1561217d576001600160a01b0385166000908152601e602052604090205460ff16612098576001600160a01b0385166000908152601e60205260408120805460ff19166001908117909155601f805491929091612056908490612c28565b90915550506040516001600160a01b03861681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b60646120a5856063612c3b565b6120af9190612c52565b601954601154919250906120c39083612c3b565b6120cd9190612c52565b600d80546000906120df908490612c28565b90915550506019546012546120f49083612c3b565b6120fe9190612c52565b600e8054600090612110908490612c28565b90915550506019546013546121259083612c3b565b61212f9190612c52565b600f8054600090612141908490612c28565b90915550506019546014546121569083612c3b565b6121609190612c52565b60108054600090612172908490612c28565b909155506122ce9050565b6001600160a01b03861660009081526024602052604090205460ff1680156121a757506000601954115b156121bc576064601954856120a59190612c3b565b6001600160a01b03851660009081526024602052604090205460ff1680156121e657506000601a54115b156122ce576064601a54856121fb9190612c3b565b6122059190612c52565b601a54601554919250906122199083612c3b565b6122239190612c52565b600d8054600090612235908490612c28565b9091555050601a5460165461224a9083612c3b565b6122549190612c52565b600e8054600090612266908490612c28565b9091555050601a5460175461227b9083612c3b565b6122859190612c52565b600f8054600090612297908490612c28565b9091555050601a546018546122ac9083612c3b565b6122b69190612c52565b601080546000906122c8908490612c28565b90915550505b80156122df576122df863083612575565b6122e98185612cfc565b93505b6122f7868686612575565b505050505050565b600f541580159061231a5750600f5461231730611164565b10155b1561232e5761232e30600d600201546126ca565b6000600f81905561233e30611164565b601054600e54600d549293506000926123579190612c28565b6123619190612c28565b905081158061236e575080155b15612377575050565b600c5461238590603c612c3b565b82111561239d57600c5461239a90603c612c3b565b91505b6000600282600d60030154856123b39190612c3b565b6123bd9190612c52565b6123c79190612c52565b90506123db6123d68285612cfc565b6127f4565b601054479081906000906123f190600290612c52565b6123fb9086612cfc565b600e546124089085612c3b565b6124129190612c52565b905060006002600d600301546124289190612c52565b6124329087612cfc565b600d5461243f9086612c3b565b6124499190612c52565b90506124558183612c28565b61245f9084612cfc565b6000600d819055600e8190556010819055600f55925084158015906124845750600083115b15612493576124938584612946565b6008546040516000916001600160a01b03169083908381818185875af1925050503d80600081146124e0576040519150601f19603f3d011682016040523d82523d6000602084013e6124e5565b606091505b50506009546040519192506001600160a01b0316904790600081818185875af1925050503d8060008114612535576040519150601f19603f3d011682016040523d82523d6000602084013e61253a565b606091505b5050505050505050505050565b6001600160a01b0382166000908152602460205260409020805460ff191682151517905561140f8282610f85565b6001600160a01b03831661259b5760405162461bcd60e51b81526004016109c690612c74565b6001600160a01b0382166125c15760405162461bcd60e51b81526004016109c690612cb9565b6001600160a01b038316600090815260208190526040902054818110156126395760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109c6565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612670908490612c28565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126bc91815260200190565b60405180910390a350505050565b6001600160a01b03821661272a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109c6565b6001600160a01b0382166000908152602081905260409020548181101561279e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109c6565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016118ec565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061282957612829612d51565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a69190612d67565b816001815181106128b9576128b9612d51565b6001600160a01b0392831660209182029290920101526006546128df91309116846117d4565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612918908590600090869030904290600401612d84565b600060405180830381600087803b15801561293257600080fd5b505af11580156122f7573d6000803e3d6000fd5b60065461295e9030906001600160a01b0316846117d4565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156129cc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129f19190612df5565b5050505050565b600060208083528351808285015260005b81811015612a2557858101830151858201604001528201612a09565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e7c57600080fd5b60008060408385031215612a6e57600080fd5b8235612a7981612a46565b946020939093013593505050565b60008060008060808587031215612a9d57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215612acb57600080fd5b5035919050565b600080600060608486031215612ae757600080fd5b8335612af281612a46565b92506020840135612b0281612a46565b929592945050506040919091013590565b600060208284031215612b2557600080fd5b8135612b3081612a46565b9392505050565b60008060408385031215612b4a57600080fd5b8235612b5581612a46565b915060208301358015158114612b6a57600080fd5b809150509250929050565b60008060408385031215612b8857600080fd5b8235612b9381612a46565b91506020830135612b6a81612a46565b600181811c90821680612bb757607f821691505b602082108103612bd757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561099657610996612c12565b808202811582820484141761099657610996612c12565b600082612c6f57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561099657610996612c12565b60208082526022908201527f43616e6e6f742065786365656420746865206d617857616c6c6574416d6f756e6040820152613a1760f11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612d7957600080fd5b8151612b3081612a46565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612dd45784516001600160a01b031683529383019391830191600101612daf565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612e0a57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d9e1ff11d19b4a0518b52ac20f44afe24d2ed092344a1cbf5be3f7c2919e779b64736f6c634300081200334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572417474656e74696f6e2d446566696369742f48797065726163746976697479204469736f72646572

Deployed Bytecode

0x6080604052600436106102b25760003560e01c806382aa7c6811610175578063bbc0c742116100dc578063e0f3ccf511610095578063ee40166e1161006f578063ee40166e14610892578063f2fde38b146108a8578063f5648a4f146108c8578063fabb0b4f146108dd57600080fd5b8063e0f3ccf514610836578063e2f4560514610859578063e4748b9e1461086f57600080fd5b8063bbc0c74214610758578063c024666814610778578063c2d0ffca14610798578063c876d0b9146107b8578063d85ba063146107da578063dd62ed3e146107f057600080fd5b80639a7a23d61161012e5780639a7a23d61461069c578063a457c2d7146106bc578063a62068ce146106dc578063a9059cbb146106f2578063aa4bde2814610712578063b62496f51461072857600080fd5b806382aa7c68146105d357806385ecfd28146105f3578063882c3d98146106235780638c0b5e22146106535780638da5cb5b1461066957806395d89b411461068757600080fd5b8063499b8394116102195780636b0a894c116101d25780636b0a894c146105325780636c5b2855146105485780636ddd17131461056857806370a0823114610589578063715018a6146105a9578063751039fc146105be57600080fd5b8063499b8394146104915780634a62bb65146104b157806351f205e4146104d057806358a6d531146104e5578063595cc84f146104fc5780636a486a8e1461051c57600080fd5b806323b872dd1161026b57806323b872dd146103b2578063313ce567146103d25780633373d18f146103ee5780633950935114610431578063452ed4f11461045157806346f1f5de1461047157600080fd5b806306fdde03146102be5780630758d924146102e9578063095ea7b314610321578063178d9b8e1461035157806318160ddd146103735780631c499ab01461039257600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d36108f3565b6040516102e091906129f8565b60405180910390f35b3480156102f557600080fd5b50600654610309906001600160a01b031681565b6040516001600160a01b0390911681526020016102e0565b34801561032d57600080fd5b5061034161033c366004612a5b565b610985565b60405190151581526020016102e0565b34801561035d57600080fd5b5061037161036c366004612a87565b61099c565b005b34801561037f57600080fd5b506002545b6040519081526020016102e0565b34801561039e57600080fd5b506103716103ad366004612ab9565b610a6e565b3480156103be57600080fd5b506103416103cd366004612ad2565b610b7c565b3480156103de57600080fd5b50604051601281526020016102e0565b3480156103fa57600080fd5b50600d54600e54600f546010546104119392919084565b6040805194855260208501939093529183015260608201526080016102e0565b34801561043d57600080fd5b5061034161044c366004612a5b565b610c26565b34801561045d57600080fd5b50600754610309906001600160a01b031681565b34801561047d57600080fd5b5061037161048c366004612ab9565b610c62565b34801561049d57600080fd5b506103716104ac366004612b13565b610dad565b3480156104bd57600080fd5b5060205461034190610100900460ff1681565b3480156104dc57600080fd5b50610371610e7f565b3480156104f157600080fd5b50601d544310610341565b34801561050857600080fd5b50610371610517366004612b37565b610f85565b34801561052857600080fd5b50610384601a5481565b34801561053e57600080fd5b50610384601f5481565b34801561055457600080fd5b50610371610563366004612a87565b6110a0565b34801561057457600080fd5b50602054610341906301000000900460ff1681565b34801561059557600080fd5b506103846105a4366004612b13565b611164565b3480156105b557600080fd5b5061037161117f565b3480156105ca57600080fd5b506103716111f3565b3480156105df57600080fd5b506103716105ee366004612ab9565b611256565b3480156105ff57600080fd5b5061034161060e366004612b13565b601e6020526000908152604090205460ff1681565b34801561062f57600080fd5b5061034161063e366004612b13565b60236020526000908152604090205460ff1681565b34801561065f57600080fd5b50610384600a5481565b34801561067557600080fd5b506005546001600160a01b0316610309565b34801561069357600080fd5b506102d3611348565b3480156106a857600080fd5b506103716106b7366004612b37565b611357565b3480156106c857600080fd5b506103416106d7366004612a5b565b61144b565b3480156106e857600080fd5b50610384601d5481565b3480156106fe57600080fd5b5061034161070d366004612a5b565b6114e4565b34801561071e57600080fd5b50610384600b5481565b34801561073457600080fd5b50610341610743366004612b13565b60246020526000908152604090205460ff1681565b34801561076457600080fd5b506020546103419062010000900460ff1681565b34801561078457600080fd5b50610371610793366004612b37565b6114f1565b3480156107a457600080fd5b506103716107b3366004612ab9565b61157a565b3480156107c457600080fd5b5060205461034190640100000000900460ff1681565b3480156107e657600080fd5b5061038460195481565b3480156107fc57600080fd5b5061038461080b366004612b75565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561084257600080fd5b506015546016546017546018546104119392919084565b34801561086557600080fd5b50610384600c5481565b34801561087b57600080fd5b506011546012546013546014546104119392919084565b34801561089e57600080fd5b50610384601b5481565b3480156108b457600080fd5b506103716108c3366004612b13565b61167d565b3480156108d457600080fd5b50610371611768565b3480156108e957600080fd5b50610384601c5481565b60606003805461090290612ba3565b80601f016020809104026020016040519081016040528092919081815260200182805461092e90612ba3565b801561097b5780601f106109505761010080835404028352916020019161097b565b820191906000526020600020905b81548152906001019060200180831161095e57829003601f168201915b5050505050905090565b60006109923384846117d4565b5060015b92915050565b6005546001600160a01b031633146109cf5760405162461bcd60e51b81526004016109c690612bdd565b60405180910390fd5b601184905560128390556013829055601481905580826109ef8587612c28565b6109f99190612c28565b610a039190612c28565b6019819055601e1015610a685760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742073657420627579546f74616c4665657320686967686572207460448201526668616e2033302560c81b60648201526084016109c6565b50505050565b6005546001600160a01b03163314610a985760405162461bcd60e51b81526004016109c690612bdd565b670de0b6b3a76400006103e8610aad60025490565b610ab8906003612c3b565b610ac29190612c52565b610acc9190612c52565b811015610b2e5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d617857616c6c6574416d6f756e74206c6f776572604482015269207468616e20302e332560b01b60648201526084016109c6565b610b4081670de0b6b3a7640000612c3b565b600b8190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b6000610b898484846118f9565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c0e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109c6565b610c1b85338584036117d4565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610992918590610c5d908690612c28565b6117d4565b6005546001600160a01b03163314610c8c5760405162461bcd60e51b81526004016109c690612bdd565b620186a0610c9960025490565b610ca4906001612c3b565b610cae9190612c52565b811015610d1b5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016109c6565b612710610d2760025490565b610d32906001612c3b565b610d3c9190612c52565b811115610da85760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b60648201526084016109c6565b600c55565b6005546001600160a01b03163314610dd75760405162461bcd60e51b81526004016109c690612bdd565b6001600160a01b038116610e3c5760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b60648201526084016109c6565b600980546001600160a01b0319166001600160a01b038316908117909155610e65906001610f85565b600954610e7c906001600160a01b031660016114f1565b50565b6005546001600160a01b03163314610ea95760405162461bcd60e51b81526004016109c690612bdd565b600c54610eb530611164565b1015610f335760405162461bcd60e51b815260206004820152604160248201527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152601760f91b608482015260a4016109c6565b6020805460ff19166001179055610f486122ff565b6020805460ff191681556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb32910160405180910390a1565b6005546001600160a01b03163314610faf5760405162461bcd60e51b81526004016109c690612bdd565b80151560000361103d576007546001600160a01b039081169083160361103d5760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f7420696e636c75646520556e697377617020706169722066726f6d60448201527f206d61785478416d6f756e74207265737472696374696f6e2e0000000000000060648201526084016109c6565b6001600160a01b038216600081815260236020908152604091829020805460ff19168515159081179091558251938452908301527f77a0fec448da1c340eddbf781d9ff0520a78d5a35fd142eaaec4e04a81157a0f910160405180910390a15050565b6005546001600160a01b031633146110ca5760405162461bcd60e51b81526004016109c690612bdd565b601584905560168390556017829055601881905580826110ea8587612c28565b6110f49190612c28565b6110fe9190612c28565b601a81905560631015610a685760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f74207365742073656c6c546f74616c4665657320686967686572206044820152677468616e2039392560c01b60648201526084016109c6565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146111a95760405162461bcd60e51b81526004016109c690612bdd565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461121d5760405162461bcd60e51b81526004016109c690612bdd565b6020805464ff0000ff00191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146112805760405162461bcd60e51b81526004016109c690612bdd565b60205462010000900460ff16156112d95760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f74207265656e61626c652074726164696e672e000000000000000060448201526064016109c6565b6020805463ffff00001916630101000017905543601b556000819003611303576001601c55611309565b601c8190555b601c54601b546113199190612c28565b601d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a150565b60606004805461090290612ba3565b6005546001600160a01b031633146113815760405162461bcd60e51b81526004016109c690612bdd565b6007546001600160a01b03908116908316036114055760405162461bcd60e51b815260206004820152603a60248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972732e00000000000060648201526084016109c6565b61140f8282612547565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156114cd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109c6565b6114da33858584036117d4565b5060019392505050565b60006109923384846118f9565b6005546001600160a01b0316331461151b5760405162461bcd60e51b81526004016109c690612bdd565b6001600160a01b038216600081815260226020908152604091829020805460ff191685151590811790915591519182527f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb910160405180910390a25050565b6005546001600160a01b031633146115a45760405162461bcd60e51b81526004016109c690612bdd565b670de0b6b3a76400006103e86115b960025490565b6115c4906002612c3b565b6115ce9190612c52565b6115d89190612c52565b8110156116365760405162461bcd60e51b815260206004820152602660248201527f43616e6e6f7420736574206d61785478416d6f756e74206c6f776572207468616044820152656e20302e322560d01b60648201526084016109c6565b61164881670de0b6b3a7640000612c3b565b600a8190556040519081527f9f5e246af7c18550ffbb625af523d90c3be8c2f4c33faede31f8005c517200fa90602001610b71565b6005546001600160a01b031633146116a75760405162461bcd60e51b81526004016109c690612bdd565b6001600160a01b03811661170c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109c6565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146117925760405162461bcd60e51b81526004016109c690612bdd565b604051600090339047908381818185875af1925050503d8060008114610a68576040519150601f19603f3d011682016040523d82523d6000602084013e610a68565b6001600160a01b0383166118365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109c6565b6001600160a01b0382166118975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109c6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661191f5760405162461bcd60e51b81526004016109c690612c74565b6001600160a01b0382166119455760405162461bcd60e51b81526004016109c690612cb9565b600081116119955760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016109c6565b60205462010000900460ff16611a29576001600160a01b03831660009081526022602052604090205460ff16806119e457506001600160a01b03821660009081526022602052604090205460ff165b611a295760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109c6565b601d5415611afc576001600160a01b0383166000908152601e602052604090205460ff161580611a6657506005546001600160a01b038381169116145b80611a7b57506001600160a01b03821661dead145b611afc5760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a4016109c6565b602054610100900460ff1615611e8a576005546001600160a01b03848116911614801590611b3857506005546001600160a01b03838116911614155b8015611b4c57506001600160a01b03821615155b8015611b6357506001600160a01b03821661dead14155b8015611b8857506001600160a01b03831660009081526022602052604090205460ff16155b8015611bad57506001600160a01b03821660009081526022602052604090205460ff16155b15611e8a57602054640100000000900460ff1615611ccd576006546001600160a01b03838116911614801590611bf157506007546001600160a01b03838116911614155b15611ccd57611c01600243612cfc565b32600090815260216020526040902054108015611c3f5750611c24600243612cfc565b6001600160a01b038316600090815260216020526040902054105b611ca85760405162461bcd60e51b815260206004820152603460248201527f5f7472616e736665723a3a205472616e736665722064656c617920656e61626c60448201527332b217102a393c9030b3b0b4b7103630ba32b91760611b60648201526084016109c6565b3260009081526021602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526024602052604090205460ff168015611d0e57506001600160a01b03821660009081526023602052604090205460ff16155b15611d9e57600a54811115611d655760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742065786365656420746865206d61785478416d6f756e742e000060448201526064016109c6565b600b54611d7183611164565b611d7b9083612c28565b1115611d995760405162461bcd60e51b81526004016109c690612d0f565b611e8a565b6001600160a01b03821660009081526024602052604090205460ff168015611ddf57506001600160a01b03831660009081526023602052604090205460ff16155b15611e3657600a54811115611d995760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742065786365656420746865206d61785478416d6f756e742e000060448201526064016109c6565b6001600160a01b03821660009081526023602052604090205460ff16611e8a57600b54611e6283611164565b611e6c9083612c28565b1115611e8a5760405162461bcd60e51b81526004016109c690612d0f565b6000611e9530611164565b600c5490915081108015908190611eb557506020546301000000900460ff165b8015611ec4575060205460ff16155b8015611ee957506001600160a01b03851660009081526024602052604090205460ff16155b8015611f0e57506001600160a01b03851660009081526022602052604090205460ff16155b8015611f3357506001600160a01b03841660009081526022602052604090205460ff16155b15611f58576020805460ff19166001179055611f4d6122ff565b6020805460ff191690555b6001600160a01b03851660009081526022602052604081205460ff1680611f9757506001600160a01b03851660009081526022602052604090205460ff165b156122ec57601d5443108015611fc557506001600160a01b03861660009081526024602052604090205460ff165b8015611fea57506001600160a01b03851660009081526024602052604090205460ff16155b8015611ff857506000601954115b1561217d576001600160a01b0385166000908152601e602052604090205460ff16612098576001600160a01b0385166000908152601e60205260408120805460ff19166001908117909155601f805491929091612056908490612c28565b90915550506040516001600160a01b03861681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b60646120a5856063612c3b565b6120af9190612c52565b601954601154919250906120c39083612c3b565b6120cd9190612c52565b600d80546000906120df908490612c28565b90915550506019546012546120f49083612c3b565b6120fe9190612c52565b600e8054600090612110908490612c28565b90915550506019546013546121259083612c3b565b61212f9190612c52565b600f8054600090612141908490612c28565b90915550506019546014546121569083612c3b565b6121609190612c52565b60108054600090612172908490612c28565b909155506122ce9050565b6001600160a01b03861660009081526024602052604090205460ff1680156121a757506000601954115b156121bc576064601954856120a59190612c3b565b6001600160a01b03851660009081526024602052604090205460ff1680156121e657506000601a54115b156122ce576064601a54856121fb9190612c3b565b6122059190612c52565b601a54601554919250906122199083612c3b565b6122239190612c52565b600d8054600090612235908490612c28565b9091555050601a5460165461224a9083612c3b565b6122549190612c52565b600e8054600090612266908490612c28565b9091555050601a5460175461227b9083612c3b565b6122859190612c52565b600f8054600090612297908490612c28565b9091555050601a546018546122ac9083612c3b565b6122b69190612c52565b601080546000906122c8908490612c28565b90915550505b80156122df576122df863083612575565b6122e98185612cfc565b93505b6122f7868686612575565b505050505050565b600f541580159061231a5750600f5461231730611164565b10155b1561232e5761232e30600d600201546126ca565b6000600f81905561233e30611164565b601054600e54600d549293506000926123579190612c28565b6123619190612c28565b905081158061236e575080155b15612377575050565b600c5461238590603c612c3b565b82111561239d57600c5461239a90603c612c3b565b91505b6000600282600d60030154856123b39190612c3b565b6123bd9190612c52565b6123c79190612c52565b90506123db6123d68285612cfc565b6127f4565b601054479081906000906123f190600290612c52565b6123fb9086612cfc565b600e546124089085612c3b565b6124129190612c52565b905060006002600d600301546124289190612c52565b6124329087612cfc565b600d5461243f9086612c3b565b6124499190612c52565b90506124558183612c28565b61245f9084612cfc565b6000600d819055600e8190556010819055600f55925084158015906124845750600083115b15612493576124938584612946565b6008546040516000916001600160a01b03169083908381818185875af1925050503d80600081146124e0576040519150601f19603f3d011682016040523d82523d6000602084013e6124e5565b606091505b50506009546040519192506001600160a01b0316904790600081818185875af1925050503d8060008114612535576040519150601f19603f3d011682016040523d82523d6000602084013e61253a565b606091505b5050505050505050505050565b6001600160a01b0382166000908152602460205260409020805460ff191682151517905561140f8282610f85565b6001600160a01b03831661259b5760405162461bcd60e51b81526004016109c690612c74565b6001600160a01b0382166125c15760405162461bcd60e51b81526004016109c690612cb9565b6001600160a01b038316600090815260208190526040902054818110156126395760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109c6565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612670908490612c28565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126bc91815260200190565b60405180910390a350505050565b6001600160a01b03821661272a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109c6565b6001600160a01b0382166000908152602081905260409020548181101561279e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109c6565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016118ec565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061282957612829612d51565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a69190612d67565b816001815181106128b9576128b9612d51565b6001600160a01b0392831660209182029290920101526006546128df91309116846117d4565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612918908590600090869030904290600401612d84565b600060405180830381600087803b15801561293257600080fd5b505af11580156122f7573d6000803e3d6000fd5b60065461295e9030906001600160a01b0316846117d4565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156129cc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129f19190612df5565b5050505050565b600060208083528351808285015260005b81811015612a2557858101830151858201604001528201612a09565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e7c57600080fd5b60008060408385031215612a6e57600080fd5b8235612a7981612a46565b946020939093013593505050565b60008060008060808587031215612a9d57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215612acb57600080fd5b5035919050565b600080600060608486031215612ae757600080fd5b8335612af281612a46565b92506020840135612b0281612a46565b929592945050506040919091013590565b600060208284031215612b2557600080fd5b8135612b3081612a46565b9392505050565b60008060408385031215612b4a57600080fd5b8235612b5581612a46565b915060208301358015158114612b6a57600080fd5b809150509250929050565b60008060408385031215612b8857600080fd5b8235612b9381612a46565b91506020830135612b6a81612a46565b600181811c90821680612bb757607f821691505b602082108103612bd757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561099657610996612c12565b808202811582820484141761099657610996612c12565b600082612c6f57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561099657610996612c12565b60208082526022908201527f43616e6e6f742065786365656420746865206d617857616c6c6574416d6f756e6040820152613a1760f11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612d7957600080fd5b8151612b3081612a46565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612dd45784516001600160a01b031683529383019391830191600101612daf565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612e0a57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d9e1ff11d19b4a0518b52ac20f44afe24d2ed092344a1cbf5be3f7c2919e779b64736f6c63430008120033

Deployed Bytecode Sourcemap

7410:14528:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1806:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7449:27;;;;;;;;;;-1:-1:-1;7449:27:0;;;;-1:-1:-1;;;;;7449:27:0;;;;;;-1:-1:-1;;;;;749:32:1;;;731:51;;719:2;704:18;7449:27:0;567:221:1;2626:169:0;;;;;;;;;;-1:-1:-1;2626:169:0;;;;;:::i;:::-;;:::i;:::-;;;1414:14:1;;1407:22;1389:41;;1377:2;1362:18;2626:169:0;1249:187:1;12804:484:0;;;;;;;;;;-1:-1:-1;12804:484:0;;;;;:::i;:::-;;:::i;:::-;;2079:94;;;;;;;;;;-1:-1:-1;2158:12:0;;2079:94;;;1977:25:1;;;1965:2;1950:18;2079:94:0;1831:177:1;12165:285:0;;;;;;;;;;-1:-1:-1;12165:285:0;;;;;:::i;:::-;;:::i;2803:454::-;;;;;;;;;;-1:-1:-1;2803:454:0;;;;;:::i;:::-;;:::i;1994:79::-;;;;;;;;;;-1:-1:-1;1994:79:0;;2068:2;2801:36:1;;2789:2;2774:18;1994:79:0;2659:184:1;7772:20:0;;;;;;;;;;-1:-1:-1;7772:20:0;;;;;;;;;;;;;;;;;;;3079:25:1;;;3135:2;3120:18;;3113:34;;;;3163:18;;;3156:34;3221:2;3206:18;;3199:34;3066:3;3051:19;7772:20:0;2848:391:1;3265:215:0;;;;;;;;;;-1:-1:-1;3265:215:0;;;;;:::i;:::-;;:::i;7483:21::-;;;;;;;;;;-1:-1:-1;7483:21:0;;;;-1:-1:-1;;;;;7483:21:0;;;12458:338;;;;;;;;;;-1:-1:-1;12458:338:0;;;;;:::i;:::-;;:::i;10585:346::-;;;;;;;;;;-1:-1:-1;10585:346:0;;;;;:::i;:::-;;:::i;8154:34::-;;;;;;;;;;-1:-1:-1;8154:34:0;;;;;;;;;;;14100:313;;;;;;;;;;;;;:::i;19162:121::-;;;;;;;;;;-1:-1:-1;19257:18:0;;19242:12;:33;19162:121;;11563:321;;;;;;;;;;-1:-1:-1;11563:321:0;;;;;:::i;:::-;;:::i;7884:28::-;;;;;;;;;;;;;;;;8092:25;;;;;;;;;;;;;;;;13296:485;;;;;;;;;;-1:-1:-1;13296:485:0;;;;;:::i;:::-;;:::i;8237:35::-;;;;;;;;;;-1:-1:-1;8237:35:0;;;;;;;;;;;2179:113;;;;;;;;;;-1:-1:-1;2179:113:0;;;;;:::i;:::-;;:::i;6149:150::-;;;;;;;;;;;;;:::i;14589:154::-;;;;;;;;;;;;;:::i;10939:419::-;;;;;;;;;;-1:-1:-1;10939:419:0;;;;;:::i;:::-;;:::i;8041:44::-;;;;;;;;;;-1:-1:-1;8041:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8465:49;;;;;;;;;;-1:-1:-1;8465:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7572:26;;;;;;;;;;;;;;;;5935:79;;;;;;;;;;-1:-1:-1;6000:6:0;;-1:-1:-1;;;;;6000:6:0;5935:79;;1898:90;;;;;;;;;;;;;:::i;13789:303::-;;;;;;;;;;-1:-1:-1;13789:303:0;;;;;:::i;:::-;;:::i;3488:411::-;;;;;;;;;;-1:-1:-1;3488:411:0;;;;;:::i;:::-;;:::i;8001:33::-;;;;;;;;;;;;;;;;2443:175;;;;;;;;;;-1:-1:-1;2443:175:0;;;;;:::i;:::-;;:::i;7605:30::-;;;;;;;;;;;;;;;;8523:58;;;;;;;;;;-1:-1:-1;8523:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8195:35;;;;;;;;;;-1:-1:-1;8195:35:0;;;;;;;;;;;11366:189;;;;;;;;;;-1:-1:-1;11366:189:0;;;;;:::i;:::-;;:::i;11892:265::-;;;;;;;;;;-1:-1:-1;11892:265:0;;;;;:::i;:::-;;:::i;8282:39::-;;;;;;;;;;-1:-1:-1;8282:39:0;;;;;;;;;;;7850:27;;;;;;;;;;;;;;;;2298:137;;;;;;;;;;-1:-1:-1;2298:137:0;;;;;:::i;:::-;-1:-1:-1;;;;;2405:18:0;;;2387:7;2405:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2298:137;7824:19;;;;;;;;;;-1:-1:-1;7824:19:0;;;;;;;;;;;;;;;7642:33;;;;;;;;;;;;;;;;7799:18;;;;;;;;;;-1:-1:-1;7799:18:0;;;;;;;;;;;;;;;7921:37;;;;;;;;;;;;;;;;6307:244;;;;;;;;;;-1:-1:-1;6307:244:0;;;;;:::i;:::-;;:::i;14421:160::-;;;;;;;;;;;;;:::i;7965:29::-;;;;;;;;;;;;;;;;1806:86;1860:13;1884:5;1877:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1806:86;:::o;2626:169::-;2709:4;2726:39;353:10;2749:7;2758:6;2726:8;:39::i;:::-;-1:-1:-1;2783:4:0;2626:169;;;;;:::o;12804:484::-;6062:6;;-1:-1:-1;;;;;6062:6:0;353:10;6062:22;6054:67;;;;-1:-1:-1;;;6054:67:0;;;;;;;:::i;:::-;;;;;;;;;12936:7:::1;:29:::0;;;12976:18;:36;;;13023:12;:30;;;13064:17;:35;;;13086:13;13045:8;13132:32:::1;12998:14:::0;12958:7;13132:32:::1;:::i;:::-;:47;;;;:::i;:::-;:67;;;;:::i;:::-;13110:12;:89:::0;;;13234:2:::1;-1:-1:-1::0;13218:18:0::1;13210:70;;;::::0;-1:-1:-1;;;13210:70:0;;5728:2:1;13210:70:0::1;::::0;::::1;5710:21:1::0;5767:2;5747:18;;;5740:30;5806:34;5786:18;;;5779:62;-1:-1:-1;;;5857:18:1;;;5850:37;5904:19;;13210:70:0::1;5526:403:1::0;13210:70:0::1;12804:484:::0;;;;:::o;12165:285::-;6062:6;;-1:-1:-1;;;;;6062:6:0;353:10;6062:22;6054:67;;;;-1:-1:-1;;;6054:67:0;;;;;;;:::i;:::-;12290:4:::1;12283:3;12263:13;2158:12:::0;;;2079:94;12263:13:::1;:17;::::0;12279:1:::1;12263:17;:::i;:::-;:23;;;;:::i;:::-;12262:32;;;;:::i;:::-;12248:10;:46;;12240:101;;;::::0;-1:-1:-1;;;12240:101:0;;6531:2:1;12240:101:0::1;::::0;::::1;6513:21:1::0;6570:2;6550:18;;;6543:30;6609:34;6589:18;;;6582:62;-1:-1:-1;;;6660:18:1;;;6653:40;6710:19;;12240:101:0::1;6329:406:1::0;12240:101:0::1;12370:17;:10:::0;12383:4:::1;12370:17;:::i;:::-;12352:15;:35:::0;;;12403:39:::1;::::0;1977:25:1;;;12403:39:0::1;::::0;1965:2:1;1950:18;12403:39:0::1;;;;;;;;12165:285:::0;:::o;2803:454::-;2909:4;2926:36;2936:6;2944:9;2955:6;2926:9;:36::i;:::-;-1:-1:-1;;;;;3000:19:0;;2973:24;3000:19;;;:11;:19;;;;;;;;353:10;3000:33;;;;;;;;3052:26;;;;3044:79;;;;-1:-1:-1;;;3044:79:0;;6942:2:1;3044:79:0;;;6924:21:1;6981:2;6961:18;;;6954:30;7020:34;7000:18;;;6993:62;-1:-1:-1;;;7071:18:1;;;7064:38;7119:19;;3044:79:0;6740:404:1;3044:79:0;3159:57;3168:6;353:10;3209:6;3190:16;:25;3159:8;:57::i;:::-;-1:-1:-1;3245:4:0;;2803:454;-1:-1:-1;;;;2803:454:0:o;3265:215::-;353:10;3353:4;3402:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3402:34:0;;;;;;;;;;3353:4;;3370:80;;3393:7;;3402:47;;3439:10;;3402:47;:::i;:::-;3370:8;:80::i;12458:338::-;6062:6;;-1:-1:-1;;;;;6062:6:0;353:10;6062:22;6054:67;;;;-1:-1:-1;;;6054:67:0;;;;;;;:::i;:::-;12575:3:::1;12555:13;2158:12:::0;;;2079:94;12555:13:::1;:17;::::0;12571:1:::1;12555:17;:::i;:::-;:23;;;;:::i;:::-;12541:10;:37;;12533:103;;;::::0;-1:-1:-1;;;12533:103:0;;7351:2:1;12533:103:0::1;::::0;::::1;7333:21:1::0;7390:2;7370:18;;;7363:30;7429:34;7409:18;;;7402:62;-1:-1:-1;;;7480:18:1;;;7473:51;7541:19;;12533:103:0::1;7149:417:1::0;12533:103:0::1;12688:3;12668:13;2158:12:::0;;;2079:94;12668:13:::1;:17;::::0;12684:1:::1;12668:17;:::i;:::-;:23;;;;:::i;:::-;12654:10;:37;;12646:102;;;::::0;-1:-1:-1;;;12646:102:0;;7773:2:1;12646:102:0::1;::::0;::::1;7755:21:1::0;7812:2;7792:18;;;7785:30;7851:34;7831:18;;;7824:62;-1:-1:-1;;;7902:18:1;;;7895:50;7962:19;;12646:102:0::1;7571:416:1::0;12646:102:0::1;12758:18;:31:::0;12458:338::o;10585:346::-;6062:6;;-1:-1:-1;;;;;6062:6:0;353:10;6062:22;6054:67;;;;-1:-1:-1;;;6054:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10681:32:0;::::1;10673:83;;;::::0;-1:-1:-1;;;10673:83:0;;8194:2:1;10673:83:0::1;::::0;::::1;8176:21:1::0;8233:2;8213:18;;;8206:30;8272:34;8252:18;;;8245:62;-1:-1:-1;;;8323:18:1;;;8316:36;8369:19;;10673:83:0::1;7992:402:1::0;10673:83:0::1;10767:17;:47:::0;;-1:-1:-1;;;;;;10767:47:0::1;-1:-1:-1::0;;;;;10767:47:0;::::1;::::0;;::::1;::::0;;;10825::::1;::::0;-1:-1:-1;10825:22:0::1;:47::i;:::-;10899:17;::::0;10883:40:::1;::::0;-1:-1:-1;;;;;10899:17:0::1;::::0;10883:15:::1;:40::i;:::-;10585:346:::0;:::o;14100:313::-;6062:6;;-1:-1:-1;;;;;6062:6:0;353:10;6062:22;6054:67;;;;-1:-1:-1;;;6054:67:0;;;;;;;:::i;:::-;14191:18:::1;;14163:24;14181:4;14163:9;:24::i;:::-;:46;;14155:124;;;::::0;-1:-1:-1;;;14155:124:0;;8601:2:1;14155:124:0::1;::::0;::::1;8583:21:1::0;8640:2;8620:18;;;8613:30;8679:34;8659:18;;;8652:62;8750:34;8730:18;;;8723:62;-1:-1:-1;;;8801:19:1;;;8794:32;8843:19;;14155:124:0::1;8399:469:1::0;14155:124:0::1;14290:8;:15:::0;;-1:-1:-1;;14290:15:0::1;14301:4;14290:15;::::0;;14316:10:::1;:8;:10::i;:::-;14337:8;:16:::0;;-1:-1:-1;;14337:16:0::1;::::0;;14369:36:::1;::::0;14389:15:::1;1977:25:1::0;;14369:36:0::1;::::0;1950:18:1;14369:36:0::1;;;;;;;14100:313::o:0;11563:321::-;6062:6;;-1:-1:-1;;;;;6062:6:0;353:10;6062:22;6054:67;;;;-1:-1:-1;;;6054:67:0;;;;;;;:::i;:::-;11661:18;::::1;;11674:5;11661:18:::0;11657:117:::1;;11703:6;::::0;-1:-1:-1;;;;;11703:6:0;;::::1;11691:18:::0;;::::1;::::0;11683:88:::1;;;::::0;-1:-1:-1;;;11683:88:0;;9075:2:1;11683:88:0::1;::::0;::::1;9057:21:1::0;9114:2;9094:18;;;9087:30;9153:34;9133:18;;;9126:62;9224:27;9204:18;;;9197:55;9269:19;;11683:88:0::1;8873:421:1::0;11683:88:0::1;-1:-1:-1::0;;;;;11784:26:0;::::1;;::::0;;;:16:::1;:26;::::0;;;;;;;;:38;;-1:-1:-1;;11784:38:0::1;::::0;::::1;;::::0;;::::1;::::0;;;11838;;9467:51:1;;;9534:18;;;9527:50;11838:38:0::1;::::0;9440:18:1;11838:38:0::1;;;;;;;11563:321:::0;;:::o;13296:485::-;6062:6;;-1:-1:-1;;;;;6062:6:0;353:10;6062:22;6054:67;;;;-1:-1:-1;;;6054:67:0;;;;;;;:::i;:::-;13429:8:::1;:29:::0;;;13469:19;:36;;;13516:13;:30;;;13557:18;:35;;;13579:13;13538:8;13619:34:::1;13491:14:::0;13451:7;13619:34:::1;:::i;:::-;:50;;;;:::i;:::-;:71;;;;:::i;:::-;13603:13;:87:::0;;;13726:2:::1;-1:-1:-1::0;13709:19:0::1;13701:72;;;::::0;-1:-1:-1;;;13701:72:0;;9790:2:1;13701:72:0::1;::::0;::::1;9772:21:1::0;9829:2;9809:18;;;9802:30;9868:34;9848:18;;;9841:62;-1:-1:-1;;;9919:18:1;;;9912:38;9967:19;;13701:72:0::1;9588:404:1::0;2179:113:0;-1:-1:-1;;;;;2271:18:0;2253:7;2271:18;;;;;;;;;;;;2179:113::o;6149:150::-;6062:6;;-1:-1:-1;;;;;6062:6:0;353:10;6062:22;6054:67;;;;-1:-1:-1;;;6054:67:0;;;;;;;:::i;:::-;6242:6:::1;::::0;6221:40:::1;::::0;6258:1:::1;::::0;-1:-1:-1;;;;;6242:6:0::1;::::0;6221:40:::1;::::0;6258:1;;6221:40:::1;6272:6;:19:::0;;-1:-1:-1;;;;;;6272:19:0::1;::::0;;6149:150::o;14589:154::-;6062:6;;-1:-1:-1;;;;;6062:6:0;353:10;6062:22;6054:67;;;;-1:-1:-1;;;6054:67:0;;;;;;;:::i;:::-;14643:14:::1;:22:::0;;-1:-1:-1;;14676:28:0;;;14720:15:::1;::::0;::::1;::::0;14660:5:::1;::::0;14720:15:::1;14589:154::o:0;10939:419::-;6062:6;;-1:-1:-1;;;;;6062:6:0;353:10;6062:22;6054:67;;;;-1:-1:-1;;;6054:67:0;;;;;;;:::i;:::-;11022:13:::1;::::0;;;::::1;;;11021:14;11013:51;;;::::0;-1:-1:-1;;;11013:51:0;;10199:2:1;11013:51:0::1;::::0;::::1;10181:21:1::0;10238:2;10218:18;;;10211:30;10277:26;10257:18;;;10250:54;10321:18;;11013:51:0::1;9997:348:1::0;11013:51:0::1;11075:13;:20:::0;;-1:-1:-1;;11106:18:0;;;;;11156:12:::1;11135:18;:33:::0;-1:-1:-1;11183:16:0;;;11179:76:::1;;11214:1;11201:10;:14:::0;11179:76:::1;;;11231:10;:24:::0;;;11179:76:::1;11308:10;;11287:18;;:31;;;;:::i;:::-;11266:18;:52:::0;11334:16:::1;::::0;::::1;::::0;;;::::1;10939:419:::0;:::o;1898:90::-;1954:13;1978:7;1971:14;;;;;:::i;13789:303::-;6062:6;;-1:-1:-1;;;;;6062:6:0;353:10;6062:22;6054:67;;;;-1:-1:-1;;;6054:67:0;;;;;;;:::i;:::-;13901:6:::1;::::0;-1:-1:-1;;;;;13901:6:0;;::::1;13892:15:::0;;::::1;::::0;13884:86:::1;;;::::0;-1:-1:-1;;;13884:86:0;;10552:2:1;13884:86:0::1;::::0;::::1;10534:21:1::0;10591:2;10571:18;;;10564:30;10630:34;10610:18;;;10603:62;10701:28;10681:18;;;10674:56;10747:19;;13884:86:0::1;10350:422:1::0;13884:86:0::1;13983:43;14012:5;14019:6;13983:28;:43::i;:::-;14042:42;::::0;;::::1;;::::0;-1:-1:-1;;;;;14042:42:0;::::1;::::0;::::1;::::0;;;::::1;13789:303:::0;;:::o;3488:411::-;353:10;3581:4;3625:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3625:34:0;;;;;;;;;;3678:35;;;;3670:85;;;;-1:-1:-1;;;3670:85:0;;10979:2:1;3670:85:0;;;10961:21:1;11018:2;10998:18;;;10991:30;11057:34;11037:18;;;11030:62;-1:-1:-1;;;11108:18:1;;;11101:35;11153:19;;3670:85:0;10777:401:1;3670:85:0;3791:67;353:10;3814:7;3842:15;3823:16;:34;3791:8;:67::i;:::-;-1:-1:-1;3887:4:0;;3488:411;-1:-1:-1;;;3488:411:0:o;2443:175::-;2529:4;2546:42;353:10;2570:9;2581:6;2546:9;:42::i;11366:189::-;6062:6;;-1:-1:-1;;;;;6062:6:0;353:10;6062:22;6054:67;;;;-1:-1:-1;;;6054:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11453:29:0;::::1;;::::0;;;:19:::1;:29;::::0;;;;;;;;:41;;-1:-1:-1;;11453:41:0::1;::::0;::::1;;::::0;;::::1;::::0;;;11510:37;;1389:41:1;;;11510:37:0::1;::::0;1362:18:1;11510:37:0::1;;;;;;;11366:189:::0;;:::o;11892:265::-;6062:6;;-1:-1:-1;;;;;6062:6:0;353:10;6062:22;6054:67;;;;-1:-1:-1;;;6054:67:0;;;;;;;:::i;:::-;12013:4:::1;12006:3;11986:13;2158:12:::0;;;2079:94;11986:13:::1;:17;::::0;12002:1:::1;11986:17;:::i;:::-;:23;;;;:::i;:::-;11985:32;;;;:::i;:::-;11971:10;:46;;11963:97;;;::::0;-1:-1:-1;;;11963:97:0;;11385:2:1;11963:97:0::1;::::0;::::1;11367:21:1::0;11424:2;11404:18;;;11397:30;11463:34;11443:18;;;11436:62;-1:-1:-1;;;11514:18:1;;;11507:36;11560:19;;11963:97:0::1;11183:402:1::0;11963:97:0::1;12085:17;:10:::0;12098:4:::1;12085:17;:::i;:::-;12071:11;:31:::0;;;12118::::1;::::0;1977:25:1;;;12118:31:0::1;::::0;1965:2:1;1950:18;12118:31:0::1;1831:177:1::0;6307:244:0;6062:6;;-1:-1:-1;;;;;6062:6:0;353:10;6062:22;6054:67;;;;-1:-1:-1;;;6054:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6396:22:0;::::1;6388:73;;;::::0;-1:-1:-1;;;6388:73:0;;11792:2:1;6388:73:0::1;::::0;::::1;11774:21:1::0;11831:2;11811:18;;;11804:30;11870:34;11850:18;;;11843:62;-1:-1:-1;;;11921:18:1;;;11914:36;11967:19;;6388:73:0::1;11590:402:1::0;6388:73:0::1;6498:6;::::0;6477:38:::1;::::0;-1:-1:-1;;;;;6477:38:0;;::::1;::::0;6498:6:::1;::::0;6477:38:::1;::::0;6498:6:::1;::::0;6477:38:::1;6526:6;:17:::0;;-1:-1:-1;;;;;;6526:17:0::1;-1:-1:-1::0;;;;;6526:17:0;;;::::1;::::0;;;::::1;::::0;;6307:244::o;14421:160::-;6062:6;;-1:-1:-1;;;;;6062:6:0;353:10;6062:22;6054:67;;;;-1:-1:-1;;;6054:67:0;;;;;;;:::i;:::-;14515:58:::1;::::0;14479:12:::1;::::0;14523:10:::1;::::0;14547:21:::1;::::0;14479:12;14515:58;14479:12;14515:58;14547:21;14523:10;14515:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5264:344:::0;-1:-1:-1;;;;;5366:19:0;;5358:68;;;;-1:-1:-1;;;5358:68:0;;12409:2:1;5358:68:0;;;12391:21:1;12448:2;12428:18;;;12421:30;12487:34;12467:18;;;12460:62;-1:-1:-1;;;12538:18:1;;;12531:34;12582:19;;5358:68:0;12207:400:1;5358:68:0;-1:-1:-1;;;;;5445:21:0;;5437:68;;;;-1:-1:-1;;;5437:68:0;;12814:2:1;5437:68:0;;;12796:21:1;12853:2;12833:18;;;12826:30;12892:34;12872:18;;;12865:62;-1:-1:-1;;;12943:18:1;;;12936:32;12985:19;;5437:68:0;12612:398:1;5437:68:0;-1:-1:-1;;;;;5516:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5568:32;;1977:25:1;;;5568:32:0;;1950:18:1;5568:32:0;;;;;;;;5264:344;;;:::o;14763:4391::-;-1:-1:-1;;;;;14861:18:0;;14853:68;;;;-1:-1:-1;;;14853:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14940:16:0;;14932:64;;;;-1:-1:-1;;;14932:64:0;;;;;;;:::i;:::-;15024:1;15015:6;:10;15007:52;;;;-1:-1:-1;;;15007:52:0;;14027:2:1;15007:52:0;;;14009:21:1;14066:2;14046:18;;;14039:30;14105:31;14085:18;;;14078:59;14154:18;;15007:52:0;13825:353:1;15007:52:0;15077:13;;;;;;;15072:134;;-1:-1:-1;;;;;15115:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;15144:23:0;;;;;;:19;:23;;;;;;;;15115:52;15107:87;;;;-1:-1:-1;;;15107:87:0;;14385:2:1;15107:87:0;;;14367:21:1;14424:2;14404:18;;;14397:30;-1:-1:-1;;;14443:18:1;;;14436:52;14505:18;;15107:87:0;14183:346:1;15107:87:0;15222:18;;:22;15218:198;;-1:-1:-1;;;;;15270:17:0;;;;;;:11;:17;;;;;;;;15269:18;;:35;;-1:-1:-1;6000:6:0;;-1:-1:-1;;;;;15291:13:0;;;6000:6;;15291:13;15269:35;:60;;;-1:-1:-1;;;;;;15308:21:0;;15322:6;15308:21;15269:60;15261:143;;;;-1:-1:-1;;;15261:143:0;;14736:2:1;15261:143:0;;;14718:21:1;14775:2;14755:18;;;14748:30;14814:34;14794:18;;;14787:62;14885:34;14865:18;;;14858:62;-1:-1:-1;;;14936:19:1;;;14929:37;14983:19;;15261:143:0;14534:474:1;15261:143:0;15432:14;;;;;;;15428:1420;;;6000:6;;-1:-1:-1;;;;;15467:15:0;;;6000:6;;15467:15;;;;:32;;-1:-1:-1;6000:6:0;;-1:-1:-1;;;;;15486:13:0;;;6000:6;;15486:13;;15467:32;:52;;;;-1:-1:-1;;;;;;15503:16:0;;;;15467:52;:77;;;;-1:-1:-1;;;;;;15523:21:0;;15537:6;15523:21;;15467:77;:107;;;;-1:-1:-1;;;;;;15549:25:0;;;;;;:19;:25;;;;;;;;15548:26;15467:107;:135;;;;-1:-1:-1;;;;;;15579:23:0;;;;;;:19;:23;;;;;;;;15578:24;15467:135;15463:1374;;;15627:20;;;;;;;15623:507;;;15690:9;;-1:-1:-1;;;;;15676:24:0;;;15690:9;;15676:24;;;;:49;;-1:-1:-1;15718:6:0;;-1:-1:-1;;;;;15704:21:0;;;15718:6;;15704:21;;15676:49;15672:439;;;15804:16;15819:1;15804:12;:16;:::i;:::-;15791:9;15762:39;;;;:28;:39;;;;;;:58;:113;;;;-1:-1:-1;15859:16:0;15874:1;15859:12;:16;:::i;:::-;-1:-1:-1;;;;;15824:32:0;;;;;;:28;:32;;;;;;:51;15762:113;15754:178;;;;-1:-1:-1;;;15754:178:0;;15348:2:1;15754:178:0;;;15330:21:1;15387:2;15367:18;;;15360:30;15426:34;15406:18;;;15399:62;-1:-1:-1;;;15477:18:1;;;15470:50;15537:19;;15754:178:0;15146:416:1;15754:178:0;15988:9;15959:39;;;;:28;:39;;;;;;16001:12;15959:54;;;;-1:-1:-1;;;;;16040:32:0;;;;;;:47;15672:439;-1:-1:-1;;;;;16158:31:0;;;;;;:25;:31;;;;;;;;:56;;;;-1:-1:-1;;;;;;16194:20:0;;;;;;:16;:20;;;;;;;;16193:21;16158:56;16154:668;;;16264:11;;16254:6;:21;;16246:64;;;;-1:-1:-1;;;16246:64:0;;15769:2:1;16246:64:0;;;15751:21:1;15808:2;15788:18;;;15781:30;15847:32;15827:18;;;15820:60;15897:18;;16246:64:0;15567:354:1;16246:64:0;16367:15;;16350:13;16360:2;16350:9;:13::i;:::-;16341:22;;:6;:22;:::i;:::-;:41;;16333:88;;;;-1:-1:-1;;;16333:88:0;;;;;;;:::i;:::-;16154:668;;;-1:-1:-1;;;;;16468:29:0;;;;;;:25;:29;;;;;;;;:56;;;;-1:-1:-1;;;;;;16502:22:0;;;;;;:16;:22;;;;;;;;16501:23;16468:56;16464:358;;;16575:11;;16565:6;:21;;16557:64;;;;-1:-1:-1;;;16557:64:0;;15769:2:1;16557:64:0;;;15751:21:1;15808:2;15788:18;;;15781:30;15847:32;15827:18;;;15820:60;15897:18;;16557:64:0;15567:354:1;16464:358:0;-1:-1:-1;;;;;16669:20:0;;;;;;:16;:20;;;;;;;;16664:158;;16748:15;;16731:13;16741:2;16731:9;:13::i;:::-;16722:22;;:6;:22;:::i;:::-;:41;;16714:88;;;;-1:-1:-1;;;16714:88:0;;;;;;;:::i;:::-;16860:28;16891:24;16909:4;16891:9;:24::i;:::-;16967:18;;16860:55;;-1:-1:-1;16943:42:0;;;;;;;17002:22;;-1:-1:-1;17013:11:0;;;;;;;17002:22;:35;;;;-1:-1:-1;17029:8:0;;;;17028:9;17002:35;:71;;;;-1:-1:-1;;;;;;17042:31:0;;;;;;:25;:31;;;;;;;;17041:32;17002:71;:101;;;;-1:-1:-1;;;;;;17078:25:0;;;;;;:19;:25;;;;;;;;17077:26;17002:101;:129;;;;-1:-1:-1;;;;;;17108:23:0;;;;;;:19;:23;;;;;;;;17107:24;17002:129;16998:233;;;17148:8;:15;;-1:-1:-1;;17148:15:0;17159:4;17148:15;;;17178:10;:8;:10::i;:::-;17203:8;:16;;-1:-1:-1;;17203:16:0;;;16998:233;-1:-1:-1;;;;;17274:25:0;;17243:12;17274:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;17303:23:0;;;;;;:19;:23;;;;;;;;17274:52;17270:1831;;;19257:18;;19242:12;:33;17358:60;;;;-1:-1:-1;;;;;;17387:31:0;;;;;;:25;:31;;;;;;;;17358:60;:94;;;;-1:-1:-1;;;;;;17423:29:0;;;;;;:25;:29;;;;;;;;17422:30;17358:94;:114;;;;;17471:1;17456:12;;:16;17358:114;17354:1601;;;-1:-1:-1;;;;;17512:15:0;;;;;;:11;:15;;;;;;;;17507:173;;-1:-1:-1;;;;;17552:15:0;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;17552:22:0;17570:4;17552:22;;;;;;17597:10;:15;;17570:4;;17597:10;;:15;;17570:4;;17597:15;:::i;:::-;;;;-1:-1:-1;;17640:20:0;;-1:-1:-1;;;;;749:32:1;;731:51;;17640:20:0;;719:2:1;704:18;17640:20:0;;;;;;;17507:173;17721:3;17707:11;:6;17716:2;17707:11;:::i;:::-;:17;;;;:::i;:::-;17778:12;;17764:7;:11;17700:24;;-1:-1:-1;17778:12:0;17757:18;;17700:24;17757:18;:::i;:::-;:33;;;;:::i;:::-;17740:9;:50;;:13;;:50;;;;;:::i;:::-;;;;-1:-1:-1;;17861:12:0;;17840:18;;17833:25;;:4;:25;:::i;:::-;:40;;;;:::i;:::-;17809:20;:64;;:20;;:64;;;;;:::i;:::-;;;;-1:-1:-1;;17932:12:0;;17917;;17910:19;;:4;:19;:::i;:::-;:34;;;;:::i;:::-;17892:14;:52;;:14;;:52;;;;;:::i;:::-;;;;-1:-1:-1;;18013:12:0;;17993:17;;17986:24;;:4;:24;:::i;:::-;:39;;;;:::i;:::-;17963:19;:62;;:19;;:62;;;;;:::i;:::-;;;;-1:-1:-1;17354:1601:0;;-1:-1:-1;17354:1601:0;;-1:-1:-1;;;;;18063:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;18113:1;18098:12;;:16;18063:51;18060:895;;;18170:3;18155:12;;18146:6;:21;;;;:::i;18060:895::-;-1:-1:-1;;;;;18513:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;18562:1;18546:13;;:17;18513:50;18509:446;;;18624:3;18608:13;;18599:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;18685:13;;18670:8;:12;18592:35;;-1:-1:-1;18685:13:0;18663:19;;18592:35;18663:19;:::i;:::-;:35;;;;:::i;:::-;18646:9;:52;;:13;;:52;;;;;:::i;:::-;;;;-1:-1:-1;;18770:13:0;;18748:19;;18741:26;;:4;:26;:::i;:::-;:42;;;;:::i;:::-;18717:20;:66;;:20;;:66;;;;;:::i;:::-;;;;-1:-1:-1;;18843:13:0;;18827;;18820:20;;:4;:20;:::i;:::-;:36;;;;:::i;:::-;18802:14;:54;;:14;;:54;;;;;:::i;:::-;;;;-1:-1:-1;;18926:13:0;;18905:18;;18898:25;;:4;:25;:::i;:::-;:41;;;;:::i;:::-;18875:19;:64;;:19;;:64;;;;;:::i;:::-;;;;-1:-1:-1;;18509:446:0;18975:8;;18971:91;;19004:42;19020:4;19034;19041;19004:15;:42::i;:::-;19075:14;19085:4;19075:14;;:::i;:::-;;;17270:1831;19113:33;19129:4;19135:2;19139:6;19113:15;:33::i;:::-;14842:4312;;;14763:4391;;;:::o;20364:1571::-;20407:14;;:18;;;;:64;;-1:-1:-1;20457:14:0;;20429:24;20447:4;20429:9;:24::i;:::-;:42;;20407:64;20403:133;;;20488:36;20502:4;20509:9;:14;;;20488:5;:36::i;:::-;20563:1;20546:14;:18;;;20603:24;20621:4;20603:9;:24::i;:::-;20705:19;;20682:20;;20705:9;20666:13;20577:50;;-1:-1:-1;20638:25:0;;20666:36;;20682:20;20666:36;:::i;:::-;:58;;;;:::i;:::-;20638:86;-1:-1:-1;20741:20:0;;;:46;;-1:-1:-1;20765:22:0;;20741:46;20737:63;;;20791:7;;20364:1571::o;20737:63::-;20834:18;;:23;;20855:2;20834:23;:::i;:::-;20816:15;:41;20812:115;;;20892:18;;:23;;20913:2;20892:23;:::i;:::-;20874:41;;20812:115;20939:23;21025:1;21005:17;20983:9;:19;;;20965:15;:37;;;;:::i;:::-;:57;;;;:::i;:::-;:61;;;;:::i;:::-;20939:87;-1:-1:-1;21039:51:0;21056:33;20939:87;21056:15;:33;:::i;:::-;21039:16;:51::i;:::-;21290:19;;21124:21;;;;21103:18;;21290:23;;21312:1;;21290:23;:::i;:::-;21269:45;;:17;:45;:::i;:::-;21245:20;;21232:33;;:10;:33;:::i;:::-;:83;;;;:::i;:::-;21205:110;;21326:17;21419:1;21397:9;:19;;;:23;;;;:::i;:::-;21376:45;;:17;:45;:::i;:::-;21359:9;:13;21346:26;;:10;:26;:::i;:::-;:76;;;;:::i;:::-;21326:96;-1:-1:-1;21454:28:0;21326:96;21454:16;:28;:::i;:::-;21435:47;;;;:::i;:::-;21511:1;21495:9;:17;;;21523:20;:24;;;21558:19;:23;;;21592:14;:18;21435:47;-1:-1:-1;21627:19:0;;;;;:42;;;21668:1;21650:15;:19;21627:42;21623:121;;;21686:46;21699:15;21716;21686:12;:46::i;:::-;21800:10;;21792:46;;21756:12;;-1:-1:-1;;;;;21800:10:0;;21824:9;;21756:12;21792:46;21756:12;21792:46;21824:9;21800:10;21792:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21870:17:0;;21862:65;;21779:59;;-1:-1:-1;;;;;;21870:17:0;;21901:21;;21862:65;;;;21901:21;21870:17;21862:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;20364:1571:0:o;19291:234::-;-1:-1:-1;;;;;19374:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;19374:39:0;;;;;;;19426:35;19374:31;:39;19426:22;:35::i;3907:576::-;-1:-1:-1;;;;;4013:20:0;;4005:70;;;;-1:-1:-1;;;4005:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4094:23:0;;4086:71;;;;-1:-1:-1;;;4086:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4192:17:0;;4168:21;4192:17;;;;;;;;;;;4228:23;;;;4220:74;;;;-1:-1:-1;;;4220:74:0;;16531:2:1;4220:74:0;;;16513:21:1;16570:2;16550:18;;;16543:30;16609:34;16589:18;;;16582:62;-1:-1:-1;;;16660:18:1;;;16653:36;16706:19;;4220:74:0;16329:402:1;4220:74:0;-1:-1:-1;;;;;4330:17:0;;;:9;:17;;;;;;;;;;;4350:22;;;4330:42;;4394:20;;;;;;;;:30;;4366:6;;4330:9;4394:30;;4366:6;;4394:30;:::i;:::-;;;;;;;;4457:9;-1:-1:-1;;;;;4440:35:0;4449:6;-1:-1:-1;;;;;4440:35:0;;4468:6;4440:35;;;;1977:25:1;;1965:2;1950:18;;1831:177;4440:35:0;;;;;;;;3994:489;3907:576;;;:::o;4788:468::-;-1:-1:-1;;;;;4872:21:0;;4864:67;;;;-1:-1:-1;;;4864:67:0;;16938:2:1;4864:67:0;;;16920:21:1;16977:2;16957:18;;;16950:30;17016:34;16996:18;;;16989:62;-1:-1:-1;;;17067:18:1;;;17060:31;17108:19;;4864:67:0;16736:397:1;4864:67:0;-1:-1:-1;;;;;4967:18:0;;4942:22;4967:18;;;;;;;;;;;5004:24;;;;4996:71;;;;-1:-1:-1;;;4996:71:0;;17340:2:1;4996:71:0;;;17322:21:1;17379:2;17359:18;;;17352:30;17418:34;17398:18;;;17391:62;-1:-1:-1;;;17469:18:1;;;17462:32;17511:19;;4996:71:0;17138:398:1;4996:71:0;-1:-1:-1;;;;;5103:18:0;;:9;:18;;;;;;;;;;;5124:23;;;5103:44;;5162:12;:22;;;;;;;5211:37;1977:25:1;;;5103:9:0;;:18;5211:37;;1950:18:1;5211:37:0;1831:177:1;19533:457:0;19623:16;;;19637:1;19623:16;;;;;;;;19599:21;;19623:16;;;;;;;;;;-1:-1:-1;19623:16:0;19599:40;;19668:4;19650;19655:1;19650:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19650:23:0;;;:7;;;;;;;;;;:23;;;;19694:9;;:16;;;-1:-1:-1;;;19694:16:0;;;;:9;;;;;:14;;:16;;;;;19650:7;;19694:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19684:4;19689:1;19684:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19684:26:0;;;:7;;;;;;;;;:26;19755:9;;19723:56;;19740:4;;19755:9;19767:11;19723:8;:56::i;:::-;19792:9;;:190;;-1:-1:-1;;;19792:190:0;;-1:-1:-1;;;;;19792:9:0;;;;:60;;:190;;19867:11;;19792:9;;19909:4;;19936;;19956:15;;19792:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19998:358;20111:9;;20079:56;;20096:4;;-1:-1:-1;;;;;20111:9:0;20123:11;20079:8;:56::i;:::-;20148:9;;:200;;-1:-1:-1;;;20148:200:0;;20214:4;20148:200;;;19387:34:1;19437:18;;;19430:34;;;20148:9:0;19480:18:1;;;19473:34;;;19523:18;;;19516:34;20300:6:0;19566:19:1;;;19559:44;20322:15:0;19619:19:1;;;19612:35;-1:-1:-1;;;;;20148:9:0;;;;:25;;20181:9;;19321:19:1;;20148:200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19998:358;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;793:131::-;-1:-1:-1;;;;;868:31:1;;858:42;;848:70;;914:1;911;904:12;929:315;997:6;1005;1058:2;1046:9;1037:7;1033:23;1029:32;1026:52;;;1074:1;1071;1064:12;1026:52;1113:9;1100:23;1132:31;1157:5;1132:31;:::i;:::-;1182:5;1234:2;1219:18;;;;1206:32;;-1:-1:-1;;;929:315:1:o;1441:385::-;1527:6;1535;1543;1551;1604:3;1592:9;1583:7;1579:23;1575:33;1572:53;;;1621:1;1618;1611:12;1572:53;-1:-1:-1;;1644:23:1;;;1714:2;1699:18;;1686:32;;-1:-1:-1;1765:2:1;1750:18;;1737:32;;1816:2;1801:18;1788:32;;-1:-1:-1;1441:385:1;-1:-1:-1;1441:385:1:o;2013:180::-;2072:6;2125:2;2113:9;2104:7;2100:23;2096:32;2093:52;;;2141:1;2138;2131:12;2093:52;-1:-1:-1;2164:23:1;;2013:180;-1:-1:-1;2013:180:1:o;2198:456::-;2275:6;2283;2291;2344:2;2332:9;2323:7;2319:23;2315:32;2312:52;;;2360:1;2357;2350:12;2312:52;2399:9;2386:23;2418:31;2443:5;2418:31;:::i;:::-;2468:5;-1:-1:-1;2525:2:1;2510:18;;2497:32;2538:33;2497:32;2538:33;:::i;:::-;2198:456;;2590:7;;-1:-1:-1;;;2644:2:1;2629:18;;;;2616:32;;2198:456::o;3452:247::-;3511:6;3564:2;3552:9;3543:7;3539:23;3535:32;3532:52;;;3580:1;3577;3570:12;3532:52;3619:9;3606:23;3638:31;3663:5;3638:31;:::i;:::-;3688:5;3452:247;-1:-1:-1;;;3452:247:1:o;3704:416::-;3769:6;3777;3830:2;3818:9;3809:7;3805:23;3801:32;3798:52;;;3846:1;3843;3836:12;3798:52;3885:9;3872:23;3904:31;3929:5;3904:31;:::i;:::-;3954:5;-1:-1:-1;4011:2:1;3996:18;;3983:32;4053:15;;4046:23;4034:36;;4024:64;;4084:1;4081;4074:12;4024:64;4107:7;4097:17;;;3704:416;;;;;:::o;4125:388::-;4193:6;4201;4254:2;4242:9;4233:7;4229:23;4225:32;4222:52;;;4270:1;4267;4260:12;4222:52;4309:9;4296:23;4328:31;4353:5;4328:31;:::i;:::-;4378:5;-1:-1:-1;4435:2:1;4420:18;;4407:32;4448:33;4407:32;4448:33;:::i;4518:380::-;4597:1;4593:12;;;;4640;;;4661:61;;4715:4;4707:6;4703:17;4693:27;;4661:61;4768:2;4760:6;4757:14;4737:18;4734:38;4731:161;;4814:10;4809:3;4805:20;4802:1;4795:31;4849:4;4846:1;4839:15;4877:4;4874:1;4867:15;4731:161;;4518:380;;;:::o;4903:356::-;5105:2;5087:21;;;5124:18;;;5117:30;5183:34;5178:2;5163:18;;5156:62;5250:2;5235:18;;4903:356::o;5264:127::-;5325:10;5320:3;5316:20;5313:1;5306:31;5356:4;5353:1;5346:15;5380:4;5377:1;5370:15;5396:125;5461:9;;;5482:10;;;5479:36;;;5495:18;;:::i;5934:168::-;6007:9;;;6038;;6055:15;;;6049:22;;6035:37;6025:71;;6076:18;;:::i;6107:217::-;6147:1;6173;6163:132;;6217:10;6212:3;6208:20;6205:1;6198:31;6252:4;6249:1;6242:15;6280:4;6277:1;6270:15;6163:132;-1:-1:-1;6309:9:1;;6107:217::o;13015:401::-;13217:2;13199:21;;;13256:2;13236:18;;;13229:30;13295:34;13290:2;13275:18;;13268:62;-1:-1:-1;;;13361:2:1;13346:18;;13339:35;13406:3;13391:19;;13015:401::o;13421:399::-;13623:2;13605:21;;;13662:2;13642:18;;;13635:30;13701:34;13696:2;13681:18;;13674:62;-1:-1:-1;;;13767:2:1;13752:18;;13745:33;13810:3;13795:19;;13421:399::o;15013:128::-;15080:9;;;15101:11;;;15098:37;;;15115:18;;:::i;15926:398::-;16128:2;16110:21;;;16167:2;16147:18;;;16140:30;16206:34;16201:2;16186:18;;16179:62;-1:-1:-1;;;16272:2:1;16257:18;;16250:32;16314:3;16299:19;;15926:398::o;17673:127::-;17734:10;17729:3;17725:20;17722:1;17715:31;17765:4;17762:1;17755:15;17789:4;17786:1;17779:15;17805:251;17875:6;17928:2;17916:9;17907:7;17903:23;17899:32;17896:52;;;17944:1;17941;17934:12;17896:52;17976:9;17970:16;17995:31;18020:5;17995:31;:::i;18061:980::-;18323:4;18371:3;18360:9;18356:19;18402:6;18391:9;18384:25;18428:2;18466:6;18461:2;18450:9;18446:18;18439:34;18509:3;18504:2;18493:9;18489:18;18482:31;18533:6;18568;18562:13;18599:6;18591;18584:22;18637:3;18626:9;18622:19;18615:26;;18676:2;18668:6;18664:15;18650:29;;18697:1;18707:195;18721:6;18718:1;18715:13;18707:195;;;18786:13;;-1:-1:-1;;;;;18782:39:1;18770:52;;18877:15;;;;18842:12;;;;18818:1;18736:9;18707:195;;;-1:-1:-1;;;;;;;18958:32:1;;;;18953:2;18938:18;;18931:60;-1:-1:-1;;;19022:3:1;19007:19;19000:35;18919:3;18061:980;-1:-1:-1;;;18061:980:1:o;19658:306::-;19746:6;19754;19762;19815:2;19803:9;19794:7;19790:23;19786:32;19783:52;;;19831:1;19828;19821:12;19783:52;19860:9;19854:16;19844:26;;19910:2;19899:9;19895:18;19889:25;19879:35;;19954:2;19943:9;19939:18;19933:25;19923:35;;19658:306;;;;;:::o

Swarm Source

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