ETH Price: $3,452.40 (+1.11%)
Gas: 16 Gwei

Token

Ghostface Shiba (GFSHIB)
 

Overview

Max Total Supply

1,000,000,000 GFSHIB

Holders

280 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
boa1688.eth
Balance
621,001 GFSHIB

Value
$0.00
0xe1031825e9667178167df00c485911847e4f91fe
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

GhostFace Shiba is an ERC-20 token with a UNIQUE usecase and simple tokenomics. It's trick or treat lottery wheel is one of a kind in the crypto space.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GhostfaceShiba

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-08
*/

/*
Ghostface Shiba $GFSHIB
Telegram: https://t.me/ghostfaceshiba
Website: https://ghostfaceshiba.com/
Twitter: https://twitter.com/GhostFaceShiba

                              ┌▄▄              ,▄▄
                              ╟███▓▄╓∞═^*══w▄█▓██▓
                              ╟▓▓▀⌠╓▄▄█████▄╗¿▀▓▓▓
                             ╒█╜╓▓████████████▓╗"▀▄
                            ▄▌ ╬▓███╜ ╙██▌""▓██▓▓,╙█,
                           ▀▀ ╬▓▓▓▓"   ▓█    ▓▓▓▓╣ ▐▓▄
                          ██▌ ╢▒█▀     ██µ    ╙██▒[ ▄▄▄
                         ▓▓▓▌ ╢▀█▄▄▄▄██▄▄██▄▄▄▄██▒`▐▓▓▓
                  ▄████▄  ███▄ ║▒╢▓▓▓▓▓▀╙▀▓▓▓▓╣╣╣"╓███▀
                  ▀██▀██   ▀███▄ ╜╢╢╢▓▓▄ ▓▓╢╣▒╝╙,▄███└
               ,  "██▓▓▓▄    ▀███▄▄,`╙╙╜╜╜╙",▄▄███▀▀
             ▄██▄  ▓▓▓▓▓▓▄▄▄▄█▄▄▀▀████████████▀▀╓▄█▓▓▓▓█▄
           ▄███▀    ▓▓▓▓▓▓▓▓▓▓▓▓▓██████████████▓▓▓▓▓▓▓▓▓▓█
         ▄██▀└       "▓▓▓▓▓▓▀╓▓▓████████████████▓▓▄▀▀▓▓▓▓▓▓
       ▄█▀▀              ╙╙",▓▓██████████████████▓▓   ▓▓▓▓▓█
      └                     █▓▓██████████████████▌▓█  ▐█████
                            ▓▓▓██████████████████▌▓▓   █████
                           ▐▓▓▓██████████████████╣▓▓
                           ▐▓▓▓▓▓███████████████╣▓▓▓          █,
                           ]▓▓▓▓▓▓▓▓▓███████▓╣▓▓▓▓▓▌╒,     ,▄▓▓▓
                            ▓▓▓▓▓▓▓▀▓▓▓▓▓▓▓▓▀▓▓▓▓▓▓ ▓▓▓███▓▓▓▓▓▓'
                            ╘▓▓▓▓▓▓▓▓r,  ╒▄▓█▓▓▓▓▓▌ ▀▓▓▓▓▓▓▓▓▓▓"
                              ▀▓▓▓▓▓\▄█  j▓▓▓▓▓▓▓▓     "╙▀▀╙'
                                  ═▀▀▀    ██████▀
                                           '└└¬
 
*/
// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.7;

library Address {
    /**
     * C U ON THE MOON
     */
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        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 IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

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

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

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() public 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;
    }
}

contract GhostfaceShiba is IERC20, Ownable {
    using Address for address;
    
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Ghostface Shiba";
    string constant _symbol = "GFSHIB";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 _maxBuyTxAmount = (_totalSupply * 1) / 2000;
    uint256 _maxSellTxAmount = (_totalSupply * 1) / 500;
    uint256 _maxWalletSize = (_totalSupply * 2) / 100;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => uint256) public lastSell;
    mapping (address => uint256) public lastBuy;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) liquidityCreator;

    uint256 marketingFee = 800;
    uint256 liquidityFee = 200;
    uint256 totalFee = marketingFee + liquidityFee;
    uint256 sellBias = 0;
    uint256 feeDenominator = 10000;

    address payable public liquidityFeeReceiver = payable(0x03A7C3c57B1366DdE691F0F2c8c4F113Bc0eEAE3);
    address payable public marketingFeeReceiver = payable(0x03A7C3c57B1366DdE691F0F2c8c4F113Bc0eEAE3);

    IDEXRouter public router;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    mapping (address => bool) liquidityPools;
    mapping (address => uint256) public protected;
    bool protectionEnabled = true;
    bool protectionDisabled = false;
    uint256 protectionLimit;
    uint256 public protectionCount;
    uint256 protectionTimer;

    address public pair;

    uint256 public launchedAt;
    uint256 public launchedTime;
    uint256 public deadBlocks;
    bool startBullRun = false;
    bool pauseDisabled = false;
    uint256 public rateLimit = 2;

    bool public swapEnabled = false;
    bool processEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000;
    uint256 public swapMinimum = _totalSupply / 10000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    mapping (address => bool) teamMember;
    
    modifier onlyTeam() {
        require(teamMember[_msgSender()] || msg.sender == owner(), "Caller is not a team member");
        _;
    }
    
    event ProtectedWallet(address, address, uint256, uint8);

    constructor () {
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        liquidityPools[pair] = true;
        _allowances[owner()][routerAddress] = type(uint256).max;
        _allowances[address(this)][routerAddress] = type(uint256).max;

        isFeeExempt[owner()] = true;
        liquidityCreator[owner()] = true;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[routerAddress] = true;
        isTxLimitExempt[DEAD] = true;

        _balances[owner()] = _totalSupply;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function name() external pure returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function maxBuyTxTokens() external view returns (uint256) { return _maxBuyTxAmount / (10 ** _decimals); }
    function maxSellTxTokens() external view returns (uint256) { return _maxSellTxAmount / (10 ** _decimals); }
    function maxWalletTokens() external view returns (uint256) { return _maxWalletSize / (10 ** _decimals); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }
    
    function setTeamMember(address _team, bool _enabled) external onlyOwner {
        teamMember[_team] = _enabled;
    }
    
    function airdrop(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner {
        require(addresses.length > 0 && amounts.length == addresses.length);
        address from = msg.sender;

        for (uint i = 0; i < addresses.length; i++) {
            if(!liquidityPools[addresses[i]] && !liquidityCreator[addresses[i]]) {
                _basicTransfer(from, addresses[i], amounts[i] * (10 ** _decimals));
            }
        }
    }
    
    function clearStuckBalance(uint256 amountPercentage, address adr) external onlyTeam {
        uint256 amountETH = address(this).balance;
        payable(adr).transfer((amountETH * amountPercentage) / 100);
    }
    
    function openTrading(uint256 _deadBlocks, uint256 _protection, uint256 _limit) external onlyTeam {
        require(!startBullRun && _deadBlocks < 10);
        deadBlocks = _deadBlocks;
        startBullRun = true;
        launchedAt = block.number;
        protectionTimer = block.timestamp + _protection;
        protectionLimit = _limit * (10 ** _decimals);
    }
    
    function pauseTrading() external onlyTeam {
        require(!pauseDisabled);
        startBullRun = false;
    }
    
    function disablePause() external onlyTeam {
        pauseDisabled = true;
        startBullRun = true;
    }
    
    function setProtection(bool _protect, uint256 _addTime) external onlyTeam {
        require(!protectionDisabled);
        protectionEnabled = _protect;
        require(_addTime < 1 days);
        protectionTimer += _addTime;
    }
    
    function disableProtection() external onlyTeam {
        protectionDisabled = true;
        protectionEnabled = false;
    }
    
    function protectWallet(address[] calldata _wallets, bool _protect) external onlyTeam {
        if (_protect) {
            require(protectionEnabled);
        }
        
        for (uint i = 0; i < _wallets.length; i++) {
            
            if (_protect) {
                protectionCount++;
                emit ProtectedWallet(tx.origin, _wallets[i], block.number, 2);
            }
            else {
                if (protected[_wallets[i]] != 0)
                    protectionCount--;      
            }
            protected[_wallets[i]] = _protect ? block.number : 0;
        }
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

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

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "BEP20: transfer from 0x0");
        require(recipient != address(0), "BEP20: transfer to 0x0");
        require(amount > 0, "Amount must be > zero");
        require(_balances[sender] >= amount, "Insufficient balance");
        if(!launched() && liquidityPools[recipient]){ require(liquidityCreator[sender], "Liquidity not added yet."); launch(); }
        if(!startBullRun){ require(liquidityCreator[sender] || liquidityCreator[recipient], "Trading not open yet."); }

        checkTxLimit(sender, recipient, amount);
        
        if (!liquidityPools[recipient] && recipient != DEAD) {
            if (!isTxLimitExempt[recipient]) {
                checkWalletLimit(recipient, amount);
            }
        }
        
        if(protectionEnabled && protectionTimer > block.timestamp) {
            if(liquidityPools[sender] && tx.origin != recipient && protected[recipient] == 0) {
                protected[recipient] = block.number;
                protectionCount++;
                emit ProtectedWallet(tx.origin, recipient, block.number, 0);
            }
        }
        
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        _balances[sender] = _balances[sender] - amount;

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(recipient, amount) : amount;
        
        if(shouldSwapBack(recipient)){ if (amount > 0) swapBack(amount); }
        
        _balances[recipient] = _balances[recipient] + amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
        launchedTime = block.timestamp;
        swapEnabled = true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function checkWalletLimit(address recipient, uint256 amount) internal view {
        uint256 walletLimit = _maxWalletSize;
        require(_balances[recipient] + amount <= walletLimit, "Transfer amount exceeds the bag size.");
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal {
        require(isTxLimitExempt[sender] || amount <= (liquidityPools[sender] ? _maxBuyTxAmount : _maxSellTxAmount), "TX Limit Exceeded");
        require(isTxLimitExempt[sender] || lastBuy[recipient] + rateLimit <= block.number, "Transfer rate limit exceeded.");
        
        if (protected[sender] != 0){
            require(amount <= protectionLimit * (10 ** _decimals) && lastSell[sender] == 0 && protectionTimer > block.timestamp, "Wallet protected, please contact support.");
            lastSell[sender] = block.number;
        }
        
        if (liquidityPools[recipient]) {
            lastSell[sender] = block.number;
        } else if (shouldTakeFee(sender)) {
            if (protectionEnabled && protectionTimer > block.timestamp && lastBuy[tx.origin] == block.number && protected[recipient] == 0) {
                protected[recipient] = block.number;
                emit ProtectedWallet(tx.origin, recipient, block.number, 1);
            }
            lastBuy[recipient] = block.number;
            if (tx.origin != recipient)
                lastBuy[tx.origin] = block.number;
        }
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + deadBlocks >= block.number){ return feeDenominator - 1; }
        if (selling) return totalFee + sellBias;
        return totalFee - sellBias;
    }

    function takeFee(address recipient, uint256 amount) internal returns (uint256) {
        bool selling = liquidityPools[recipient];
        uint256 feeAmount = (amount * getTotalFee(selling)) / feeDenominator;
        
        _balances[address(this)] += feeAmount;
    
        return amount - feeAmount;
    }

    function shouldSwapBack(address recipient) internal view returns (bool) {
        return !liquidityPools[msg.sender]
        && !inSwap
        && swapEnabled
        && liquidityPools[recipient]
        && _balances[address(this)] >= swapMinimum;
    }

    function swapBack(uint256 amount) internal swapping {
        uint256 amountToSwap = amount < swapThreshold ? amount : swapThreshold;
        if (_balances[address(this)] < amountToSwap) amountToSwap = _balances[address(this)];
        
        uint256 amountToLiquify = (amountToSwap * liquidityFee / 2) / totalFee;
        amountToSwap -= amountToLiquify;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        
        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountBNB = address(this).balance - balanceBefore;
        uint256 totalBNBFee = totalFee - (liquidityFee / 2);

        uint256 amountBNBLiquidity = (amountBNB * liquidityFee / 2) / totalBNBFee;
        uint256 amountBNBMarketing = amountBNB - amountBNBLiquidity;
        
        if (amountBNBMarketing > 0)
            marketingFeeReceiver.transfer(amountBNBMarketing);
        
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityFeeReceiver,
                block.timestamp
            );
        }

        emit FundsDistributed(amountBNBMarketing, amountBNBLiquidity, amountToLiquify);
    }
    
    function addLiquidityPool(address lp, bool isPool) external onlyOwner {
        require(lp != pair, "Can't alter current liquidity pair");
        liquidityPools[lp] = isPool;
    }

    function setRateLimit(uint256 rate) external onlyOwner {
        require(rate <= 60 seconds);
        rateLimit = rate;
    }

    function setTxLimit(uint256 buyNumerator, uint256 sellNumerator, uint256 divisor) external onlyOwner {
        require(buyNumerator > 0 && sellNumerator > 0 && divisor > 0 && divisor <= 10000);
        _maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor;
        _maxSellTxAmount = (_totalSupply * sellNumerator) / divisor;
    }
    
    function setMaxWallet(uint256 numerator, uint256 divisor) external onlyOwner() {
        require(numerator > 0 && divisor > 0 && divisor <= 10000);
        _maxWalletSize = (_totalSupply * numerator) / divisor;
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _sellBias, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        totalFee = _marketingFee + _liquidityFee;
        sellBias = _sellBias;
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 2);
    }

    function setFeeReceivers(address _liquidityFeeReceiver, address _marketingFeeReceiver) external onlyOwner {
        liquidityFeeReceiver = payable(_liquidityFeeReceiver);
        marketingFeeReceiver = payable(_marketingFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, bool _processEnabled, uint256 _denominator, uint256 _swapMinimum) external onlyOwner {
        require(_denominator > 0);
        swapEnabled = _enabled;
        processEnabled = _processEnabled;
        swapThreshold = _totalSupply / _denominator;
        swapMinimum = _swapMinimum * (10 ** _decimals);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - (balanceOf(DEAD) + balanceOf(ZERO));
    }

    event FundsDistributed(uint256 marketingBNB, uint256 liquidityBNB, uint256 liquidityTokens);
    //C U ON THE MOON
}

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":"uint256","name":"marketingBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"}],"name":"FundsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"","type":"uint8"}],"name":"ProtectedWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"adr","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","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":"pure","type":"function"},{"inputs":[],"name":"disablePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"},{"internalType":"uint256","name":"_protection","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_protect","type":"bool"}],"name":"protectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"protected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityFeeReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellBias","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_protect","type":"bool"},{"internalType":"uint256","name":"_addTime","type":"uint256"}],"name":"setProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setRateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_processEnabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"uint256","name":"_swapMinimum","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setTeamMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyNumerator","type":"uint256"},{"internalType":"uint256","name":"sellNumerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b031990811661dead17909155600280549091169055620000326009600a620005f9565b6200004290633b9aca0062000611565b6003556107d0600354600162000059919062000611565b62000065919062000633565b6004556101f460035460016200007c919062000611565b62000088919062000633565b600555606460035460026200009e919062000611565b620000aa919062000633565b600655610320600e81905560c8600f819055620000c79162000656565b6010556000601155612710601255601380546001600160a01b03199081167303a7c3c57b1366dde691f0f2c8c4f113bc0eeae390811790925560148054821690921790915560168054909116737a250d5630b4cf539739df2c5dacb4c659f2488d1790556019805461ffff19908116600117909155602180548216905560026022556023805490911661010017905560035462000168906103e89062000633565b6024556127106003546200017d919062000633565b6025553480156200018d57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601654601580546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200022757600080fd5b505afa1580156200023c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000262919062000671565b6001600160a01b031663c9c65396601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002bf57600080fd5b505afa158015620002d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fa919062000671565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200034257600080fd5b505af115801562000357573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037d919062000671565b601d80546001600160a01b0319166001600160a01b039290921691821790556000908152601760205260408120805460ff1916600117905560001990600890620003cf6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120601680548416835290855283822095909555308082526008855283822086548416835285528382206000199055815483168252600b85528382208054600160ff199182168117909255835485168452600d87528584208054821683179055918352600c865284832080548316821790558254841683528483208054831682179055955483168252838220805482168717905585548316825283822080549091169095179094556003548454821685526007845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200069c565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200053b5781600019048211156200051f576200051f620004e4565b808516156200052d57918102915b93841c9390800290620004ff565b509250929050565b6000826200055457506001620005f3565b816200056357506000620005f3565b81600181146200057c57600281146200058757620005a7565b6001915050620005f3565b60ff8411156200059b576200059b620004e4565b50506001821b620005f3565b5060208310610133831016604e8410600b8410161715620005cc575081810a620005f3565b620005d88383620004fa565b8060001904821115620005ef57620005ef620004e4565b0290505b92915050565b60006200060a60ff84168362000543565b9392505050565b60008160001904831182151516156200062e576200062e620004e4565b500290565b6000826200065157634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200066c576200066c620004e4565b500190565b6000602082840312156200068457600080fd5b81516001600160a01b03811681146200060a57600080fd5b612c5380620006ac6000396000f3fe6080604052600436106103035760003560e01c80636f4ce42811610190578063bf56b371116100dc578063e96fada211610095578063f84ba65d1161006f578063f84ba65d14610938578063f8821a6214610958578063f887ea401461096e578063fabb0b4f1461098e57600080fd5b8063e96fada2146108d8578063f1f3bca3146108f8578063f2fde38b1461091857600080fd5b8063bf56b371146107ef578063bfa21d6a14610805578063c1adf7bc14610825578063c287184e14610852578063d686014214610872578063dd62ed3e1461089257600080fd5b806395d89b4111610149578063a8aa1b3111610123578063a8aa1b311461077a578063a9059cbb1461079a578063abe57e70146107ba578063bafe446b146107da57600080fd5b806395d89b41146107155780639b02c40214610744578063a4b45c001461075a57600080fd5b80636f4ce4281461062d5780636fcba3771461065a57806370a082311461067a578063715018a6146106b0578063893d20e8146106c55780638da5cb5b146106f757600080fd5b8063492a937b1161024f578063584f969a1161020857806363a803e1116101e257806363a803e1146105be578063658d4b7f146105d357806367243482146105f35780636ddd17131461061357600080fd5b8063584f969a1461057357806360bba03d1461058857806361e08e72146105a857600080fd5b8063492a937b146104bd57806350713935146104dd57806354a1dfc9146104fd57806356a227f21461051d578063571ac8b01461053d5780635804f1e41461055d57600080fd5b8063234e9494116102bc578063313ce56711610296578063313ce5671461043f57806334848b9a1461045b578063421dd7c71461047b57806346d7edaa1461049057600080fd5b8063234e9494146103f557806323b872dd1461040a5780632b112e491461042a57600080fd5b80630445b6671461030f57806306fdde0314610338578063095db78f14610379578063095ea7b31461039b5780631031e36e146103cb57806318160ddd146103e057600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032560245481565b6040519081526020015b60405180910390f35b34801561034457600080fd5b5060408051808201909152600f81526e47686f73746661636520536869626160881b60208201525b60405161032f919061254c565b34801561038557600080fd5b50610399610394366004612602565b6109a4565b005b3480156103a757600080fd5b506103bb6103b636600461266e565b610b60565b604051901515815260200161032f565b3480156103d757600080fd5b50610399610bcd565b3480156103ec57600080fd5b50600354610325565b34801561040157600080fd5b50610325610c32565b34801561041657600080fd5b506103bb61042536600461269a565b610c52565b34801561043657600080fd5b50610325610ce7565b34801561044b57600080fd5b506040516009815260200161032f565b34801561046757600080fd5b506103996104763660046126db565b610d28565b34801561048757600080fd5b50610399610dc9565b34801561049c57600080fd5b506103256104ab366004612707565b60186020526000908152604090205481565b3480156104c957600080fd5b506103996104d8366004612724565b610e1e565b3480156104e957600080fd5b506103996104f83660046126db565b610edc565b34801561050957600080fd5b50610399610518366004612759565b610f77565b34801561052957600080fd5b5061039961053836600461279b565b610ffa565b34801561054957600080fd5b506103bb610558366004612707565b61108a565b34801561056957600080fd5b50610325601f5481565b34801561057f57600080fd5b50610399611098565b34801561059457600080fd5b506103996105a3366004612724565b6110ed565b3480156105b457600080fd5b5061032560225481565b3480156105ca57600080fd5b50610325611142565b3480156105df57600080fd5b506103996105ee366004612724565b61115d565b3480156105ff57600080fd5b5061039961060e3660046127cb565b6111b2565b34801561061f57600080fd5b506023546103bb9060ff1681565b34801561063957600080fd5b50610325610648366004612707565b60096020526000908152604090205481565b34801561066657600080fd5b50610399610675366004612837565b611319565b34801561068657600080fd5b50610325610695366004612707565b6001600160a01b031660009081526007602052604090205490565b3480156106bc57600080fd5b5061039961137c565b3480156106d157600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161032f565b34801561070357600080fd5b506000546001600160a01b03166106df565b34801561072157600080fd5b5060408051808201909152600681526523a329a424a160d11b602082015261036c565b34801561075057600080fd5b50610325601b5481565b34801561076657600080fd5b50610399610775366004612869565b6113f0565b34801561078657600080fd5b50601d546106df906001600160a01b031681565b3480156107a657600080fd5b506103bb6107b536600461266e565b611448565b3480156107c657600080fd5b506103996107d5366004612897565b611455565b3480156107e657600080fd5b506103256114c6565b3480156107fb57600080fd5b50610325601e5481565b34801561081157600080fd5b506013546106df906001600160a01b031681565b34801561083157600080fd5b50610325610840366004612707565b600a6020526000908152604090205481565b34801561085e57600080fd5b5061039961086d3660046128b9565b6114e1565b34801561087e57600080fd5b5061039961088d3660046128d2565b61151e565b34801561089e57600080fd5b506103256108ad366004612869565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156108e457600080fd5b506014546106df906001600160a01b031681565b34801561090457600080fd5b506103256109133660046128ee565b6115af565b34801561092457600080fd5b50610399610933366004612707565b6115fc565b34801561094457600080fd5b50610399610953366004612724565b6116e6565b34801561096457600080fd5b5061032560255481565b34801561097a57600080fd5b506015546106df906001600160a01b031681565b34801561099a57600080fd5b5061032560205481565b3360009081526027602052604090205460ff16806109cc57506000546001600160a01b031633145b6109f15760405162461bcd60e51b81526004016109e890612909565b60405180910390fd5b8015610a065760195460ff16610a0657600080fd5b60005b82811015610b5a578115610a9557601b8054906000610a2783612956565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610a6057610a60612971565b9050602002016020810190610a759190612707565b436002604051610a889493929190612987565b60405180910390a1610af5565b60186000858584818110610aab57610aab612971565b9050602002016020810190610ac09190612707565b6001600160a01b0316815260208101919091526040016000205415610af557601b8054906000610aef836129b2565b91905055505b81610b01576000610b03565b435b60186000868685818110610b1957610b19612971565b9050602002016020810190610b2e9190612707565b6001600160a01b0316815260208101919091526040016000205580610b5281612956565b915050610a09565b50505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bbb9086815260200190565b60405180910390a35060015b92915050565b3360009081526027602052604090205460ff1680610bf557506000546001600160a01b031633145b610c115760405162461bcd60e51b81526004016109e890612909565b602154610100900460ff1615610c2657600080fd5b6021805460ff19169055565b6000610c406009600a612aad565b600554610c4d9190612abc565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610cd2576001600160a01b0384166000908152600860209081526040808320338452909152902054610cad908390612ade565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610cdd84848461173b565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610d1b91612af5565b600354610c4d9190612ade565b3360009081526027602052604090205460ff1680610d5057506000546001600160a01b031633145b610d6c5760405162461bcd60e51b81526004016109e890612909565b60215460ff16158015610d7f5750600a83105b610d8857600080fd5b60208390556021805460ff1916600117905543601e55610da88242612af5565b601c55610db76009600a612aad565b610dc19082612b0d565b601a55505050565b3360009081526027602052604090205460ff1680610df157506000546001600160a01b031633145b610e0d5760405162461bcd60e51b81526004016109e890612909565b6019805461ffff1916610100179055565b6000546001600160a01b03163314610e485760405162461bcd60e51b81526004016109e890612b2c565b601d546001600160a01b0383811691161415610eb15760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b60648201526084016109e8565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f065760405162461bcd60e51b81526004016109e890612b2c565b600083118015610f165750600082115b8015610f225750600081115b8015610f3057506127108111155b610f3957600080fd5b8083600354610f489190612b0d565b610f529190612abc565b6004556003548190610f65908490612b0d565b610f6f9190612abc565b600555505050565b6000546001600160a01b03163314610fa15760405162461bcd60e51b81526004016109e890612b2c565b60008211610fae57600080fd5b6023805461ffff191685151561ff0019161761010085151502179055600354610fd8908390612abc565b602455610fe76009600a612aad565b610ff19082612b0d565b60255550505050565b3360009081526027602052604090205460ff168061102257506000546001600160a01b031633145b61103e5760405162461bcd60e51b81526004016109e890612909565b476001600160a01b0382166108fc60646110588685612b0d565b6110629190612abc565b6040518115909202916000818181858888f19350505050158015610b5a573d6000803e3d6000fd5b6000610bc782600019610b60565b3360009081526027602052604090205460ff16806110c057506000546001600160a01b031633145b6110dc5760405162461bcd60e51b81526004016109e890612909565b6021805461ffff1916610101179055565b6000546001600160a01b031633146111175760405162461bcd60e51b81526004016109e890612b2c565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b60006111506009600a612aad565b600654610c4d9190612abc565b6000546001600160a01b031633146111875760405162461bcd60e51b81526004016109e890612b2c565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111dc5760405162461bcd60e51b81526004016109e890612b2c565b82158015906111ea57508083145b6111f357600080fd5b3360005b84811015611311576017600087878481811061121557611215612971565b905060200201602081019061122a9190612707565b6001600160a01b0316815260208101919091526040016000205460ff161580156112995750600d600087878481811061126557611265612971565b905060200201602081019061127a9190612707565b6001600160a01b0316815260208101919091526040016000205460ff16155b156112ff576112fd828787848181106112b4576112b4612971565b90506020020160208101906112c99190612707565b6112d56009600a612aad565b8787868181106112e7576112e7612971565b905060200201356112f89190612b0d565b611c3d565b505b8061130981612956565b9150506111f7565b505050505050565b6000546001600160a01b031633146113435760405162461bcd60e51b81526004016109e890612b2c565b600f849055600e8390556113578484612af5565b6010556011829055601281905561136f600282612abc565b60105410610b5a57600080fd5b6000546001600160a01b031633146113a65760405162461bcd60e51b81526004016109e890612b2c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461141a5760405162461bcd60e51b81526004016109e890612b2c565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6000610ce033848461173b565b6000546001600160a01b0316331461147f5760405162461bcd60e51b81526004016109e890612b2c565b60008211801561148f5750600081115b801561149d57506127108111155b6114a657600080fd5b80826003546114b59190612b0d565b6114bf9190612abc565b6006555050565b60006114d46009600a612aad565b600454610c4d9190612abc565b6000546001600160a01b0316331461150b5760405162461bcd60e51b81526004016109e890612b2c565b603c81111561151957600080fd5b602255565b3360009081526027602052604090205460ff168061154657506000546001600160a01b031633145b6115625760405162461bcd60e51b81526004016109e890612909565b601954610100900460ff161561157757600080fd5b6019805460ff191683151517905562015180811061159457600080fd5b80601c60008282546115a69190612af5565b90915550505050565b600043602054601e546115c29190612af5565b106115d6576001601254610bc79190612ade565b81156115ec57601154601054610bc79190612af5565b601154601054610bc79190612ade565b6000546001600160a01b031633146116265760405162461bcd60e51b81526004016109e890612b2c565b6001600160a01b03811661168b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109e8565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146117105760405162461bcd60e51b81526004016109e890612b2c565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006001600160a01b0384166117935760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d20307830000000000000000060448201526064016109e8565b6001600160a01b0383166117e25760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b60448201526064016109e8565b6000821161182a5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b60448201526064016109e8565b6001600160a01b0384166000908152600760205260409020548211156118895760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016109e8565b601e541580156118b157506001600160a01b03831660009081526017602052604090205460ff165b15611938576001600160a01b0384166000908152600d602052604090205460ff1661191e5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e000000000000000060448201526064016109e8565b61193843601e5542601f556023805460ff19166001179055565b60215460ff166119c5576001600160a01b0384166000908152600d602052604090205460ff168061198157506001600160a01b0383166000908152600d602052604090205460ff165b6119c55760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b60448201526064016109e8565b6119d0848484611cf7565b6001600160a01b03831660009081526017602052604090205460ff16158015611a0757506001546001600160a01b03848116911614155b15611a36576001600160a01b0383166000908152600c602052604090205460ff16611a3657611a36838361204c565b60195460ff168015611a49575042601c54115b15611b13576001600160a01b03841660009081526017602052604090205460ff168015611a7f5750326001600160a01b03841614155b8015611aa157506001600160a01b038316600090815260186020526040902054155b15611b13576001600160a01b0383166000908152601860205260408120439055601b805491611acf83612956565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611b0a9493929190612987565b60405180910390a15b60265460ff1615611b3057611b29848484611c3d565b9050610ce0565b6001600160a01b038416600090815260076020526040902054611b54908390612ade565b6001600160a01b038516600090815260076020908152604080832093909355600b90529081205460ff1615611b895782611b93565b611b9384846120d1565b9050611b9e8461214f565b15611bb2578215611bb257611bb2836121c6565b6001600160a01b038416600090815260076020526040902054611bd6908290612af5565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c2a9085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260076020526040812054611c61908390612ade565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611c91908390612af5565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ce59086815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600c602052604090205460ff1680611d4957506001600160a01b03831660009081526017602052604090205460ff16611d4157600554611d45565b6004545b8111155b611d895760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109e8565b6001600160a01b0383166000908152600c602052604090205460ff1680611dd557506022546001600160a01b0383166000908152600a60205260409020544391611dd291612af5565b11155b611e215760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e00000060448201526064016109e8565b6001600160a01b03831660009081526018602052604090205415611f0457611e4b6009600a612aad565b601a54611e589190612b0d565b8111158015611e7d57506001600160a01b038316600090815260096020526040902054155b8015611e8a575042601c54115b611ee85760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b60648201526084016109e8565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526017602052604090205460ff1615611f435750506001600160a01b03166000908152600960205260409020439055565b6001600160a01b0383166000908152600b602052604090205460ff166120475760195460ff168015611f76575042601c54115b8015611f905750326000908152600a602052604090205443145b8015611fb257506001600160a01b038216600090815260186020526040902054155b15612013576001600160a01b03821660009081526018602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea9161200a9132918691600190612987565b60405180910390a15b6001600160a01b0382166000818152600a60205260409020439055321461204757326000908152600a602052604090204390555b505050565b6006546001600160a01b0383166000908152600760205260409020548190612075908490612af5565b11156120475760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016109e8565b6001600160a01b03821660009081526017602052604081205460125460ff9091169082906120fe836115af565b6121089086612b0d565b6121129190612abc565b30600090815260076020526040812080549293508392909190612136908490612af5565b9091555061214690508185612ade565b95945050505050565b3360009081526017602052604081205460ff16158015612172575060265460ff16155b8015612180575060235460ff165b80156121a457506001600160a01b03821660009081526017602052604090205460ff165b8015610bc7575060255430600090815260076020526040902054101592915050565b6026805460ff1916600117905560245460009082106121e7576024546121e9565b815b306000908152600760205260409020549091508111156122155750306000908152600760205260409020545b60006010546002600f548461222a9190612b0d565b6122349190612abc565b61223e9190612abc565b905061224a8183612ade565b6040805160028082526060820183529294506000929091602083019080368337019050509050308160008151811061228457612284612971565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156122d857600080fd5b505afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190612b61565b8160018151811061232357612323612971565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac9479061236d908790600090879030904290600401612b7e565b600060405180830381600087803b15801561238757600080fd5b505af115801561239b573d6000803e3d6000fd5b50505050600081476123ad9190612ade565b905060006002600f546123c09190612abc565b6010546123cd9190612ade565b90506000816002600f54856123e29190612b0d565b6123ec9190612abc565b6123f69190612abc565b905060006124048285612ade565b90508015612448576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612446573d6000803e3d6000fd5b505b86156124f65760155460135460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c4016060604051808303818588803b1580156124b957600080fd5b505af11580156124cd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124f29190612bef565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506026805460ff1916905550505050505050565b600060208083528351808285015260005b818110156125795785810183015185820160400152820161255d565b8181111561258b576000604083870101525b50601f01601f1916929092016040019392505050565b60008083601f8401126125b357600080fd5b50813567ffffffffffffffff8111156125cb57600080fd5b6020830191508360208260051b85010111156125e657600080fd5b9250929050565b803580151581146125fd57600080fd5b919050565b60008060006040848603121561261757600080fd5b833567ffffffffffffffff81111561262e57600080fd5b61263a868287016125a1565b909450925061264d9050602085016125ed565b90509250925092565b6001600160a01b038116811461266b57600080fd5b50565b6000806040838503121561268157600080fd5b823561268c81612656565b946020939093013593505050565b6000806000606084860312156126af57600080fd5b83356126ba81612656565b925060208401356126ca81612656565b929592945050506040919091013590565b6000806000606084860312156126f057600080fd5b505081359360208301359350604090920135919050565b60006020828403121561271957600080fd5b8135610ce081612656565b6000806040838503121561273757600080fd5b823561274281612656565b9150612750602084016125ed565b90509250929050565b6000806000806080858703121561276f57600080fd5b612778856125ed565b9350612786602086016125ed565b93969395505050506040820135916060013590565b600080604083850312156127ae57600080fd5b8235915060208301356127c081612656565b809150509250929050565b600080600080604085870312156127e157600080fd5b843567ffffffffffffffff808211156127f957600080fd5b612805888389016125a1565b9096509450602087013591508082111561281e57600080fd5b5061282b878288016125a1565b95989497509550505050565b6000806000806080858703121561284d57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561287c57600080fd5b823561288781612656565b915060208301356127c081612656565b600080604083850312156128aa57600080fd5b50508035926020909101359150565b6000602082840312156128cb57600080fd5b5035919050565b600080604083850312156128e557600080fd5b61268c836125ed565b60006020828403121561290057600080fd5b610ce0826125ed565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600060001982141561296a5761296a612940565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b6000816129c1576129c1612940565b506000190190565b600181815b80851115612a045781600019048211156129ea576129ea612940565b808516156129f757918102915b93841c93908002906129ce565b509250929050565b600082612a1b57506001610bc7565b81612a2857506000610bc7565b8160018114612a3e5760028114612a4857612a64565b6001915050610bc7565b60ff841115612a5957612a59612940565b50506001821b610bc7565b5060208310610133831016604e8410600b8410161715612a87575081810a610bc7565b612a9183836129c9565b8060001904821115612aa557612aa5612940565b029392505050565b6000610ce060ff841683612a0c565b600082612ad957634e487b7160e01b600052601260045260246000fd5b500490565b600082821015612af057612af0612940565b500390565b60008219821115612b0857612b08612940565b500190565b6000816000190483118215151615612b2757612b27612940565b500290565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612b7357600080fd5b8151610ce081612656565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612bce5784516001600160a01b031683529383019391830191600101612ba9565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612c0457600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212203f0ccbcd0953b1cf11761b340017d7de29f7e3470e77cb376311a9b7d572b09864736f6c63430008090033

Deployed Bytecode

0x6080604052600436106103035760003560e01c80636f4ce42811610190578063bf56b371116100dc578063e96fada211610095578063f84ba65d1161006f578063f84ba65d14610938578063f8821a6214610958578063f887ea401461096e578063fabb0b4f1461098e57600080fd5b8063e96fada2146108d8578063f1f3bca3146108f8578063f2fde38b1461091857600080fd5b8063bf56b371146107ef578063bfa21d6a14610805578063c1adf7bc14610825578063c287184e14610852578063d686014214610872578063dd62ed3e1461089257600080fd5b806395d89b4111610149578063a8aa1b3111610123578063a8aa1b311461077a578063a9059cbb1461079a578063abe57e70146107ba578063bafe446b146107da57600080fd5b806395d89b41146107155780639b02c40214610744578063a4b45c001461075a57600080fd5b80636f4ce4281461062d5780636fcba3771461065a57806370a082311461067a578063715018a6146106b0578063893d20e8146106c55780638da5cb5b146106f757600080fd5b8063492a937b1161024f578063584f969a1161020857806363a803e1116101e257806363a803e1146105be578063658d4b7f146105d357806367243482146105f35780636ddd17131461061357600080fd5b8063584f969a1461057357806360bba03d1461058857806361e08e72146105a857600080fd5b8063492a937b146104bd57806350713935146104dd57806354a1dfc9146104fd57806356a227f21461051d578063571ac8b01461053d5780635804f1e41461055d57600080fd5b8063234e9494116102bc578063313ce56711610296578063313ce5671461043f57806334848b9a1461045b578063421dd7c71461047b57806346d7edaa1461049057600080fd5b8063234e9494146103f557806323b872dd1461040a5780632b112e491461042a57600080fd5b80630445b6671461030f57806306fdde0314610338578063095db78f14610379578063095ea7b31461039b5780631031e36e146103cb57806318160ddd146103e057600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032560245481565b6040519081526020015b60405180910390f35b34801561034457600080fd5b5060408051808201909152600f81526e47686f73746661636520536869626160881b60208201525b60405161032f919061254c565b34801561038557600080fd5b50610399610394366004612602565b6109a4565b005b3480156103a757600080fd5b506103bb6103b636600461266e565b610b60565b604051901515815260200161032f565b3480156103d757600080fd5b50610399610bcd565b3480156103ec57600080fd5b50600354610325565b34801561040157600080fd5b50610325610c32565b34801561041657600080fd5b506103bb61042536600461269a565b610c52565b34801561043657600080fd5b50610325610ce7565b34801561044b57600080fd5b506040516009815260200161032f565b34801561046757600080fd5b506103996104763660046126db565b610d28565b34801561048757600080fd5b50610399610dc9565b34801561049c57600080fd5b506103256104ab366004612707565b60186020526000908152604090205481565b3480156104c957600080fd5b506103996104d8366004612724565b610e1e565b3480156104e957600080fd5b506103996104f83660046126db565b610edc565b34801561050957600080fd5b50610399610518366004612759565b610f77565b34801561052957600080fd5b5061039961053836600461279b565b610ffa565b34801561054957600080fd5b506103bb610558366004612707565b61108a565b34801561056957600080fd5b50610325601f5481565b34801561057f57600080fd5b50610399611098565b34801561059457600080fd5b506103996105a3366004612724565b6110ed565b3480156105b457600080fd5b5061032560225481565b3480156105ca57600080fd5b50610325611142565b3480156105df57600080fd5b506103996105ee366004612724565b61115d565b3480156105ff57600080fd5b5061039961060e3660046127cb565b6111b2565b34801561061f57600080fd5b506023546103bb9060ff1681565b34801561063957600080fd5b50610325610648366004612707565b60096020526000908152604090205481565b34801561066657600080fd5b50610399610675366004612837565b611319565b34801561068657600080fd5b50610325610695366004612707565b6001600160a01b031660009081526007602052604090205490565b3480156106bc57600080fd5b5061039961137c565b3480156106d157600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161032f565b34801561070357600080fd5b506000546001600160a01b03166106df565b34801561072157600080fd5b5060408051808201909152600681526523a329a424a160d11b602082015261036c565b34801561075057600080fd5b50610325601b5481565b34801561076657600080fd5b50610399610775366004612869565b6113f0565b34801561078657600080fd5b50601d546106df906001600160a01b031681565b3480156107a657600080fd5b506103bb6107b536600461266e565b611448565b3480156107c657600080fd5b506103996107d5366004612897565b611455565b3480156107e657600080fd5b506103256114c6565b3480156107fb57600080fd5b50610325601e5481565b34801561081157600080fd5b506013546106df906001600160a01b031681565b34801561083157600080fd5b50610325610840366004612707565b600a6020526000908152604090205481565b34801561085e57600080fd5b5061039961086d3660046128b9565b6114e1565b34801561087e57600080fd5b5061039961088d3660046128d2565b61151e565b34801561089e57600080fd5b506103256108ad366004612869565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156108e457600080fd5b506014546106df906001600160a01b031681565b34801561090457600080fd5b506103256109133660046128ee565b6115af565b34801561092457600080fd5b50610399610933366004612707565b6115fc565b34801561094457600080fd5b50610399610953366004612724565b6116e6565b34801561096457600080fd5b5061032560255481565b34801561097a57600080fd5b506015546106df906001600160a01b031681565b34801561099a57600080fd5b5061032560205481565b3360009081526027602052604090205460ff16806109cc57506000546001600160a01b031633145b6109f15760405162461bcd60e51b81526004016109e890612909565b60405180910390fd5b8015610a065760195460ff16610a0657600080fd5b60005b82811015610b5a578115610a9557601b8054906000610a2783612956565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610a6057610a60612971565b9050602002016020810190610a759190612707565b436002604051610a889493929190612987565b60405180910390a1610af5565b60186000858584818110610aab57610aab612971565b9050602002016020810190610ac09190612707565b6001600160a01b0316815260208101919091526040016000205415610af557601b8054906000610aef836129b2565b91905055505b81610b01576000610b03565b435b60186000868685818110610b1957610b19612971565b9050602002016020810190610b2e9190612707565b6001600160a01b0316815260208101919091526040016000205580610b5281612956565b915050610a09565b50505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bbb9086815260200190565b60405180910390a35060015b92915050565b3360009081526027602052604090205460ff1680610bf557506000546001600160a01b031633145b610c115760405162461bcd60e51b81526004016109e890612909565b602154610100900460ff1615610c2657600080fd5b6021805460ff19169055565b6000610c406009600a612aad565b600554610c4d9190612abc565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610cd2576001600160a01b0384166000908152600860209081526040808320338452909152902054610cad908390612ade565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610cdd84848461173b565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610d1b91612af5565b600354610c4d9190612ade565b3360009081526027602052604090205460ff1680610d5057506000546001600160a01b031633145b610d6c5760405162461bcd60e51b81526004016109e890612909565b60215460ff16158015610d7f5750600a83105b610d8857600080fd5b60208390556021805460ff1916600117905543601e55610da88242612af5565b601c55610db76009600a612aad565b610dc19082612b0d565b601a55505050565b3360009081526027602052604090205460ff1680610df157506000546001600160a01b031633145b610e0d5760405162461bcd60e51b81526004016109e890612909565b6019805461ffff1916610100179055565b6000546001600160a01b03163314610e485760405162461bcd60e51b81526004016109e890612b2c565b601d546001600160a01b0383811691161415610eb15760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b60648201526084016109e8565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f065760405162461bcd60e51b81526004016109e890612b2c565b600083118015610f165750600082115b8015610f225750600081115b8015610f3057506127108111155b610f3957600080fd5b8083600354610f489190612b0d565b610f529190612abc565b6004556003548190610f65908490612b0d565b610f6f9190612abc565b600555505050565b6000546001600160a01b03163314610fa15760405162461bcd60e51b81526004016109e890612b2c565b60008211610fae57600080fd5b6023805461ffff191685151561ff0019161761010085151502179055600354610fd8908390612abc565b602455610fe76009600a612aad565b610ff19082612b0d565b60255550505050565b3360009081526027602052604090205460ff168061102257506000546001600160a01b031633145b61103e5760405162461bcd60e51b81526004016109e890612909565b476001600160a01b0382166108fc60646110588685612b0d565b6110629190612abc565b6040518115909202916000818181858888f19350505050158015610b5a573d6000803e3d6000fd5b6000610bc782600019610b60565b3360009081526027602052604090205460ff16806110c057506000546001600160a01b031633145b6110dc5760405162461bcd60e51b81526004016109e890612909565b6021805461ffff1916610101179055565b6000546001600160a01b031633146111175760405162461bcd60e51b81526004016109e890612b2c565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b60006111506009600a612aad565b600654610c4d9190612abc565b6000546001600160a01b031633146111875760405162461bcd60e51b81526004016109e890612b2c565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111dc5760405162461bcd60e51b81526004016109e890612b2c565b82158015906111ea57508083145b6111f357600080fd5b3360005b84811015611311576017600087878481811061121557611215612971565b905060200201602081019061122a9190612707565b6001600160a01b0316815260208101919091526040016000205460ff161580156112995750600d600087878481811061126557611265612971565b905060200201602081019061127a9190612707565b6001600160a01b0316815260208101919091526040016000205460ff16155b156112ff576112fd828787848181106112b4576112b4612971565b90506020020160208101906112c99190612707565b6112d56009600a612aad565b8787868181106112e7576112e7612971565b905060200201356112f89190612b0d565b611c3d565b505b8061130981612956565b9150506111f7565b505050505050565b6000546001600160a01b031633146113435760405162461bcd60e51b81526004016109e890612b2c565b600f849055600e8390556113578484612af5565b6010556011829055601281905561136f600282612abc565b60105410610b5a57600080fd5b6000546001600160a01b031633146113a65760405162461bcd60e51b81526004016109e890612b2c565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461141a5760405162461bcd60e51b81526004016109e890612b2c565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6000610ce033848461173b565b6000546001600160a01b0316331461147f5760405162461bcd60e51b81526004016109e890612b2c565b60008211801561148f5750600081115b801561149d57506127108111155b6114a657600080fd5b80826003546114b59190612b0d565b6114bf9190612abc565b6006555050565b60006114d46009600a612aad565b600454610c4d9190612abc565b6000546001600160a01b0316331461150b5760405162461bcd60e51b81526004016109e890612b2c565b603c81111561151957600080fd5b602255565b3360009081526027602052604090205460ff168061154657506000546001600160a01b031633145b6115625760405162461bcd60e51b81526004016109e890612909565b601954610100900460ff161561157757600080fd5b6019805460ff191683151517905562015180811061159457600080fd5b80601c60008282546115a69190612af5565b90915550505050565b600043602054601e546115c29190612af5565b106115d6576001601254610bc79190612ade565b81156115ec57601154601054610bc79190612af5565b601154601054610bc79190612ade565b6000546001600160a01b031633146116265760405162461bcd60e51b81526004016109e890612b2c565b6001600160a01b03811661168b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109e8565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146117105760405162461bcd60e51b81526004016109e890612b2c565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006001600160a01b0384166117935760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d20307830000000000000000060448201526064016109e8565b6001600160a01b0383166117e25760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b60448201526064016109e8565b6000821161182a5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b60448201526064016109e8565b6001600160a01b0384166000908152600760205260409020548211156118895760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016109e8565b601e541580156118b157506001600160a01b03831660009081526017602052604090205460ff165b15611938576001600160a01b0384166000908152600d602052604090205460ff1661191e5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e000000000000000060448201526064016109e8565b61193843601e5542601f556023805460ff19166001179055565b60215460ff166119c5576001600160a01b0384166000908152600d602052604090205460ff168061198157506001600160a01b0383166000908152600d602052604090205460ff165b6119c55760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b60448201526064016109e8565b6119d0848484611cf7565b6001600160a01b03831660009081526017602052604090205460ff16158015611a0757506001546001600160a01b03848116911614155b15611a36576001600160a01b0383166000908152600c602052604090205460ff16611a3657611a36838361204c565b60195460ff168015611a49575042601c54115b15611b13576001600160a01b03841660009081526017602052604090205460ff168015611a7f5750326001600160a01b03841614155b8015611aa157506001600160a01b038316600090815260186020526040902054155b15611b13576001600160a01b0383166000908152601860205260408120439055601b805491611acf83612956565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611b0a9493929190612987565b60405180910390a15b60265460ff1615611b3057611b29848484611c3d565b9050610ce0565b6001600160a01b038416600090815260076020526040902054611b54908390612ade565b6001600160a01b038516600090815260076020908152604080832093909355600b90529081205460ff1615611b895782611b93565b611b9384846120d1565b9050611b9e8461214f565b15611bb2578215611bb257611bb2836121c6565b6001600160a01b038416600090815260076020526040902054611bd6908290612af5565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c2a9085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260076020526040812054611c61908390612ade565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611c91908390612af5565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ce59086815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600c602052604090205460ff1680611d4957506001600160a01b03831660009081526017602052604090205460ff16611d4157600554611d45565b6004545b8111155b611d895760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109e8565b6001600160a01b0383166000908152600c602052604090205460ff1680611dd557506022546001600160a01b0383166000908152600a60205260409020544391611dd291612af5565b11155b611e215760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e00000060448201526064016109e8565b6001600160a01b03831660009081526018602052604090205415611f0457611e4b6009600a612aad565b601a54611e589190612b0d565b8111158015611e7d57506001600160a01b038316600090815260096020526040902054155b8015611e8a575042601c54115b611ee85760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b60648201526084016109e8565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526017602052604090205460ff1615611f435750506001600160a01b03166000908152600960205260409020439055565b6001600160a01b0383166000908152600b602052604090205460ff166120475760195460ff168015611f76575042601c54115b8015611f905750326000908152600a602052604090205443145b8015611fb257506001600160a01b038216600090815260186020526040902054155b15612013576001600160a01b03821660009081526018602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea9161200a9132918691600190612987565b60405180910390a15b6001600160a01b0382166000818152600a60205260409020439055321461204757326000908152600a602052604090204390555b505050565b6006546001600160a01b0383166000908152600760205260409020548190612075908490612af5565b11156120475760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016109e8565b6001600160a01b03821660009081526017602052604081205460125460ff9091169082906120fe836115af565b6121089086612b0d565b6121129190612abc565b30600090815260076020526040812080549293508392909190612136908490612af5565b9091555061214690508185612ade565b95945050505050565b3360009081526017602052604081205460ff16158015612172575060265460ff16155b8015612180575060235460ff165b80156121a457506001600160a01b03821660009081526017602052604090205460ff165b8015610bc7575060255430600090815260076020526040902054101592915050565b6026805460ff1916600117905560245460009082106121e7576024546121e9565b815b306000908152600760205260409020549091508111156122155750306000908152600760205260409020545b60006010546002600f548461222a9190612b0d565b6122349190612abc565b61223e9190612abc565b905061224a8183612ade565b6040805160028082526060820183529294506000929091602083019080368337019050509050308160008151811061228457612284612971565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156122d857600080fd5b505afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190612b61565b8160018151811061232357612323612971565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac9479061236d908790600090879030904290600401612b7e565b600060405180830381600087803b15801561238757600080fd5b505af115801561239b573d6000803e3d6000fd5b50505050600081476123ad9190612ade565b905060006002600f546123c09190612abc565b6010546123cd9190612ade565b90506000816002600f54856123e29190612b0d565b6123ec9190612abc565b6123f69190612abc565b905060006124048285612ade565b90508015612448576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612446573d6000803e3d6000fd5b505b86156124f65760155460135460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c4016060604051808303818588803b1580156124b957600080fd5b505af11580156124cd573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124f29190612bef565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506026805460ff1916905550505050505050565b600060208083528351808285015260005b818110156125795785810183015185820160400152820161255d565b8181111561258b576000604083870101525b50601f01601f1916929092016040019392505050565b60008083601f8401126125b357600080fd5b50813567ffffffffffffffff8111156125cb57600080fd5b6020830191508360208260051b85010111156125e657600080fd5b9250929050565b803580151581146125fd57600080fd5b919050565b60008060006040848603121561261757600080fd5b833567ffffffffffffffff81111561262e57600080fd5b61263a868287016125a1565b909450925061264d9050602085016125ed565b90509250925092565b6001600160a01b038116811461266b57600080fd5b50565b6000806040838503121561268157600080fd5b823561268c81612656565b946020939093013593505050565b6000806000606084860312156126af57600080fd5b83356126ba81612656565b925060208401356126ca81612656565b929592945050506040919091013590565b6000806000606084860312156126f057600080fd5b505081359360208301359350604090920135919050565b60006020828403121561271957600080fd5b8135610ce081612656565b6000806040838503121561273757600080fd5b823561274281612656565b9150612750602084016125ed565b90509250929050565b6000806000806080858703121561276f57600080fd5b612778856125ed565b9350612786602086016125ed565b93969395505050506040820135916060013590565b600080604083850312156127ae57600080fd5b8235915060208301356127c081612656565b809150509250929050565b600080600080604085870312156127e157600080fd5b843567ffffffffffffffff808211156127f957600080fd5b612805888389016125a1565b9096509450602087013591508082111561281e57600080fd5b5061282b878288016125a1565b95989497509550505050565b6000806000806080858703121561284d57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561287c57600080fd5b823561288781612656565b915060208301356127c081612656565b600080604083850312156128aa57600080fd5b50508035926020909101359150565b6000602082840312156128cb57600080fd5b5035919050565b600080604083850312156128e557600080fd5b61268c836125ed565b60006020828403121561290057600080fd5b610ce0826125ed565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600060001982141561296a5761296a612940565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b6000816129c1576129c1612940565b506000190190565b600181815b80851115612a045781600019048211156129ea576129ea612940565b808516156129f757918102915b93841c93908002906129ce565b509250929050565b600082612a1b57506001610bc7565b81612a2857506000610bc7565b8160018114612a3e5760028114612a4857612a64565b6001915050610bc7565b60ff841115612a5957612a59612940565b50506001821b610bc7565b5060208310610133831016604e8410600b8410161715612a87575081810a610bc7565b612a9183836129c9565b8060001904821115612aa557612aa5612940565b029392505050565b6000610ce060ff841683612a0c565b600082612ad957634e487b7160e01b600052601260045260246000fd5b500490565b600082821015612af057612af0612940565b500390565b60008219821115612b0857612b08612940565b500190565b6000816000190483118215151615612b2757612b27612940565b500290565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612b7357600080fd5b8151610ce081612656565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612bce5784516001600160a01b031683529383019391830191600101612ba9565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612c0457600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212203f0ccbcd0953b1cf11761b340017d7de29f7e3470e77cb376311a9b7d572b09864736f6c63430008090033

Deployed Bytecode Sourcemap

7905:16325:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9915:50;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9915:50:0;;;;;;;;11379:71;;;;;;;;;;-1:-1:-1;11442:5:0;;;;;;;;;;;;-1:-1:-1;;;11442:5:0;;;;11379:71;;;;;;;:::i;14335:617::-;;;;;;;;;;-1:-1:-1;14335:617:0;;;;;:::i;:::-;;:::i;:::-;;12120:216;;;;;;;;;;-1:-1:-1;12120:216:0;;;;;:::i;:::-;;:::i;:::-;;;2466:14:1;;2459:22;2441:41;;2429:2;2414:18;12120:216:0;2301:187:1;13699:115:0;;;;;;;;;;;;;:::i;11127:88::-;;;;;;;;;;-1:-1:-1;11200:12:0;;11127:88;;11644:107;;;;;;;;;;;;;:::i;15124:341::-;;;;;;;;;;-1:-1:-1;15124:341:0;;;;;:::i;:::-;;:::i;23966:138::-;;;;;;;;;;;;;:::i;11221:71::-;;;;;;;;;;-1:-1:-1;11221:71:0;;8239:1;3096:36:1;;3084:2;3069:18;11221:71:0;2954:184:1;13315:372:0;;;;;;;;;;-1:-1:-1;13315:372:0;;;;;:::i;:::-;;:::i;14196:127::-;;;;;;;;;;;;;:::i;9391:45::-;;;;;;;;;;-1:-1:-1;9391:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;21786:184;;;;;;;;;;-1:-1:-1;21786:184:0;;;;;:::i;:::-;;:::i;22114:339::-;;;;;;;;;;-1:-1:-1;22114:339:0;;;;;:::i;:::-;;:::i;23598:360::-;;;;;;;;;;-1:-1:-1;23598:360:0;;;;;:::i;:::-;;:::i;13089:214::-;;;;;;;;;;-1:-1:-1;13089:214:0;;;;;:::i;:::-;;:::i;12344:122::-;;;;;;;;;;-1:-1:-1;12344:122:0;;;;;:::i;:::-;;:::i;9676:27::-;;;;;;;;;;;;;;;;13826:111;;;;;;;;;;;;;:::i;12478:119::-;;;;;;;;;;-1:-1:-1;12478:119:0;;;;;:::i;:::-;;:::i;9807:28::-;;;;;;;;;;;;;;;;11757:105;;;;;;;;;;;;;:::i;22692:119::-;;;;;;;;;;-1:-1:-1;22692:119:0;;;;;:::i;:::-;;:::i;12609:468::-;;;;;;;;;;-1:-1:-1;12609:468:0;;;;;:::i;:::-;;:::i;9844:31::-;;;;;;;;;;-1:-1:-1;9844:31:0;;;;;;;;8599:44;;;;;;;;;;-1:-1:-1;8599:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;22954:386;;;;;;;;;;-1:-1:-1;22954:386:0;;;;;:::i;:::-;;:::i;11868:105::-;;;;;;;;;;-1:-1:-1;11868:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;11952:18:0;11934:7;11952:18;;;:9;:18;;;;;;;11868:105;7500:148;;;;;;;;;;;;;:::i;11456:71::-;;;;;;;;;;-1:-1:-1;11499:7:0;7355:6;-1:-1:-1;;;;;7355:6:0;11456:71;;;-1:-1:-1;;;;;6078:32:1;;;6060:51;;6048:2;6033:18;11456:71:0;5914:203:1;7290:79:0;;;;;;;;;;-1:-1:-1;7328:7:0;7355:6;-1:-1:-1;;;;;7355:6:0;7290:79;;11298:75;;;;;;;;;;-1:-1:-1;11363:7:0;;;;;;;;;;;;-1:-1:-1;;;11363:7:0;;;;11298:75;;9547:30;;;;;;;;;;;;;;;;23348:242;;;;;;;;;;-1:-1:-1;23348:242:0;;;;;:::i;:::-;;:::i;9616:19::-;;;;;;;;;;-1:-1:-1;9616:19:0;;;;-1:-1:-1;;;;;9616:19:0;;;14960:156;;;;;;;;;;-1:-1:-1;14960:156:0;;;;;:::i;:::-;;:::i;22465:219::-;;;;;;;;;;-1:-1:-1;22465:219:0;;;;;:::i;:::-;;:::i;11533:105::-;;;;;;;;;;;;;:::i;9644:25::-;;;;;;;;;;;;;;;;9030:97;;;;;;;;;;-1:-1:-1;9030:97:0;;;;-1:-1:-1;;;;;9030:97:0;;;8650:43;;;;;;;;;;-1:-1:-1;8650:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;21978:128;;;;;;;;;;-1:-1:-1;21978:128:0;;;;;:::i;:::-;;:::i;13949:235::-;;;;;;;;;;-1:-1:-1;13949:235:0;;;;;:::i;:::-;;:::i;11979:133::-;;;;;;;;;;-1:-1:-1;11979:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12081:19:0;;;12063:7;12081:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11979:133;9134:97;;;;;;;;;;-1:-1:-1;9134:97:0;;;;-1:-1:-1;;;;;9134:97:0;;;19371:243;;;;;;;;;;-1:-1:-1;19371:243:0;;;;;:::i;:::-;;:::i;7654:244::-;;;;;;;;;;-1:-1:-1;7654:244:0;;;;;:::i;:::-;;:::i;22819:127::-;;;;;;;;;;-1:-1:-1;22819:127:0;;;;;:::i;:::-;;:::i;9972:49::-;;;;;;;;;;;;;;;;9240:24;;;;;;;;;;-1:-1:-1;9240:24:0;;;;-1:-1:-1;;;;;9240:24:0;;;9710:25;;;;;;;;;;;;;;;;14335:617;5405:10;10203:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;7328:7:0;7355:6;-1:-1:-1;;;;;7355:6:0;10231:10;:21;10203:49;10195:89;;;;-1:-1:-1;;;10195:89:0;;;;;;;:::i;:::-;;;;;;;;;14435:8:::1;14431:67;;;14468:17;::::0;::::1;;14460:26;;;::::0;::::1;;14523:6;14518:427;14535:19:::0;;::::1;14518:427;;;14594:8;14590:277;;;14623:15;:17:::0;;;:15:::1;:17;::::0;::::1;:::i;:::-;;;;;;14664:56;14680:9;14691:8;;14700:1;14691:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14704:12;14718:1;14664:56;;;;;;;;;:::i;:::-;;;;;;;;14590:277;;;14778:9;:22;14788:8;;14797:1;14788:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14778:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14778:22:0;;:27;14774:71:::1;;14828:15;:17:::0;;;:15:::1;:17;::::0;::::1;:::i;:::-;;;;;;14774:71;14906:8;:27;;14932:1;14906:27;;;14917:12;14906:27;14881:9;:22;14891:8;;14900:1;14891:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14881:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14881:22:0;:52;14556:3;::::1;::::0;::::1;:::i;:::-;;;;14518:427;;;;14335:617:::0;;;:::o;12120:216::-;12224:10;12195:4;12212:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;12212:32:0;;;;;;;;;;:41;;;12269:37;12195:4;;12212:32;;12269:37;;;;12247:6;160:25:1;;148:2;133:18;;14:177;12269:37:0;;;;;;;;-1:-1:-1;12324:4:0;12120:216;;;;;:::o;13699:115::-;5405:10;10203:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;7328:7:0;7355:6;-1:-1:-1;;;;;7355:6:0;10231:10;:21;10203:49;10195:89;;;;-1:-1:-1;;;10195:89:0;;;;;;;:::i;:::-;13761:13:::1;::::0;::::1;::::0;::::1;;;13760:14;13752:23;;;::::0;::::1;;13786:12;:20:::0;;-1:-1:-1;;13786:20:0::1;::::0;;13699:115::o;11644:107::-;11694:7;11732:15;8239:1;11732:2;:15;:::i;:::-;11712:16;;:36;;;;:::i;:::-;11705:43;;11644:107;:::o;15124:341::-;-1:-1:-1;;;;;15244:19:0;;15224:4;15244:19;;;:11;:19;;;;;;;;15264:10;15244:31;;;;;;;;-1:-1:-1;;15244:52:0;15241:157;;-1:-1:-1;;;;;15346:19:0;;;;;;:11;:19;;;;;;;;15366:10;15346:31;;;;;;;;:40;;15380:6;;15346:40;:::i;:::-;-1:-1:-1;;;;;15312:19:0;;;;;;:11;:19;;;;;;;;15332:10;15312:31;;;;;;;:74;15241:157;15417:40;15431:6;15439:9;15450:6;15417:13;:40::i;:::-;15410:47;;15124:341;;;;;;:::o;23966:138::-;24090:4;;-1:-1:-1;;;;;24090:4:0;;;24019:7;11952:18;;;:9;:18;;;;;;;24072:4;;;;;11952:18;;;;;24019:7;;24062:33;;;:::i;:::-;24046:12;;:50;;;;:::i;13315:372::-;5405:10;10203:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;7328:7:0;7355:6;-1:-1:-1;;;;;7355:6:0;10231:10;:21;10203:49;10195:89;;;;-1:-1:-1;;;10195:89:0;;;;;;;:::i;:::-;13432:12:::1;::::0;::::1;;13431:13;:33:::0;::::1;;;;13462:2;13448:11;:16;13431:33;13423:42;;;::::0;::::1;;13476:10;:24:::0;;;13511:12:::1;:19:::0;;-1:-1:-1;;13511:19:0::1;13526:4;13511:19;::::0;;13554:12:::1;13541:10;:25:::0;13595:29:::1;13613:11:::0;13595:15:::1;:29;:::i;:::-;13577:15;:47:::0;13663:15:::1;8239:1;13663:2;:15;:::i;:::-;13653:26;::::0;:6;:26:::1;:::i;:::-;13635:15;:44:::0;-1:-1:-1;;;13315:372:0:o;14196:127::-;5405:10;10203:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;7328:7:0;7355:6;-1:-1:-1;;;;;7355:6:0;10231:10;:21;10203:49;10195:89;;;;-1:-1:-1;;;10195:89:0;;;;;;;:::i;:::-;14254:18:::1;:25:::0;;-1:-1:-1;;14290:25:0;14254::::1;14290::::0;;;14196:127::o;21786:184::-;7415:6;;-1:-1:-1;;;;;7415:6:0;5405:10;7415:22;7407:67;;;;-1:-1:-1;;;7407:67:0;;;;;;;:::i;:::-;21881:4:::1;::::0;-1:-1:-1;;;;;21875:10:0;;::::1;21881:4:::0;::::1;21875:10;;21867:57;;;::::0;-1:-1:-1;;;21867:57:0;;11815:2:1;21867:57:0::1;::::0;::::1;11797:21:1::0;11854:2;11834:18;;;11827:30;11893:34;11873:18;;;11866:62;-1:-1:-1;;;11944:18:1;;;11937:32;11986:19;;21867:57:0::1;11613:398:1::0;21867:57:0::1;-1:-1:-1::0;;;;;21935:18:0;;;::::1;;::::0;;;:14:::1;:18;::::0;;;;:27;;-1:-1:-1;;21935:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21786:184::o;22114:339::-;7415:6;;-1:-1:-1;;;;;7415:6:0;5405:10;7415:22;7407:67;;;;-1:-1:-1;;;7407:67:0;;;;;;;:::i;:::-;22249:1:::1;22234:12;:16;:37;;;;;22270:1;22254:13;:17;22234:37;:52;;;;;22285:1;22275:7;:11;22234:52;:72;;;;;22301:5;22290:7;:16;;22234:72;22226:81;;;::::0;::::1;;22368:7;22352:12;22337;;:27;;;;:::i;:::-;22336:39;;;;:::i;:::-;22318:15;:57:::0;22406:12:::1;::::0;22438:7;;22406:28:::1;::::0;22421:13;;22406:28:::1;:::i;:::-;22405:40;;;;:::i;:::-;22386:16;:59:::0;-1:-1:-1;;;22114:339:0:o;23598:360::-;7415:6;;-1:-1:-1;;;;;7415:6:0;5405:10;7415:22;7407:67;;;;-1:-1:-1;;;7407:67:0;;;;;;;:::i;:::-;23761:1:::1;23746:12;:16;23738:25;;;::::0;::::1;;23774:11;:22:::0;;-1:-1:-1;;23807:32:0;23774:22;::::1;;-1:-1:-1::0;;23807:32:0;;23774:22:::1;23807:32:::0;::::1;;;;::::0;;23866:12:::1;::::0;:27:::1;::::0;23881:12;;23866:27:::1;:::i;:::-;23850:13;:43:::0;23934:15:::1;8239:1;23934:2;:15;:::i;:::-;23918:32;::::0;:12;:32:::1;:::i;:::-;23904:11;:46:::0;-1:-1:-1;;;;23598:360:0:o;13089:214::-;5405:10;10203:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;7328:7:0;7355:6;-1:-1:-1;;;;;7355:6:0;10231:10;:21;10203:49;10195:89;;;;-1:-1:-1;;;10195:89:0;;;;;;;:::i;:::-;13204:21:::1;-1:-1:-1::0;;;;;13236:21:0;::::1;:59;13291:3;13259:28;13271:16:::0;13204:21;13259:28:::1;:::i;:::-;13258:36;;;;:::i;:::-;13236:59;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;12344:122:::0;12399:4;12423:35;12431:7;-1:-1:-1;;12423:7:0;:35::i;13826:111::-;5405:10;10203:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;7328:7:0;7355:6;-1:-1:-1;;;;;7355:6:0;10231:10;:21;10203:49;10195:89;;;;-1:-1:-1;;;10195:89:0;;;;;;;:::i;:::-;13879:13:::1;:20:::0;;-1:-1:-1;;13910:19:0;;;;;13826:111::o;12478:119::-;7415:6;;-1:-1:-1;;;;;7415:6:0;5405:10;7415:22;7407:67;;;;-1:-1:-1;;;7407:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12561:17:0;;;::::1;;::::0;;;:10:::1;:17;::::0;;;;:28;;-1:-1:-1;;12561:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12478:119::o;11757:105::-;11807:7;11843:15;8239:1;11843:2;:15;:::i;:::-;11825:14;;:34;;;;:::i;22692:119::-;7415:6;;-1:-1:-1;;;;;7415:6:0;5405:10;7415:22;7407:67;;;;-1:-1:-1;;;7407:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22775:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;22775:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22692:119::o;12609:468::-;7415:6;;-1:-1:-1;;;;;7415:6:0;5405:10;7415:22;7407:67;;;;-1:-1:-1;;;7407:67:0;;;;;;;:::i;:::-;12722:20;;;;;:58:::1;;-1:-1:-1::0;12746:34:0;;::::1;12722:58;12714:67;;;::::0;::::1;;12807:10;12792:12;12830:240;12847:20:::0;;::::1;12830:240;;;12893:14;:28;12908:9;;12918:1;12908:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12893:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12893:28:0;;::::1;;12892:29;:64:::0;::::1;;;;12926:16;:30;12943:9;;12953:1;12943:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12926:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12926:30:0;;::::1;;12925:31;12892:64;12889:170;;;12977:66;12992:4;12998:9;;13008:1;12998:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;13026:15;8239:1;13026:2;:15;:::i;:::-;13012:7;;13020:1;13012:10;;;;;;;:::i;:::-;;;;;;;:30;;;;:::i;:::-;12977:14;:66::i;:::-;;12889:170;12869:3:::0;::::1;::::0;::::1;:::i;:::-;;;;12830:240;;;;12703:374;12609:468:::0;;;;:::o;22954:386::-;7415:6;;-1:-1:-1;;;;;7415:6:0;5405:10;7415:22;7407:67;;;;-1:-1:-1;;;7407:67:0;;;;;;;:::i;:::-;23091:12:::1;:28:::0;;;23130:12:::1;:28:::0;;;23180:29:::1;23106:13:::0;23145;23180:29:::1;:::i;:::-;23169:8;:40:::0;23220:8:::1;:20:::0;;;23251:14:::1;:32:::0;;;23313:18:::1;23330:1;23268:15:::0;23313:18:::1;:::i;:::-;23302:8;;:29;23294:38;;;::::0;::::1;7500:148:::0;7415:6;;-1:-1:-1;;;;;7415:6:0;5405:10;7415:22;7407:67;;;;-1:-1:-1;;;7407:67:0;;;;;;;:::i;:::-;7607:1:::1;7591:6:::0;;7570:40:::1;::::0;-1:-1:-1;;;;;7591:6:0;;::::1;::::0;7570:40:::1;::::0;7607:1;;7570:40:::1;7638:1;7621:19:::0;;-1:-1:-1;;;;;;7621:19:0::1;::::0;;7500:148::o;23348:242::-;7415:6;;-1:-1:-1;;;;;7415:6:0;5405:10;7415:22;7407:67;;;;-1:-1:-1;;;7407:67:0;;;;;;;:::i;:::-;23465:20:::1;:53:::0;;-1:-1:-1;;;;;23465:53:0;;::::1;-1:-1:-1::0;;;;;;23465:53:0;;::::1;;::::0;;;23529:20:::1;:53:::0;;;;;::::1;::::0;::::1;;::::0;;23348:242::o;14960:156::-;15040:4;15064:44;15078:10;15090:9;15101:6;15064:13;:44::i;22465:219::-;7415:6;;-1:-1:-1;;;;;7415:6:0;5405:10;7415:22;7407:67;;;;-1:-1:-1;;;7407:67:0;;;;;;;:::i;:::-;22575:1:::1;22563:9;:13;:28;;;;;22590:1;22580:7;:11;22563:28;:48;;;;;22606:5;22595:7;:16;;22563:48;22555:57;;;::::0;::::1;;22669:7;22656:9;22641:12;;:24;;;;:::i;:::-;22640:36;;;;:::i;:::-;22623:14;:53:::0;-1:-1:-1;;22465:219:0:o;11533:105::-;11582:7;11619:15;8239:1;11619:2;:15;:::i;:::-;11600;;:35;;;;:::i;21978:128::-;7415:6;;-1:-1:-1;;;;;7415:6:0;5405:10;7415:22;7407:67;;;;-1:-1:-1;;;7407:67:0;;;;;;;:::i;:::-;22060:10:::1;22052:4;:18;;22044:27;;;::::0;::::1;;22082:9;:16:::0;21978:128::o;13949:235::-;5405:10;10203:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;7328:7:0;7355:6;-1:-1:-1;;;;;7355:6:0;10231:10;:21;10203:49;10195:89;;;;-1:-1:-1;;;10195:89:0;;;;;;;:::i;:::-;14043:18:::1;::::0;::::1;::::0;::::1;;;14042:19;14034:28;;;::::0;::::1;;14073:17;:28:::0;;-1:-1:-1;;14073:28:0::1;::::0;::::1;;;::::0;;14131:6:::1;14120:17:::0;::::1;14112:26;;;::::0;::::1;;14168:8;14149:15;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;13949:235:0:o;19371:243::-;19427:7;19477:12;19463:10;;19450;;:23;;;;:::i;:::-;:39;19447:73;;19516:1;19499:14;;:18;;;;:::i;19447:73::-;19534:7;19530:39;;;19561:8;;19550;;:19;;;;:::i;19530:39::-;19598:8;;19587;;:19;;;;:::i;7654:244::-;7415:6;;-1:-1:-1;;;;;7415:6:0;5405:10;7415:22;7407:67;;;;-1:-1:-1;;;7407:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7743:22:0;::::1;7735:73;;;::::0;-1:-1:-1;;;7735:73:0;;12218:2:1;7735:73:0::1;::::0;::::1;12200:21:1::0;12257:2;12237:18;;;12230:30;12296:34;12276:18;;;12269:62;-1:-1:-1;;;12347:18:1;;;12340:36;12393:19;;7735:73:0::1;12016:402:1::0;7735:73:0::1;7845:6;::::0;;7824:38:::1;::::0;-1:-1:-1;;;;;7824:38:0;;::::1;::::0;7845:6;::::1;::::0;7824:38:::1;::::0;::::1;7873:6;:17:::0;;-1:-1:-1;;;;;;7873:17:0::1;-1:-1:-1::0;;;;;7873:17:0;;;::::1;::::0;;;::::1;::::0;;7654:244::o;22819:127::-;7415:6;;-1:-1:-1;;;;;7415:6:0;5405:10;7415:22;7407:67;;;;-1:-1:-1;;;7407:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22906:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;22906:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22819:127::o;15473:1734::-;15565:4;-1:-1:-1;;;;;15590:20:0;;15582:57;;;;-1:-1:-1;;;15582:57:0;;12625:2:1;15582:57:0;;;12607:21:1;12664:2;12644:18;;;12637:30;12703:26;12683:18;;;12676:54;12747:18;;15582:57:0;12423:348:1;15582:57:0;-1:-1:-1;;;;;15658:23:0;;15650:58;;;;-1:-1:-1;;;15650:58:0;;12978:2:1;15650:58:0;;;12960:21:1;13017:2;12997:18;;;12990:30;-1:-1:-1;;;13036:18:1;;;13029:52;13098:18;;15650:58:0;12776:346:1;15650:58:0;15736:1;15727:6;:10;15719:44;;;;-1:-1:-1;;;15719:44:0;;13329:2:1;15719:44:0;;;13311:21:1;13368:2;13348:18;;;13341:30;-1:-1:-1;;;13387:18:1;;;13380:51;13448:18;;15719:44:0;13127:345:1;15719:44:0;-1:-1:-1;;;;;15782:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;15782:27:0;15774:60;;;;-1:-1:-1;;;15774:60:0;;13679:2:1;15774:60:0;;;13661:21:1;13718:2;13698:18;;;13691:30;-1:-1:-1;;;13737:18:1;;;13730:50;13797:18;;15774:60:0;13477:344:1;15774:60:0;17286:10;;:15;;;15848:40;;-1:-1:-1;;;;;;15863:25:0;;;;;;:14;:25;;;;;;;;15848:40;15845:120;;;-1:-1:-1;;;;;15899:24:0;;;;;;:16;:24;;;;;;;;15891:61;;;;-1:-1:-1;;;15891:61:0;;14028:2:1;15891:61:0;;;14010:21:1;14067:2;14047:18;;;14040:30;14106:26;14086:18;;;14079:54;14150:18;;15891:61:0;13826:348:1;15891:61:0;15954:8;17368:12;17355:10;:25;17406:15;17391:12;:30;17432:11;:18;;-1:-1:-1;;17432:18:0;17446:4;17432:18;;;17317:141;15954:8;15979:12;;;;15975:111;;-1:-1:-1;;;;;16002:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;16030:27:0;;;;;;:16;:27;;;;;;;;16002:55;15994:89;;;;-1:-1:-1;;;15994:89:0;;14381:2:1;15994:89:0;;;14363:21:1;14420:2;14400:18;;;14393:30;-1:-1:-1;;;14439:18:1;;;14432:51;14500:18;;15994:89:0;14179:345:1;15994:89:0;16098:39;16111:6;16119:9;16130:6;16098:12;:39::i;:::-;-1:-1:-1;;;;;16163:25:0;;;;;;:14;:25;;;;;;;;16162:26;:47;;;;-1:-1:-1;16205:4:0;;-1:-1:-1;;;;;16192:17:0;;;16205:4;;16192:17;;16162:47;16158:182;;;-1:-1:-1;;;;;16231:26:0;;;;;;:15;:26;;;;;;;;16226:103;;16278:35;16295:9;16306:6;16278:16;:35::i;:::-;16363:17;;;;:54;;;;;16402:15;16384;;:33;16363:54;16360:351;;;-1:-1:-1;;;;;16437:22:0;;;;;;:14;:22;;;;;;;;:48;;;;-1:-1:-1;16463:9:0;-1:-1:-1;;;;;16463:22:0;;;;16437:48;:77;;;;-1:-1:-1;;;;;;16489:20:0;;;;;;:9;:20;;;;;;:25;16437:77;16434:266;;;-1:-1:-1;;;;;16535:20:0;;;;;;:9;:20;;;;;16558:12;16535:35;;16589:15;:17;;;;;;:::i;:::-;;;;;;16630:54;16646:9;16657;16668:12;16682:1;16630:54;;;;;;;;;:::i;:::-;;;;;;;;16434:266;16734:6;;;;16731:63;;;16750:41;16765:6;16773:9;16784:6;16750:14;:41::i;:::-;16743:48;;;;16731:63;-1:-1:-1;;;;;16826:17:0;;;;;;:9;:17;;;;;;:26;;16846:6;;16826:26;:::i;:::-;-1:-1:-1;;;;;16806:17:0;;;;;;:9;:17;;;;;;;;:46;;;;19336:11;:19;;;;;;;;19335:20;16890:59;;16943:6;16890:59;;;16914:26;16922:9;16933:6;16914:7;:26::i;:::-;16865:84;;16973:25;16988:9;16973:14;:25::i;:::-;16970:66;;;17005:10;;17001:32;;17017:16;17026:6;17017:8;:16::i;:::-;-1:-1:-1;;;;;17079:20:0;;;;;;:9;:20;;;;;;:37;;17102:14;;17079:37;:::i;:::-;-1:-1:-1;;;;;17056:20:0;;;;;;;:9;:20;;;;;;;:60;;;;17134:43;;;;;;;;;;17162:14;160:25:1;;148:2;133:18;;14:177;17134:43:0;;;;;;;;-1:-1:-1;17195:4:0;;15473:1734;-1:-1:-1;;;;15473:1734:0:o;17466:300::-;-1:-1:-1;;;;;17596:17:0;;17559:4;17596:17;;;:9;:17;;;;;;:26;;17616:6;;17596:26;:::i;:::-;-1:-1:-1;;;;;17576:17:0;;;;;;;:9;:17;;;;;;:46;;;;17656:20;;;;;;;:29;;17679:6;;17656:29;:::i;:::-;-1:-1:-1;;;;;17633:20:0;;;;;;;:9;:20;;;;;;;:52;;;;17701:35;;;;;;;;;;17729:6;160:25:1;;148:2;133:18;;14:177;17701:35:0;;;;;;;;-1:-1:-1;17754:4:0;17466:300;;;;;:::o;18021:1220::-;-1:-1:-1;;;;;18122:23:0;;;;;;:15;:23;;;;;;;;;:98;;-1:-1:-1;;;;;;18160:22:0;;;;;;:14;:22;;;;;;;;:59;;18203:16;;18160:59;;;18185:15;;18160:59;18149:6;:71;;18122:98;18114:128;;;;-1:-1:-1;;;18114:128:0;;15200:2:1;18114:128:0;;;15182:21:1;15239:2;15219:18;;;15212:30;-1:-1:-1;;;15258:18:1;;;15251:47;15315:18;;18114:128:0;14998:341:1;18114:128:0;-1:-1:-1;;;;;18261:23:0;;;;;;:15;:23;;;;;;;;;:73;;-1:-1:-1;18309:9:0;;-1:-1:-1;;;;;18288:18:0;;;;;;:7;:18;;;;;;18322:12;;18288:30;;;:::i;:::-;:46;;18261:73;18253:115;;;;-1:-1:-1;;;18253:115:0;;15546:2:1;18253:115:0;;;15528:21:1;15585:2;15565:18;;;15558:30;15624:31;15604:18;;;15597:59;15673:18;;18253:115:0;15344:353:1;18253:115:0;-1:-1:-1;;;;;18393:17:0;;;;;;:9;:17;;;;;;:22;18389:261;;18468:15;8239:1;18468:2;:15;:::i;:::-;18449;;:35;;;;:::i;:::-;18439:6;:45;;:70;;;;-1:-1:-1;;;;;;18488:16:0;;;;;;:8;:16;;;;;;:21;18439:70;:107;;;;;18531:15;18513;;:33;18439:107;18431:161;;;;-1:-1:-1;;;18431:161:0;;15904:2:1;18431:161:0;;;15886:21:1;15943:2;15923:18;;;15916:30;15982:34;15962:18;;;15955:62;-1:-1:-1;;;16033:18:1;;;16026:39;16082:19;;18431:161:0;15702:405:1;18431:161:0;-1:-1:-1;;;;;18607:16:0;;;;;;:8;:16;;;;;18626:12;18607:31;;18389:261;-1:-1:-1;;;;;18674:25:0;;;;;;:14;:25;;;;;;;;18670:564;;;-1:-1:-1;;;;;;;18716:16:0;;;;;:8;:16;;;;;18735:12;18716:31;;18021:1220::o;18670:564::-;-1:-1:-1;;;;;19336:19:0;;19311:4;19336:19;;;:11;:19;;;;;;;;18765:469;;18811:17;;;;:54;;;;;18850:15;18832;;:33;18811:54;:92;;;;-1:-1:-1;18877:9:0;18869:18;;;;:7;:18;;;;;;18891:12;18869:34;18811:92;:121;;;;-1:-1:-1;;;;;;18907:20:0;;;;;;:9;:20;;;;;;:25;18811:121;18807:275;;;-1:-1:-1;;;;;18953:20:0;;;;;;:9;:20;;;;;;;18976:12;18953:35;;;;19012:54;;;;;;19028:9;;18963;;19064:1;;19012:54;:::i;:::-;;;;;;;;18807:275;-1:-1:-1;;;;;19096:18:0;;;;;;:7;:18;;;;;19117:12;19096:33;;19148:9;:22;19144:78;;19197:9;19189:18;;;;:7;:18;;;;;19210:12;19189:33;;19144:78;18021:1220;;;:::o;17778:235::-;17886:14;;-1:-1:-1;;;;;17919:20:0;;17864:19;17919:20;;;:9;:20;;;;;;17886:14;;17919:29;;17942:6;;17919:29;:::i;:::-;:44;;17911:94;;;;-1:-1:-1;;;17911:94:0;;16783:2:1;17911:94:0;;;16765:21:1;16822:2;16802:18;;;16795:30;16861:34;16841:18;;;16834:62;-1:-1:-1;;;16912:18:1;;;16905:35;16957:19;;17911:94:0;16581:401:1;19622:317:0;-1:-1:-1;;;;;19727:25:0;;19692:7;19727:25;;;:14;:25;;;;;;19817:14;;19727:25;;;;;19692:7;;19793:20;19727:25;19793:11;:20::i;:::-;19784:29;;:6;:29;:::i;:::-;19783:48;;;;:::i;:::-;19870:4;19852:24;;;;:9;:24;;;;;:37;;19763:68;;-1:-1:-1;19763:68:0;;19852:24;;;:37;;19763:68;;19852:37;:::i;:::-;;;;-1:-1:-1;19913:18:0;;-1:-1:-1;19922:9:0;19913:6;:18;:::i;:::-;19906:25;19622:317;-1:-1:-1;;;;;19622:317:0:o;19947:259::-;20053:10;20013:4;20038:26;;;:14;:26;;;;;;;;20037:27;:47;;;;-1:-1:-1;20078:6:0;;;;20077:7;20037:47;:71;;;;-1:-1:-1;20097:11:0;;;;20037:71;:109;;;;-1:-1:-1;;;;;;20121:25:0;;;;;;:14;:25;;;;;;;;20037:109;:161;;;;-1:-1:-1;20187:11:0;;20177:4;20159:24;;;;:9;:24;;;;;;:39;;20030:168;19947:259;-1:-1:-1;;19947:259:0:o;20214:1560::-;10068:6;:13;;-1:-1:-1;;10068:13:0;10077:4;10068:13;;;20309::::1;::::0;10068:6;;20300:22;::::1;:47;;20334:13;;20300:47;;;20325:6;20300:47;20380:4;20362:24;::::0;;;:9:::1;:24;::::0;;;;;20277:70;;-1:-1:-1;20362:39:0;-1:-1:-1;20358:84:0::1;;;-1:-1:-1::0;20436:4:0::1;20418:24;::::0;;;:9:::1;:24;::::0;;;;;20358:84:::1;20463:23;20525:8;;20520:1;20505:12;;20490;:27;;;;:::i;:::-;:31;;;;:::i;:::-;20489:44;;;;:::i;:::-;20463:70:::0;-1:-1:-1;20544:31:0::1;20463:70:::0;20544:31;::::1;:::i;:::-;20612:16;::::0;;20626:1:::1;20612:16:::0;;;;;::::1;::::0;;20544:31;;-1:-1:-1;20588:21:0::1;::::0;20612:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20612:16:0::1;20588:40;;20657:4;20639;20644:1;20639:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20639:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;20683:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;20683:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;20639:7;;20683:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20673:4;20678:1;20673:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20673:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;20775:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;20775:188:0;;20741:21:::1;::::0;20775:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;20847:12;;20717:21:::1;::::0;20890:4;;20917::::1;::::0;20937:15:::1;::::0;20775:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20976:17;21020:13;20996:21;:37;;;;:::i;:::-;20976:57;;21044:19;21093:1;21078:12;;:16;;;;:::i;:::-;21066:8;;:29;;;;:::i;:::-;21044:51;;21108:26;21170:11;21165:1;21150:12;;21138:9;:24;;;;:::i;:::-;:28;;;;:::i;:::-;21137:44;;;;:::i;:::-;21108:73:::0;-1:-1:-1;21192:26:0::1;21221:30;21108:73:::0;21221:9;:30:::1;:::i;:::-;21192:59:::0;-1:-1:-1;21276:22:0;;21272:90:::1;;21313:20;::::0;:49:::1;::::0;-1:-1:-1;;;;;21313:20:0;;::::1;::::0;:49;::::1;;;::::0;21343:18;;21313:20:::1;:49:::0;:20;:49;21343:18;21313:20;:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21272:90;21386:19:::0;;21383:293:::1;;21421:6;::::0;21595:20:::1;::::0;21421:243:::1;::::0;-1:-1:-1;;;21421:243:0;;21497:4:::1;21421:243;::::0;::::1;18709:34:1::0;18759:18;;;18752:34;;;21421:6:0::1;18802:18:1::0;;;18795:34;;;18845:18;;;18838:34;-1:-1:-1;;;;;21595:20:0;;::::1;18888:19:1::0;;;18881:44;21634:15:0::1;18941:19:1::0;;;18934:35;21421:6:0;::::1;::::0;:22:::1;::::0;21451:18;;18643:19:1;;21421:243:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21383:293;21693:73;::::0;;19493:25:1;;;19549:2;19534:18;;19527:34;;;19577:18;;;19570:34;;;21693:73:0::1;::::0;19481:2:1;19466:18;21693:73:0::1;;;;;;;-1:-1:-1::0;;10086:6:0;:14;;-1:-1:-1;;10086:14:0;;;-1:-1:-1;;;;;;;20214:1560:0:o;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:367::-;861:8;871:6;925:3;918:4;910:6;906:17;902:27;892:55;;943:1;940;933:12;892:55;-1:-1:-1;966:20:1;;1009:18;998:30;;995:50;;;1041:1;1038;1031:12;995:50;1078:4;1070:6;1066:17;1054:29;;1138:3;1131:4;1121:6;1118:1;1114:14;1106:6;1102:27;1098:38;1095:47;1092:67;;;1155:1;1152;1145:12;1092:67;798:367;;;;;:::o;1170:160::-;1235:20;;1291:13;;1284:21;1274:32;;1264:60;;1320:1;1317;1310:12;1264:60;1170:160;;;:::o;1335:505::-;1427:6;1435;1443;1496:2;1484:9;1475:7;1471:23;1467:32;1464:52;;;1512:1;1509;1502:12;1464:52;1552:9;1539:23;1585:18;1577:6;1574:30;1571:50;;;1617:1;1614;1607:12;1571:50;1656:70;1718:7;1709:6;1698:9;1694:22;1656:70;:::i;:::-;1745:8;;-1:-1:-1;1630:96:1;-1:-1:-1;1799:35:1;;-1:-1:-1;1830:2:1;1815:18;;1799:35;:::i;:::-;1789:45;;1335:505;;;;;:::o;1845:131::-;-1:-1:-1;;;;;1920:31:1;;1910:42;;1900:70;;1966:1;1963;1956:12;1900:70;1845:131;:::o;1981:315::-;2049:6;2057;2110:2;2098:9;2089:7;2085:23;2081:32;2078:52;;;2126:1;2123;2116:12;2078:52;2165:9;2152:23;2184:31;2209:5;2184:31;:::i;:::-;2234:5;2286:2;2271:18;;;;2258:32;;-1:-1:-1;;;1981:315:1:o;2493:456::-;2570:6;2578;2586;2639:2;2627:9;2618:7;2614:23;2610:32;2607:52;;;2655:1;2652;2645:12;2607:52;2694:9;2681:23;2713:31;2738:5;2713:31;:::i;:::-;2763:5;-1:-1:-1;2820:2:1;2805:18;;2792:32;2833:33;2792:32;2833:33;:::i;:::-;2493:456;;2885:7;;-1:-1:-1;;;2939:2:1;2924:18;;;;2911:32;;2493:456::o;3143:316::-;3220:6;3228;3236;3289:2;3277:9;3268:7;3264:23;3260:32;3257:52;;;3305:1;3302;3295:12;3257:52;-1:-1:-1;;3328:23:1;;;3398:2;3383:18;;3370:32;;-1:-1:-1;3449:2:1;3434:18;;;3421:32;;3143:316;-1:-1:-1;3143:316:1:o;3464:247::-;3523:6;3576:2;3564:9;3555:7;3551:23;3547:32;3544:52;;;3592:1;3589;3582:12;3544:52;3631:9;3618:23;3650:31;3675:5;3650:31;:::i;3716:315::-;3781:6;3789;3842:2;3830:9;3821:7;3817:23;3813:32;3810:52;;;3858:1;3855;3848:12;3810:52;3897:9;3884:23;3916:31;3941:5;3916:31;:::i;:::-;3966:5;-1:-1:-1;3990:35:1;4021:2;4006:18;;3990:35;:::i;:::-;3980:45;;3716:315;;;;;:::o;4036:385::-;4116:6;4124;4132;4140;4193:3;4181:9;4172:7;4168:23;4164:33;4161:53;;;4210:1;4207;4200:12;4161:53;4233:26;4249:9;4233:26;:::i;:::-;4223:36;;4278:35;4309:2;4298:9;4294:18;4278:35;:::i;:::-;4036:385;;4268:45;;-1:-1:-1;;;;4360:2:1;4345:18;;4332:32;;4411:2;4396:18;4383:32;;4036:385::o;4426:315::-;4494:6;4502;4555:2;4543:9;4534:7;4530:23;4526:32;4523:52;;;4571:1;4568;4561:12;4523:52;4607:9;4594:23;4584:33;;4667:2;4656:9;4652:18;4639:32;4680:31;4705:5;4680:31;:::i;:::-;4730:5;4720:15;;;4426:315;;;;;:::o;4746:773::-;4868:6;4876;4884;4892;4945:2;4933:9;4924:7;4920:23;4916:32;4913:52;;;4961:1;4958;4951:12;4913:52;5001:9;4988:23;5030:18;5071:2;5063:6;5060:14;5057:34;;;5087:1;5084;5077:12;5057:34;5126:70;5188:7;5179:6;5168:9;5164:22;5126:70;:::i;:::-;5215:8;;-1:-1:-1;5100:96:1;-1:-1:-1;5303:2:1;5288:18;;5275:32;;-1:-1:-1;5319:16:1;;;5316:36;;;5348:1;5345;5338:12;5316:36;;5387:72;5451:7;5440:8;5429:9;5425:24;5387:72;:::i;:::-;4746:773;;;;-1:-1:-1;5478:8:1;-1:-1:-1;;;;4746:773:1:o;5524:385::-;5610:6;5618;5626;5634;5687:3;5675:9;5666:7;5662:23;5658:33;5655:53;;;5704:1;5701;5694:12;5655:53;-1:-1:-1;;5727:23:1;;;5797:2;5782:18;;5769:32;;-1:-1:-1;5848:2:1;5833:18;;5820:32;;5899:2;5884:18;5871:32;;-1:-1:-1;5524:385:1;-1:-1:-1;5524:385:1:o;6122:388::-;6190:6;6198;6251:2;6239:9;6230:7;6226:23;6222:32;6219:52;;;6267:1;6264;6257:12;6219:52;6306:9;6293:23;6325:31;6350:5;6325:31;:::i;:::-;6375:5;-1:-1:-1;6432:2:1;6417:18;;6404:32;6445:33;6404:32;6445:33;:::i;6515:248::-;6583:6;6591;6644:2;6632:9;6623:7;6619:23;6615:32;6612:52;;;6660:1;6657;6650:12;6612:52;-1:-1:-1;;6683:23:1;;;6753:2;6738:18;;;6725:32;;-1:-1:-1;6515:248:1:o;6992:180::-;7051:6;7104:2;7092:9;7083:7;7079:23;7075:32;7072:52;;;7120:1;7117;7110:12;7072:52;-1:-1:-1;7143:23:1;;6992:180;-1:-1:-1;6992:180:1:o;7177:248::-;7242:6;7250;7303:2;7291:9;7282:7;7278:23;7274:32;7271:52;;;7319:1;7316;7309:12;7271:52;7342:26;7358:9;7342:26;:::i;7430:180::-;7486:6;7539:2;7527:9;7518:7;7514:23;7510:32;7507:52;;;7555:1;7552;7545:12;7507:52;7578:26;7594:9;7578:26;:::i;7841:351::-;8043:2;8025:21;;;8082:2;8062:18;;;8055:30;8121:29;8116:2;8101:18;;8094:57;8183:2;8168:18;;7841:351::o;8197:127::-;8258:10;8253:3;8249:20;8246:1;8239:31;8289:4;8286:1;8279:15;8313:4;8310:1;8303:15;8329:135;8368:3;-1:-1:-1;;8389:17:1;;8386:43;;;8409:18;;:::i;:::-;-1:-1:-1;8456:1:1;8445:13;;8329:135::o;8469:127::-;8530:10;8525:3;8521:20;8518:1;8511:31;8561:4;8558:1;8551:15;8585:4;8582:1;8575:15;8601:464;-1:-1:-1;;;;;8894:15:1;;;8876:34;;8946:15;;;;8941:2;8926:18;;8919:43;8993:2;8978:18;;8971:34;9053:4;9041:17;;;9036:2;9021:18;;9014:45;8825:3;8810:19;;8601:464::o;9070:136::-;9109:3;9137:5;9127:39;;9146:18;;:::i;:::-;-1:-1:-1;;;9182:18:1;;9070:136::o;9211:422::-;9300:1;9343:5;9300:1;9357:270;9378:7;9368:8;9365:21;9357:270;;;9437:4;9433:1;9429:6;9425:17;9419:4;9416:27;9413:53;;;9446:18;;:::i;:::-;9496:7;9486:8;9482:22;9479:55;;;9516:16;;;;9479:55;9595:22;;;;9555:15;;;;9357:270;;;9361:3;9211:422;;;;;:::o;9638:806::-;9687:5;9717:8;9707:80;;-1:-1:-1;9758:1:1;9772:5;;9707:80;9806:4;9796:76;;-1:-1:-1;9843:1:1;9857:5;;9796:76;9888:4;9906:1;9901:59;;;;9974:1;9969:130;;;;9881:218;;9901:59;9931:1;9922:10;;9945:5;;;9969:130;10006:3;9996:8;9993:17;9990:43;;;10013:18;;:::i;:::-;-1:-1:-1;;10069:1:1;10055:16;;10084:5;;9881:218;;10183:2;10173:8;10170:16;10164:3;10158:4;10155:13;10151:36;10145:2;10135:8;10132:16;10127:2;10121:4;10118:12;10114:35;10111:77;10108:159;;;-1:-1:-1;10220:19:1;;;10252:5;;10108:159;10299:34;10324:8;10318:4;10299:34;:::i;:::-;10369:6;10365:1;10361:6;10357:19;10348:7;10345:32;10342:58;;;10380:18;;:::i;:::-;10418:20;;9638:806;-1:-1:-1;;;9638:806:1:o;10449:140::-;10507:5;10536:47;10577:4;10567:8;10563:19;10557:4;10536:47;:::i;10594:217::-;10634:1;10660;10650:132;;10704:10;10699:3;10695:20;10692:1;10685:31;10739:4;10736:1;10729:15;10767:4;10764:1;10757:15;10650:132;-1:-1:-1;10796:9:1;;10594:217::o;10816:125::-;10856:4;10884:1;10881;10878:8;10875:34;;;10889:18;;:::i;:::-;-1:-1:-1;10926:9:1;;10816:125::o;10946:128::-;10986:3;11017:1;11013:6;11010:1;11007:13;11004:39;;;11023:18;;:::i;:::-;-1:-1:-1;11059:9:1;;10946:128::o;11079:168::-;11119:7;11185:1;11181;11177:6;11173:14;11170:1;11167:21;11162:1;11155:9;11148:17;11144:45;11141:71;;;11192:18;;:::i;:::-;-1:-1:-1;11232:9:1;;11079:168::o;11252:356::-;11454:2;11436:21;;;11473:18;;;11466:30;11532:34;11527:2;11512:18;;11505:62;11599:2;11584:18;;11252:356::o;17119:251::-;17189:6;17242:2;17230:9;17221:7;17217:23;17213:32;17210:52;;;17258:1;17255;17248:12;17210:52;17290:9;17284:16;17309:31;17334:5;17309:31;:::i;17375:980::-;17637:4;17685:3;17674:9;17670:19;17716:6;17705:9;17698:25;17742:2;17780:6;17775:2;17764:9;17760:18;17753:34;17823:3;17818:2;17807:9;17803:18;17796:31;17847:6;17882;17876:13;17913:6;17905;17898:22;17951:3;17940:9;17936:19;17929:26;;17990:2;17982:6;17978:15;17964:29;;18011:1;18021:195;18035:6;18032:1;18029:13;18021:195;;;18100:13;;-1:-1:-1;;;;;18096:39:1;18084:52;;18191:15;;;;18156:12;;;;18132:1;18050:9;18021:195;;;-1:-1:-1;;;;;;;18272:32:1;;;;18267:2;18252:18;;18245:60;-1:-1:-1;;;18336:3:1;18321:19;18314:35;18233:3;17375:980;-1:-1:-1;;;17375:980:1:o;18980:306::-;19068:6;19076;19084;19137:2;19125:9;19116:7;19112:23;19108:32;19105:52;;;19153:1;19150;19143:12;19105:52;19182:9;19176:16;19166:26;;19232:2;19221:9;19217:18;19211:25;19201:35;;19276:2;19265:9;19261:18;19255:25;19245:35;;18980:306;;;;;:::o

Swarm Source

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