ETH Price: $3,348.72 (+3.37%)

Token

Pepe Troll (PEPETROLL)
 

Overview

Max Total Supply

420,690,000,000,000 PEPETROLL

Holders

45

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4,544,435,859,046.905462700540303532 PEPETROLL

Value
$0.00
0x887580d5086995e41efd71500ca729ecbeba591b
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
PEPETROLL

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-11
*/

/**

🐸 Welcome to Pepe Troll !!! We are a meme-inspired cryptocurrency project that aims to revolutionize the world of digital assets. 

🐸 TG - https://t.me/PepeTrollCoin

🐸 TWITTER - https://twitter.com/PepeTrollCoin

🐸 WEB - https://pepetroll.fun/

*/

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

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

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

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

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

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

pragma solidity ^0.8.19;

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address UNISWAP_V2_PAIR);
}

contract PEPETROLL is IERC20, Ownable {

    event Reflect(uint256 amountReflected, uint256 newTotalProportion);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    uint256 constant MAX_FEE = 10;

    IUniswapV2Router02 public constant UNISWAP_V2_ROUTER =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable UNISWAP_V2_PAIR;
    mapping(address => bool) public automatedMarketMakerPairs;

    struct Fee {
        uint8 reflection;
        uint8 marketing;
        uint8 lp;
        uint8 buyback;
        uint8 burn;
        uint128 total;
    }

    string _name = "Pepe Troll";
    string _symbol = "PEPETROLL";

    uint256 _totalSupply = 420_690_000_000_000 ether;
    uint256 public _maxTxAmount = _totalSupply * 15 / 1000;
    uint256 public _maxWalletAmount = _totalSupply * 15 / 1000;

    /* rOwned = ratio of tokens owned relative to circulating supply (NOT total supply, since circulating <= total) */
    mapping(address => uint256) public _rOwned;
    uint256 public _totalProportion = _totalSupply;

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

    bool public tradingActive = false;
    bool public transferDelayEnabled = false;
    bool public limitsEnabled = true;
    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isLimitExempt;

    Fee public buyFee = Fee({reflection: 0, marketing: 25, lp: 0, buyback: 0, burn: 0, total: 25});
    Fee public sellFee = Fee({reflection: 0, marketing: 25, lp: 0, buyback: 0, burn: 0, total: 25});

    address private marketingFeeReceiver;
    address private lpFeeReceiver;
    address private buybackFeeReceiver;

    bool public claimingFees = false;
    uint256 public swapThreshold = (_totalSupply * 3) / 1000;
    bool inSwap;
    mapping(address => bool) public blacklists;
    mapping(address => uint256) private _holderLastTransferTimestamp;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        // create uniswap pair
        address _uniswapPair =
            IUniswapV2Factory(UNISWAP_V2_ROUTER.factory()).createPair(address(this), UNISWAP_V2_ROUTER.WETH());
        UNISWAP_V2_PAIR = _uniswapPair;
        _setAutomatedMarketMakerPair(address(_uniswapPair), true);

        _allowances[address(this)][address(UNISWAP_V2_ROUTER)] = type(uint256).max;
        _allowances[address(this)][owner()] = type(uint256).max;

        isLimitExempt[address(this)] = true;
        isLimitExempt[DEAD] = true;
        isLimitExempt[owner()] = true;
        isLimitExempt[UNISWAP_V2_PAIR] = true;
        
        isFeeExempt[address(this)] = true;
        isFeeExempt[DEAD] = true;
        isFeeExempt[owner()] = true;

        marketingFeeReceiver = 0x00c792035FC5423b14421C0d81f4a868337680bF;
        lpFeeReceiver = 0x00c792035FC5423b14421C0d81f4a868337680bF;
        buybackFeeReceiver = 0x00c792035FC5423b14421C0d81f4a868337680bF;

        _rOwned[tx.origin] = _totalSupply;
        emit Transfer(address(0), tx.origin, _totalSupply);
    }

    receive() external payable {}

    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 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) {
            require(_allowances[sender][msg.sender] >= amount, "ERC20: insufficient allowance");
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function decimals() external pure returns (uint8) {
        return 18;
    }

    function name() external view returns (string memory) {
        return _name;
    }

    function symbol() external view returns (string memory) {
        return _symbol;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function allowance(address holder, address spender) external view override returns (uint256) {
        return _allowances[holder][spender];
    }

    function tokensToProportion(uint256 tokens) public view returns (uint256) {
        return tokens * _totalProportion / _totalSupply;
    }

    function tokenFromReflection(uint256 proportion) public view returns (uint256) {
        return proportion * _totalSupply / _totalProportion;
    }

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

    function enableTrading() external onlyOwner {
        tradingActive = true;
        claimingFees = true;
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != UNISWAP_V2_PAIR,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((_totalSupply * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        _maxTxAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((_totalSupply * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        _maxWalletAmount = newNum * (10**18);
    }

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

    function clearStuckToken() external onlyOwner {
        _transferFrom(address(this), msg.sender, balanceOf(address(this)));
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        claimingFees = _enabled;
        swapThreshold = _amount;
    }

    function changeFees(
        uint8 reflectionFeeBuy,
        uint8 marketingFeeBuy,
        uint8 lpFeeBuy,
        uint8 buybackFeeBuy,
        uint8 burnFeeBuy,
        uint8 reflectionFeeSell,
        uint8 marketingFeeSell,
        uint8 lpFeeSell,
        uint8 buybackFeeSell,
        uint8 burnFeeSell
    ) external onlyOwner {
        uint128 __totalBuyFee = reflectionFeeBuy + marketingFeeBuy + lpFeeBuy + buybackFeeBuy + burnFeeBuy;
        uint128 __totalSellFee = reflectionFeeSell + marketingFeeSell + lpFeeSell + buybackFeeSell + burnFeeSell;

        buyFee = Fee({
            reflection: reflectionFeeBuy,
            marketing: marketingFeeBuy,
            lp: lpFeeBuy,
            buyback: buybackFeeBuy,
            burn: burnFeeBuy,
            total: __totalBuyFee
        });

        sellFee = Fee({
            reflection: reflectionFeeSell,
            marketing: marketingFeeSell,
            lp: lpFeeSell,
            buyback: buybackFeeSell,
            burn: burnFeeSell,
            total: __totalSellFee
        });
    }

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

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

    function setFeeReceivers(address m_, address lp_, address b_) external onlyOwner {
        marketingFeeReceiver = m_;
        lpFeeReceiver = lp_;
        buybackFeeReceiver = b_;
    }

    function setLimitsEnabled(bool e_) external onlyOwner {
        limitsEnabled = e_;
    }

    // Set Transfer delay
    function disableTransferDelay(bool e_) external onlyOwner returns (bool) {
        transferDelayEnabled = e_;
        return true;
    }

    function blacklist(address _address, bool _isBlacklisting) external onlyOwner {
        blacklists[_address] = _isBlacklisting;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!blacklists[recipient] && !blacklists[sender], "Blacklisted");

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (limitsEnabled) {
            if (!tradingActive) 
            {
                require(
                    isFeeExempt[sender] || isFeeExempt[recipient],
                    "Trading is not active."
                );
            }

            //when buy
            if (automatedMarketMakerPairs[sender] && !isLimitExempt[recipient]) 
            {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                require(amount + balanceOf(recipient) <= _maxWalletAmount, "Max wallet exceeded");
            }
            //when sell
            else if (automatedMarketMakerPairs[recipient] && !isLimitExempt[sender])
            {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }
            else if (!isLimitExempt[recipient]) 
            {
                require(amount + balanceOf(recipient) <= _maxWalletAmount, "Max wallet exceeded");
            }
            
            // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
            if (transferDelayEnabled) {
                if (
                    recipient != owner() &&
                    recipient != address(UNISWAP_V2_ROUTER) &&
                    recipient != UNISWAP_V2_PAIR
                ) {
                    require(
                        _holderLastTransferTimestamp[tx.origin] + 1 <
                            block.number,
                        "_transfer:: Transfer Delay enabled.  Only one purchase per two blocks allowed."
                    );
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }
        }

        if (_shouldSwapBack()) {
            _swapBack();
        }

        uint256 proportionAmount = tokensToProportion(amount);
        require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
        _rOwned[sender] = _rOwned[sender] - proportionAmount;

        uint256 proportionReceived = _shouldTakeFee(sender, recipient)
            ? _takeFeeInProportions(sender == UNISWAP_V2_PAIR ? true : false, sender, proportionAmount)
            : proportionAmount;
        _rOwned[recipient] = _rOwned[recipient] + proportionReceived;

        emit Transfer(sender, recipient, tokenFromReflection(proportionReceived));
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 proportionAmount = tokensToProportion(amount);
        require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
        _rOwned[sender] = _rOwned[sender] - proportionAmount;
        _rOwned[recipient] = _rOwned[recipient] + proportionAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _takeFeeInProportions(bool buying, address sender, uint256 proportionAmount) internal returns (uint256) {
        Fee memory __buyFee = buyFee;
        Fee memory __sellFee = sellFee;

        uint256 proportionFeeAmount =
            buying == true ? proportionAmount * __buyFee.total / 100 : proportionAmount * __sellFee.total / 100;

        // reflect
        uint256 proportionReflected = buying == true
            ? proportionFeeAmount * __buyFee.reflection / __buyFee.total
            : proportionFeeAmount * __sellFee.reflection / __sellFee.total;

        _totalProportion = _totalProportion - proportionReflected;

        // take fees
        uint256 _proportionToContract = proportionFeeAmount - proportionReflected;
        if (_proportionToContract > 0) {
            _rOwned[address(this)] = _rOwned[address(this)] + _proportionToContract;

            emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract));
        }
        emit Reflect(proportionReflected, _totalProportion);
        return proportionAmount - proportionFeeAmount;
    }

    function _shouldSwapBack() internal view returns (bool) {
        return msg.sender != UNISWAP_V2_PAIR && !inSwap && claimingFees && balanceOf(address(this)) >= swapThreshold;
    }

    function _swapBack() internal swapping {
        Fee memory __sellFee = sellFee;

        uint256 __swapThreshold = swapThreshold;
        uint256 amountToBurn = __swapThreshold * __sellFee.burn / __sellFee.total;
        uint256 amountToSwap = __swapThreshold - amountToBurn;
        approve(address(UNISWAP_V2_ROUTER), amountToSwap);

        if(amountToBurn > 0)
        {
            // burn
            _transferFrom(address(this), DEAD, amountToBurn);
        }

        // swap
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = UNISWAP_V2_ROUTER.WETH();

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

        uint256 amountETH = address(this).balance;

        uint256 totalSwapFee = __sellFee.total - __sellFee.reflection - __sellFee.burn;
        uint256 amountETHMarketing = amountETH * __sellFee.marketing / totalSwapFee;
        uint256 amountETHLP = amountETH * __sellFee.lp / totalSwapFee;
        uint256 amountETHBuyback = amountETH * __sellFee.buyback / totalSwapFee;

        // send
        (bool tmpSuccess,) = payable(lpFeeReceiver).call{value: amountETHLP}("");
        (tmpSuccess,) = payable(buybackFeeReceiver).call{value: amountETHBuyback}("");
        (tmpSuccess,) = address(marketingFeeReceiver).call{value: address(this).balance}("");
    }

    function _shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }
}

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":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":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"UNISWAP_V2_PAIR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_V2_ROUTER","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"},{"internalType":"uint8","name":"lp","type":"uint8"},{"internalType":"uint8","name":"buyback","type":"uint8"},{"internalType":"uint8","name":"burn","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"reflectionFeeBuy","type":"uint8"},{"internalType":"uint8","name":"marketingFeeBuy","type":"uint8"},{"internalType":"uint8","name":"lpFeeBuy","type":"uint8"},{"internalType":"uint8","name":"buybackFeeBuy","type":"uint8"},{"internalType":"uint8","name":"burnFeeBuy","type":"uint8"},{"internalType":"uint8","name":"reflectionFeeSell","type":"uint8"},{"internalType":"uint8","name":"marketingFeeSell","type":"uint8"},{"internalType":"uint8","name":"lpFeeSell","type":"uint8"},{"internalType":"uint8","name":"buybackFeeSell","type":"uint8"},{"internalType":"uint8","name":"burnFeeSell","type":"uint8"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"e_","type":"bool"}],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"},{"internalType":"uint8","name":"lp","type":"uint8"},{"internalType":"uint8","name":"buyback","type":"uint8"},{"internalType":"uint8","name":"burn","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"m_","type":"address"},{"internalType":"address","name":"lp_","type":"address"},{"internalType":"address","name":"b_","type":"address"}],"name":"setFeeReceivers","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":"bool","name":"e_","type":"bool"}],"name":"setLimitsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisLimitExempt","outputs":[],"stateMutability":"nonpayable","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":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600a60a09081526914195c1948151c9bdb1b60b21b60c0526002906200002b908262000685565b5060408051808201909152600981526814115411551493d31360ba1b60208201526003906200005b908262000685565b506d14bddab3e51a57cff87a500000006004556103e8600454600f6200008291906200074d565b6200008e919062000777565b6005556103e8600454600f620000a591906200074d565b620000b1919062000777565b6006556004546008819055600a805462ffffff1916620100001790556040805160c080820183525f808352601960208085018290528486018390526060808601849052608080870185905260a0968701849052600d8054651900000019006001600160a81b0319918216811790925589519788018a528688529387018590529786018590529085018490528401929092529190920152600e805490911690911790556011805460ff60a01b191690556103e890620001719060036200074d565b6200017d919062000777565b6012553480156200018c575f80fd5b50620001983362000543565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000210919062000797565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000270573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000296919062000797565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002e1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000307919062000797565b6001600160a01b03811660805290506200032381600162000592565b305f818152600960208181526040808420737a250d5630b4cf539739df2c5dacb4c659f2488d85528083529084205f199081905594845291905290620003705f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f90812093909355308352600c9182905282208054600160ff19918216811790925561dead84527f45117a726ea4f344045dc210793664a28d2d320b7e03f6bffdae553d24c3586c80549091168217905591620003ed5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790556080519091168152600c8352818120805485166001908117909155308252600b93849052918120805485168317905561dead81527f44433eeeda1d04bdae79f62169cdb2ab0a6af287fa15706d3fafdbac5fac341580549094168217909355916200048c5f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805460ff191694151594909417909355600f805472c792035fc5423b14421c0d81f4a868337680bf6001600160a01b0319918216811790925560108054821683179055601180549091169091179055600454328085526007845282852082905591519081529092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620007c6565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382165f81815260016020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200060e57607f821691505b6020821081036200062d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000680575f81815260208120601f850160051c810160208610156200065b5750805b601f850160051c820191505b818110156200067c5782815560010162000667565b5050505b505050565b81516001600160401b03811115620006a157620006a1620005e5565b620006b981620006b28454620005f9565b8462000633565b602080601f831160018114620006ef575f8415620006d75750858301515b5f19600386901b1c1916600185901b1785556200067c565b5f85815260208120601f198616915b828110156200071f57888601518255948401946001909101908401620006fe565b50858210156200073d57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176200077157634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826200079257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620007a8575f80fd5b81516001600160a01b0381168114620007bf575f80fd5b9392505050565b60805161262e620007fb5f395f818161089601528181610d8f0152818161161e015281816117e70152611a8b015261262e5ff3fe60806040526004361061026d575f3560e01c8063658d4b7f1161014a578063b0f7ec38116100be578063d7c0103211610078578063d7c01032146107d0578063d85a2828146107ef578063dd62ed3e14610803578063df20fd4914610847578063f2fde38b14610866578063f40acc3d14610885575f80fd5b8063b0f7ec381461070d578063b62496f51461072d578063bbc0c7421461075b578063c18bc19514610774578063c38a31de14610793578063c876d0b9146107b2575f80fd5b80638a8c523c1161010f5780638a8c523c146106505780638da5cb5b1461066457806395d89b41146106945780639a7a23d6146106a8578063a82ed9ec146106c7578063a9059cbb146106ee575f80fd5b8063658d4b7f146105d45780636c0a24eb146105f357806370a0823114610608578063715018a6146106275780637d1db4a51461063b575f80fd5b80632b14ca56116101e1578063364333f4116101a6578063364333f4146104f3578063404e51291461050757806341aea9de1461052657806345ce5365146105455780634706240214610564578063571ac8b0146105b5575f80fd5b80632b14ca56146103e55780632d8381191461047b578063313ce5671461049a57806334b86560146104b55780633582ad23146104d4575f80fd5b80631780028711610232578063178002871461034957806318160ddd1461035e578063203e727e1461037257806323b872dd1461039357806324c39023146103b25780632b112e49146103d1575f80fd5b80630445b6671461027857806306fdde03146102a0578063095ea7b3146102c15780630cfc15f9146102f057806316c021291461031b575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b5061028d60125481565b6040519081526020015b60405180910390f35b3480156102ab575f80fd5b506102b46108b8565b6040516102979190612179565b3480156102cc575f80fd5b506102e06102db3660046121d8565b610948565b6040519015158152602001610297565b3480156102fb575f80fd5b5061028d61030a366004612202565b60076020525f908152604090205481565b348015610326575f80fd5b506102e0610335366004612202565b60146020525f908152604090205460ff1681565b348015610354575f80fd5b5061028d60085481565b348015610369575f80fd5b5060045461028d565b34801561037d575f80fd5b5061039161038c36600461221d565b6109b4565b005b34801561039e575f80fd5b506102e06103ad366004612234565b610a6f565b3480156103bd575f80fd5b506103916103cc366004612281565b610b72565b3480156103dc575f80fd5b5061028d610ba4565b3480156103f0575f80fd5b50600e546104369060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b6040805160ff9788168152958716602087015293861693850193909352908416606084015290921660808201526001600160801b0390911660a082015260c001610297565b348015610486575f80fd5b5061028d61049536600461221d565b610bd5565b3480156104a5575f80fd5b5060405160128152602001610297565b3480156104c0575f80fd5b506102e06104cf3660046122b4565b610bf1565b3480156104df575f80fd5b50600a546102e09062010000900460ff1681565b3480156104fe575f80fd5b50610391610c16565b348015610512575f80fd5b50610391610521366004612281565b610c72565b348015610531575f80fd5b506103916105403660046122b4565b610ca4565b348015610550575f80fd5b5061028d61055f36600461221d565b610cc8565b34801561056f575f80fd5b50600d546104369060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b3480156105c0575f80fd5b506102e06105cf366004612202565b610cda565b3480156105df575f80fd5b506103916105ee366004612281565b610ce6565b3480156105fe575f80fd5b5061028d60065481565b348015610613575f80fd5b5061028d610622366004612202565b610d18565b348015610632575f80fd5b50610391610d39565b348015610646575f80fd5b5061028d60055481565b34801561065b575f80fd5b50610391610d4c565b34801561066f575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610297565b34801561069f575f80fd5b506102b4610d76565b3480156106b3575f80fd5b506103916106c2366004612281565b610d85565b3480156106d2575f80fd5b5061067c737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156106f9575f80fd5b506102e06107083660046121d8565b610e42565b348015610718575f80fd5b506011546102e090600160a01b900460ff1681565b348015610738575f80fd5b506102e0610747366004612202565b60016020525f908152604090205460ff1681565b348015610766575f80fd5b50600a546102e09060ff1681565b34801561077f575f80fd5b5061039161078e36600461221d565b610e4e565b34801561079e575f80fd5b506103916107ad3660046122dd565b610ef8565b3480156107bd575f80fd5b50600a546102e090610100900460ff1681565b3480156107db575f80fd5b506103916107ea366004612391565b611198565b3480156107fa575f80fd5b506103916111df565b34801561080e575f80fd5b5061028d61081d3660046123d9565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610852575f80fd5b50610391610861366004612410565b6111fa565b348015610871575f80fd5b50610391610880366004612202565b611224565b348015610890575f80fd5b5061067c7f000000000000000000000000000000000000000000000000000000000000000081565b6060600280546108c79061242a565b80601f01602080910402602001604051908101604052809291908181526020018280546108f39061242a565b801561093e5780601f106109155761010080835404028352916020019161093e565b820191905f5260205f20905b81548152906001019060200180831161092157829003601f168201915b5050505050905090565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109a29086815260200190565b60405180910390a35060015b92915050565b6109bc61129a565b670de0b6b3a76400006103e860045460016109d79190612476565b6109e1919061248d565b6109eb919061248d565b811015610a575760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b60648201526084015b60405180910390fd5b610a6981670de0b6b3a7640000612476565b60055550565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f1914610b5d576001600160a01b0384165f908152600960209081526040808320338452909152902054821115610b0b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a4e565b6001600160a01b0384165f908152600960209081526040808320338452909152902054610b399083906124ac565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b610b688484846112f3565b90505b9392505050565b610b7a61129a565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f610bae5f610d18565b610bb961dead610d18565b600454610bc691906124ac565b610bd091906124ac565b905090565b5f60085460045483610be79190612476565b6109ae919061248d565b5f610bfa61129a565b50600a805461ff0019166101008315150217905560015b919050565b610c1e61129a565b6040515f90339047908381818185875af1925050503d805f8114610c5d576040519150601f19603f3d011682016040523d82523d5f602084013e610c62565b606091505b5050905080610c6f575f80fd5b50565b610c7a61129a565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b610cac61129a565b600a8054911515620100000262ff000019909216919091179055565b5f60045460085483610be79190612476565b5f6109ae825f19610948565b610cee61129a565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b0381165f908152600760205260408120546109ae90610bd5565b610d4161129a565b610d4a5f6118b9565b565b610d5461129a565b600a805460ff191660011790556011805460ff60a01b1916600160a01b179055565b6060600380546108c79061242a565b610d8d61129a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610e345760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a4e565b610e3e8282611908565b5050565b5f610b6b3384846112f3565b610e5661129a565b670de0b6b3a76400006103e86004546005610e719190612476565b610e7b919061248d565b610e85919061248d565b811015610ee05760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610a4e565b610ef281670de0b6b3a7640000612476565b60065550565b610f0061129a565b5f86888a610f0e8d8f6124bf565b610f1891906124bf565b610f2291906124bf565b610f2c91906124bf565b60ff1690505f828486610f3f898b6124bf565b610f4991906124bf565b610f5391906124bf565b610f5d91906124bf565b60ff1690506040518060c001604052808d60ff1681526020018c60ff1681526020018b60ff1681526020018a60ff1681526020018960ff168152602001836001600160801b0316815250600d5f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151815f0160016101000a81548160ff021916908360ff1602179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151815f0160036101000a81548160ff021916908360ff1602179055506080820151815f0160046101000a81548160ff021916908360ff16021790555060a0820151815f0160056101000a8154816001600160801b0302191690836001600160801b031602179055509050506040518060c001604052808860ff1681526020018760ff1681526020018660ff1681526020018560ff1681526020018460ff168152602001826001600160801b0316815250600e5f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151815f0160016101000a81548160ff021916908360ff1602179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151815f0160036101000a81548160ff021916908360ff1602179055506080820151815f0160046101000a81548160ff021916908360ff16021790555060a0820151815f0160056101000a8154816001600160801b0302191690836001600160801b03160217905550905050505050505050505050505050565b6111a061129a565b600f80546001600160a01b039485166001600160a01b031991821617909155601080549385169382169390931790925560118054919093169116179055565b6111e761129a565b610c6f30336111f530610d18565b6112f3565b61120261129a565b60118054921515600160a01b0260ff60a01b1990931692909217909155601255565b61122c61129a565b6001600160a01b0381166112915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a4e565b610c6f816118b9565b5f546001600160a01b03163314610d4a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4e565b6001600160a01b0382165f9081526014602052604081205460ff1615801561133357506001600160a01b0384165f9081526014602052604090205460ff16155b61136d5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610a4e565b60135460ff161561138a5761138384848461195b565b9050610b6b565b600a5462010000900460ff161561171057600a5460ff16611427576001600160a01b0384165f908152600b602052604090205460ff16806113e257506001600160a01b0383165f908152600b602052604090205460ff165b6114275760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a4e565b6001600160a01b0384165f9081526001602052604090205460ff16801561146657506001600160a01b0383165f908152600c602052604090205460ff16155b156114ec5760055482111561148d5760405162461bcd60e51b8152600401610a4e906124d8565b60065461149984610d18565b6114a39084612520565b11156114e75760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a4e565b6115cb565b6001600160a01b0383165f9081526001602052604090205460ff16801561152b57506001600160a01b0384165f908152600c602052604090205460ff16155b15611552576005548211156114e75760405162461bcd60e51b8152600401610a4e906124d8565b6001600160a01b0383165f908152600c602052604090205460ff166115cb5760065461157d84610d18565b6115879084612520565b11156115cb5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a4e565b600a54610100900460ff1615611710575f546001600160a01b0384811691161480159061161557506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b801561165357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b1561171057325f908152601560205260409020544390611674906001612520565b106116fe5760405162461bcd60e51b815260206004820152604e60248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e65207075726368617365207065722074776f206260648201526d3637b1b5b99030b63637bbb2b21760911b608482015260a401610a4e565b325f9081526015602052604090204390555b611718611a7f565b1561172557611725611aeb565b5f61172f83610cc8565b6001600160a01b0386165f908152600760205260409020549091508111156117905760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610a4e565b6001600160a01b0385165f908152600760205260409020546117b39082906124ac565b6001600160a01b0386165f908152600760205260408120919091556117d88686611ec9565b6117e2578161182e565b61182e7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614611824575f611827565b60015b8784611f0d565b6001600160a01b0386165f90815260076020526040902054909150611854908290612520565b6001600160a01b038087165f8181526007602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61189c84610bd5565b60405190815260200160405180910390a350600195945050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382165f81815260016020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b5f8061196683610cc8565b6001600160a01b0386165f908152600760205260409020549091508111156119c75760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610a4e565b6001600160a01b0385165f908152600760205260409020546119ea9082906124ac565b6001600160a01b038087165f908152600760205260408082209390935590861681522054611a19908290612520565b6001600160a01b038086165f8181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a6c9087815260200190565b60405180910390a3506001949350505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590611abc575060135460ff16155b8015611ad15750601154600160a01b900460ff165b8015610bd05750601254611ae430610d18565b1015905090565b60138054600160ff199091161790556040805160c081018252600e5460ff80821683526101008204811660208401526201000082048116938301939093526301000000810483166060830152640100000000810490921660808201819052600160281b9092046001600160801b031660a0820181905260125491925f9190611b739084612476565b611b7d919061248d565b90505f611b8a82846124ac565b9050611baa737a250d5630b4cf539739df2c5dacb4c659f2488d82610948565b508115611bc057611bbe3061dead846112f3565b505b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611bf357611bf3612533565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c879190612547565b81600181518110611c9a57611c9a612533565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611cf19085905f90869030904290600401612562565b5f604051808303815f87803b158015611d08575f80fd5b505af1158015611d1a573d5f803e3d5ffd5b505050505f4790505f866080015160ff16875f015160ff168860a00151611d4191906125d1565b611d4b91906125d1565b6001600160801b031690505f81886020015160ff1684611d6b9190612476565b611d75919061248d565b90505f82896040015160ff1685611d8c9190612476565b611d96919061248d565b90505f838a6060015160ff1686611dad9190612476565b611db7919061248d565b6010546040519192505f916001600160a01b039091169084908381818185875af1925050503d805f8114611e06576040519150601f19603f3d011682016040523d82523d5f602084013e611e0b565b606091505b50506011546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611e58576040519150601f19603f3d011682016040523d82523d5f602084013e611e5d565b606091505b5050600f546040519192506001600160a01b03169047905f81818185875af1925050503d805f8114611eaa576040519150601f19603f3d011682016040523d82523d5f602084013e611eaf565b606091505b50506013805460ff19169055505050505050505050505050565b6001600160a01b0382165f908152600b602052604081205460ff16158015610b6b5750506001600160a01b03165f908152600b602052604090205460ff1615919050565b6040805160c08082018352600d5460ff8082168452610100808304821660208087019190915262010000808504841687890152630100000080860485166060808a019190915264010000000080880487166080808c01919091526001600160801b03600160281b998a9004811660a0808e01919091528d519b8c018e52600e54808b168d529889048a16978c019790975294870488169b8a019b909b529185048616908801528304909316968501969096529190910416928101929092525f91828615156001146120025760648260a001516001600160801b031686611ff39190612476565b611ffd919061248d565b612027565b60648360a001516001600160801b03168661201d9190612476565b612027919061248d565b90505f600188151514612063578260a001516001600160801b0316835f015160ff16836120549190612476565b61205e919061248d565b61208d565b8360a001516001600160801b0316845f015160ff16836120839190612476565b61208d919061248d565b90508060085461209d91906124ac565b6008555f6120ab82846124ac565b9050801561212557305f908152600760205260409020546120cd908290612520565b305f818152600760205260409020919091556001600160a01b0389167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61211384610bd5565b60405190815260200160405180910390a35b6008546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a161216c83886124ac565b9998505050505050505050565b5f6020808352835180828501525f5b818110156121a457858101830151858201604001528201612188565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c6f575f80fd5b5f80604083850312156121e9575f80fd5b82356121f4816121c4565b946020939093013593505050565b5f60208284031215612212575f80fd5b8135610b6b816121c4565b5f6020828403121561222d575f80fd5b5035919050565b5f805f60608486031215612246575f80fd5b8335612251816121c4565b92506020840135612261816121c4565b929592945050506040919091013590565b80358015158114610c11575f80fd5b5f8060408385031215612292575f80fd5b823561229d816121c4565b91506122ab60208401612272565b90509250929050565b5f602082840312156122c4575f80fd5b610b6b82612272565b803560ff81168114610c11575f80fd5b5f805f805f805f805f806101408b8d0312156122f7575f80fd5b6123008b6122cd565b995061230e60208c016122cd565b985061231c60408c016122cd565b975061232a60608c016122cd565b965061233860808c016122cd565b955061234660a08c016122cd565b945061235460c08c016122cd565b935061236260e08c016122cd565b92506123716101008c016122cd565b91506123806101208c016122cd565b90509295989b9194979a5092959850565b5f805f606084860312156123a3575f80fd5b83356123ae816121c4565b925060208401356123be816121c4565b915060408401356123ce816121c4565b809150509250925092565b5f80604083850312156123ea575f80fd5b82356123f5816121c4565b91506020830135612405816121c4565b809150509250929050565b5f8060408385031215612421575f80fd5b6121f483612272565b600181811c9082168061243e57607f821691505b60208210810361245c57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176109ae576109ae612462565b5f826124a757634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156109ae576109ae612462565b60ff81811683821601908111156109ae576109ae612462565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b808201808211156109ae576109ae612462565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612557575f80fd5b8151610b6b816121c4565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156125b05784516001600160a01b03168352938301939183019160010161258b565b50506001600160a01b03969096166060850152505050608001529392505050565b6001600160801b038281168282160390808211156125f1576125f1612462565b509291505056fea2646970667358221220dee4b68de56cfd3641a7cbcb55da7fe2adcd6e0d2160c4d8feca3aa3d41792f864736f6c63430008140033

Deployed Bytecode

0x60806040526004361061026d575f3560e01c8063658d4b7f1161014a578063b0f7ec38116100be578063d7c0103211610078578063d7c01032146107d0578063d85a2828146107ef578063dd62ed3e14610803578063df20fd4914610847578063f2fde38b14610866578063f40acc3d14610885575f80fd5b8063b0f7ec381461070d578063b62496f51461072d578063bbc0c7421461075b578063c18bc19514610774578063c38a31de14610793578063c876d0b9146107b2575f80fd5b80638a8c523c1161010f5780638a8c523c146106505780638da5cb5b1461066457806395d89b41146106945780639a7a23d6146106a8578063a82ed9ec146106c7578063a9059cbb146106ee575f80fd5b8063658d4b7f146105d45780636c0a24eb146105f357806370a0823114610608578063715018a6146106275780637d1db4a51461063b575f80fd5b80632b14ca56116101e1578063364333f4116101a6578063364333f4146104f3578063404e51291461050757806341aea9de1461052657806345ce5365146105455780634706240214610564578063571ac8b0146105b5575f80fd5b80632b14ca56146103e55780632d8381191461047b578063313ce5671461049a57806334b86560146104b55780633582ad23146104d4575f80fd5b80631780028711610232578063178002871461034957806318160ddd1461035e578063203e727e1461037257806323b872dd1461039357806324c39023146103b25780632b112e49146103d1575f80fd5b80630445b6671461027857806306fdde03146102a0578063095ea7b3146102c15780630cfc15f9146102f057806316c021291461031b575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b5061028d60125481565b6040519081526020015b60405180910390f35b3480156102ab575f80fd5b506102b46108b8565b6040516102979190612179565b3480156102cc575f80fd5b506102e06102db3660046121d8565b610948565b6040519015158152602001610297565b3480156102fb575f80fd5b5061028d61030a366004612202565b60076020525f908152604090205481565b348015610326575f80fd5b506102e0610335366004612202565b60146020525f908152604090205460ff1681565b348015610354575f80fd5b5061028d60085481565b348015610369575f80fd5b5060045461028d565b34801561037d575f80fd5b5061039161038c36600461221d565b6109b4565b005b34801561039e575f80fd5b506102e06103ad366004612234565b610a6f565b3480156103bd575f80fd5b506103916103cc366004612281565b610b72565b3480156103dc575f80fd5b5061028d610ba4565b3480156103f0575f80fd5b50600e546104369060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b6040805160ff9788168152958716602087015293861693850193909352908416606084015290921660808201526001600160801b0390911660a082015260c001610297565b348015610486575f80fd5b5061028d61049536600461221d565b610bd5565b3480156104a5575f80fd5b5060405160128152602001610297565b3480156104c0575f80fd5b506102e06104cf3660046122b4565b610bf1565b3480156104df575f80fd5b50600a546102e09062010000900460ff1681565b3480156104fe575f80fd5b50610391610c16565b348015610512575f80fd5b50610391610521366004612281565b610c72565b348015610531575f80fd5b506103916105403660046122b4565b610ca4565b348015610550575f80fd5b5061028d61055f36600461221d565b610cc8565b34801561056f575f80fd5b50600d546104369060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b3480156105c0575f80fd5b506102e06105cf366004612202565b610cda565b3480156105df575f80fd5b506103916105ee366004612281565b610ce6565b3480156105fe575f80fd5b5061028d60065481565b348015610613575f80fd5b5061028d610622366004612202565b610d18565b348015610632575f80fd5b50610391610d39565b348015610646575f80fd5b5061028d60055481565b34801561065b575f80fd5b50610391610d4c565b34801561066f575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610297565b34801561069f575f80fd5b506102b4610d76565b3480156106b3575f80fd5b506103916106c2366004612281565b610d85565b3480156106d2575f80fd5b5061067c737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156106f9575f80fd5b506102e06107083660046121d8565b610e42565b348015610718575f80fd5b506011546102e090600160a01b900460ff1681565b348015610738575f80fd5b506102e0610747366004612202565b60016020525f908152604090205460ff1681565b348015610766575f80fd5b50600a546102e09060ff1681565b34801561077f575f80fd5b5061039161078e36600461221d565b610e4e565b34801561079e575f80fd5b506103916107ad3660046122dd565b610ef8565b3480156107bd575f80fd5b50600a546102e090610100900460ff1681565b3480156107db575f80fd5b506103916107ea366004612391565b611198565b3480156107fa575f80fd5b506103916111df565b34801561080e575f80fd5b5061028d61081d3660046123d9565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b348015610852575f80fd5b50610391610861366004612410565b6111fa565b348015610871575f80fd5b50610391610880366004612202565b611224565b348015610890575f80fd5b5061067c7f00000000000000000000000006765385ad742a4378f660af84971c83dee6909581565b6060600280546108c79061242a565b80601f01602080910402602001604051908101604052809291908181526020018280546108f39061242a565b801561093e5780601f106109155761010080835404028352916020019161093e565b820191905f5260205f20905b81548152906001019060200180831161092157829003601f168201915b5050505050905090565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109a29086815260200190565b60405180910390a35060015b92915050565b6109bc61129a565b670de0b6b3a76400006103e860045460016109d79190612476565b6109e1919061248d565b6109eb919061248d565b811015610a575760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b60648201526084015b60405180910390fd5b610a6981670de0b6b3a7640000612476565b60055550565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f1914610b5d576001600160a01b0384165f908152600960209081526040808320338452909152902054821115610b0b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a4e565b6001600160a01b0384165f908152600960209081526040808320338452909152902054610b399083906124ac565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b610b688484846112f3565b90505b9392505050565b610b7a61129a565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f610bae5f610d18565b610bb961dead610d18565b600454610bc691906124ac565b610bd091906124ac565b905090565b5f60085460045483610be79190612476565b6109ae919061248d565b5f610bfa61129a565b50600a805461ff0019166101008315150217905560015b919050565b610c1e61129a565b6040515f90339047908381818185875af1925050503d805f8114610c5d576040519150601f19603f3d011682016040523d82523d5f602084013e610c62565b606091505b5050905080610c6f575f80fd5b50565b610c7a61129a565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b610cac61129a565b600a8054911515620100000262ff000019909216919091179055565b5f60045460085483610be79190612476565b5f6109ae825f19610948565b610cee61129a565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b0381165f908152600760205260408120546109ae90610bd5565b610d4161129a565b610d4a5f6118b9565b565b610d5461129a565b600a805460ff191660011790556011805460ff60a01b1916600160a01b179055565b6060600380546108c79061242a565b610d8d61129a565b7f00000000000000000000000006765385ad742a4378f660af84971c83dee690956001600160a01b0316826001600160a01b031603610e345760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a4e565b610e3e8282611908565b5050565b5f610b6b3384846112f3565b610e5661129a565b670de0b6b3a76400006103e86004546005610e719190612476565b610e7b919061248d565b610e85919061248d565b811015610ee05760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610a4e565b610ef281670de0b6b3a7640000612476565b60065550565b610f0061129a565b5f86888a610f0e8d8f6124bf565b610f1891906124bf565b610f2291906124bf565b610f2c91906124bf565b60ff1690505f828486610f3f898b6124bf565b610f4991906124bf565b610f5391906124bf565b610f5d91906124bf565b60ff1690506040518060c001604052808d60ff1681526020018c60ff1681526020018b60ff1681526020018a60ff1681526020018960ff168152602001836001600160801b0316815250600d5f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151815f0160016101000a81548160ff021916908360ff1602179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151815f0160036101000a81548160ff021916908360ff1602179055506080820151815f0160046101000a81548160ff021916908360ff16021790555060a0820151815f0160056101000a8154816001600160801b0302191690836001600160801b031602179055509050506040518060c001604052808860ff1681526020018760ff1681526020018660ff1681526020018560ff1681526020018460ff168152602001826001600160801b0316815250600e5f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151815f0160016101000a81548160ff021916908360ff1602179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151815f0160036101000a81548160ff021916908360ff1602179055506080820151815f0160046101000a81548160ff021916908360ff16021790555060a0820151815f0160056101000a8154816001600160801b0302191690836001600160801b03160217905550905050505050505050505050505050565b6111a061129a565b600f80546001600160a01b039485166001600160a01b031991821617909155601080549385169382169390931790925560118054919093169116179055565b6111e761129a565b610c6f30336111f530610d18565b6112f3565b61120261129a565b60118054921515600160a01b0260ff60a01b1990931692909217909155601255565b61122c61129a565b6001600160a01b0381166112915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a4e565b610c6f816118b9565b5f546001600160a01b03163314610d4a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a4e565b6001600160a01b0382165f9081526014602052604081205460ff1615801561133357506001600160a01b0384165f9081526014602052604090205460ff16155b61136d5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610a4e565b60135460ff161561138a5761138384848461195b565b9050610b6b565b600a5462010000900460ff161561171057600a5460ff16611427576001600160a01b0384165f908152600b602052604090205460ff16806113e257506001600160a01b0383165f908152600b602052604090205460ff165b6114275760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a4e565b6001600160a01b0384165f9081526001602052604090205460ff16801561146657506001600160a01b0383165f908152600c602052604090205460ff16155b156114ec5760055482111561148d5760405162461bcd60e51b8152600401610a4e906124d8565b60065461149984610d18565b6114a39084612520565b11156114e75760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a4e565b6115cb565b6001600160a01b0383165f9081526001602052604090205460ff16801561152b57506001600160a01b0384165f908152600c602052604090205460ff16155b15611552576005548211156114e75760405162461bcd60e51b8152600401610a4e906124d8565b6001600160a01b0383165f908152600c602052604090205460ff166115cb5760065461157d84610d18565b6115879084612520565b11156115cb5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a4e565b600a54610100900460ff1615611710575f546001600160a01b0384811691161480159061161557506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b801561165357507f00000000000000000000000006765385ad742a4378f660af84971c83dee690956001600160a01b0316836001600160a01b031614155b1561171057325f908152601560205260409020544390611674906001612520565b106116fe5760405162461bcd60e51b815260206004820152604e60248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e65207075726368617365207065722074776f206260648201526d3637b1b5b99030b63637bbb2b21760911b608482015260a401610a4e565b325f9081526015602052604090204390555b611718611a7f565b1561172557611725611aeb565b5f61172f83610cc8565b6001600160a01b0386165f908152600760205260409020549091508111156117905760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610a4e565b6001600160a01b0385165f908152600760205260409020546117b39082906124ac565b6001600160a01b0386165f908152600760205260408120919091556117d88686611ec9565b6117e2578161182e565b61182e7f00000000000000000000000006765385ad742a4378f660af84971c83dee690956001600160a01b0316876001600160a01b031614611824575f611827565b60015b8784611f0d565b6001600160a01b0386165f90815260076020526040902054909150611854908290612520565b6001600160a01b038087165f8181526007602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61189c84610bd5565b60405190815260200160405180910390a350600195945050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382165f81815260016020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b5f8061196683610cc8565b6001600160a01b0386165f908152600760205260409020549091508111156119c75760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610a4e565b6001600160a01b0385165f908152600760205260409020546119ea9082906124ac565b6001600160a01b038087165f908152600760205260408082209390935590861681522054611a19908290612520565b6001600160a01b038086165f8181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a6c9087815260200190565b60405180910390a3506001949350505050565b5f336001600160a01b037f00000000000000000000000006765385ad742a4378f660af84971c83dee690951614801590611abc575060135460ff16155b8015611ad15750601154600160a01b900460ff165b8015610bd05750601254611ae430610d18565b1015905090565b60138054600160ff199091161790556040805160c081018252600e5460ff80821683526101008204811660208401526201000082048116938301939093526301000000810483166060830152640100000000810490921660808201819052600160281b9092046001600160801b031660a0820181905260125491925f9190611b739084612476565b611b7d919061248d565b90505f611b8a82846124ac565b9050611baa737a250d5630b4cf539739df2c5dacb4c659f2488d82610948565b508115611bc057611bbe3061dead846112f3565b505b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611bf357611bf3612533565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c879190612547565b81600181518110611c9a57611c9a612533565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611cf19085905f90869030904290600401612562565b5f604051808303815f87803b158015611d08575f80fd5b505af1158015611d1a573d5f803e3d5ffd5b505050505f4790505f866080015160ff16875f015160ff168860a00151611d4191906125d1565b611d4b91906125d1565b6001600160801b031690505f81886020015160ff1684611d6b9190612476565b611d75919061248d565b90505f82896040015160ff1685611d8c9190612476565b611d96919061248d565b90505f838a6060015160ff1686611dad9190612476565b611db7919061248d565b6010546040519192505f916001600160a01b039091169084908381818185875af1925050503d805f8114611e06576040519150601f19603f3d011682016040523d82523d5f602084013e611e0b565b606091505b50506011546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611e58576040519150601f19603f3d011682016040523d82523d5f602084013e611e5d565b606091505b5050600f546040519192506001600160a01b03169047905f81818185875af1925050503d805f8114611eaa576040519150601f19603f3d011682016040523d82523d5f602084013e611eaf565b606091505b50506013805460ff19169055505050505050505050505050565b6001600160a01b0382165f908152600b602052604081205460ff16158015610b6b5750506001600160a01b03165f908152600b602052604090205460ff1615919050565b6040805160c08082018352600d5460ff8082168452610100808304821660208087019190915262010000808504841687890152630100000080860485166060808a019190915264010000000080880487166080808c01919091526001600160801b03600160281b998a9004811660a0808e01919091528d519b8c018e52600e54808b168d529889048a16978c019790975294870488169b8a019b909b529185048616908801528304909316968501969096529190910416928101929092525f91828615156001146120025760648260a001516001600160801b031686611ff39190612476565b611ffd919061248d565b612027565b60648360a001516001600160801b03168661201d9190612476565b612027919061248d565b90505f600188151514612063578260a001516001600160801b0316835f015160ff16836120549190612476565b61205e919061248d565b61208d565b8360a001516001600160801b0316845f015160ff16836120839190612476565b61208d919061248d565b90508060085461209d91906124ac565b6008555f6120ab82846124ac565b9050801561212557305f908152600760205260409020546120cd908290612520565b305f818152600760205260409020919091556001600160a01b0389167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61211384610bd5565b60405190815260200160405180910390a35b6008546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a161216c83886124ac565b9998505050505050505050565b5f6020808352835180828501525f5b818110156121a457858101830151858201604001528201612188565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c6f575f80fd5b5f80604083850312156121e9575f80fd5b82356121f4816121c4565b946020939093013593505050565b5f60208284031215612212575f80fd5b8135610b6b816121c4565b5f6020828403121561222d575f80fd5b5035919050565b5f805f60608486031215612246575f80fd5b8335612251816121c4565b92506020840135612261816121c4565b929592945050506040919091013590565b80358015158114610c11575f80fd5b5f8060408385031215612292575f80fd5b823561229d816121c4565b91506122ab60208401612272565b90509250929050565b5f602082840312156122c4575f80fd5b610b6b82612272565b803560ff81168114610c11575f80fd5b5f805f805f805f805f806101408b8d0312156122f7575f80fd5b6123008b6122cd565b995061230e60208c016122cd565b985061231c60408c016122cd565b975061232a60608c016122cd565b965061233860808c016122cd565b955061234660a08c016122cd565b945061235460c08c016122cd565b935061236260e08c016122cd565b92506123716101008c016122cd565b91506123806101208c016122cd565b90509295989b9194979a5092959850565b5f805f606084860312156123a3575f80fd5b83356123ae816121c4565b925060208401356123be816121c4565b915060408401356123ce816121c4565b809150509250925092565b5f80604083850312156123ea575f80fd5b82356123f5816121c4565b91506020830135612405816121c4565b809150509250929050565b5f8060408385031215612421575f80fd5b6121f483612272565b600181811c9082168061243e57607f821691505b60208210810361245c57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176109ae576109ae612462565b5f826124a757634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156109ae576109ae612462565b60ff81811683821601908111156109ae576109ae612462565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b808201808211156109ae576109ae612462565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612557575f80fd5b8151610b6b816121c4565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156125b05784516001600160a01b03168352938301939183019160010161258b565b50506001600160a01b03969096166060850152505050608001529392505050565b6001600160801b038281168282160390808211156125f1576125f1612462565b509291505056fea2646970667358221220dee4b68de56cfd3641a7cbcb55da7fe2adcd6e0d2160c4d8feca3aa3d41792f864736f6c63430008140033

Deployed Bytecode Sourcemap

7147:15255:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9079:56;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9079:56:0;;;;;;;;11676:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10513:216::-;;;;;;;;;;-1:-1:-1;10513:216:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;10513:216:0;1205:187:1;8325:42:0;;;;;;;;;;-1:-1:-1;8325:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;9160;;;;;;;;;;-1:-1:-1;9160:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8374:46;;;;;;;;;;;;;;;;11480:102;;;;;;;;;;-1:-1:-1;11562:12:0;;11480:102;;13247:266;;;;;;;;;;-1:-1:-1;13247:266:0;;;;;:::i;:::-;;:::i;:::-;;11031:441;;;;;;;;;;-1:-1:-1;11031:441:0;;;;;:::i;:::-;;:::i;15495:123::-;;;;;;;;;;-1:-1:-1;15495:123:0;;;;;:::i;:::-;;:::i;12472:136::-;;;;;;;;;;;;;:::i;8814:95::-;;;;;;;;;;-1:-1:-1;8814:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8814:95:0;;-1:-1:-1;;;;;8814:95:0;;;;;;;3077:4:1;3065:17;;;3047:36;;3119:17;;;3114:2;3099:18;;3092:45;3173:17;;;3153:18;;;3146:45;;;;3227:17;;;3222:2;3207:18;;3200:45;3282:17;;;3276:3;3261:19;;3254:46;-1:-1:-1;;;;;3337:47:1;;;3331:3;3316:19;;3309:76;3034:3;3019:19;8814:95:0;2780:611:1;12315:149:0;;;;;;;;;;-1:-1:-1;12315:149:0;;;;;:::i;:::-;;:::i;11590:78::-;;;;;;;;;;-1:-1:-1;11590:78:0;;11658:2;3538:36:1;;3526:2;3511:18;11590:78:0;3396:184:1;15949:139:0;;;;;;;;;;-1:-1:-1;15949:139:0;;;;;:::i;:::-;;:::i;8584:32::-;;;;;;;;;;-1:-1:-1;8584:32:0;;;;;;;;;;;13791:170;;;;;;;;;;;;;:::i;16096:135::-;;;;;;;;;;-1:-1:-1;16096:135:0;;;;;:::i;:::-;;:::i;15823:91::-;;;;;;;;;;-1:-1:-1;15823:91:0;;;;;:::i;:::-;;:::i;12167:140::-;;;;;;;;;;-1:-1:-1;12167:140:0;;;;;:::i;:::-;;:::i;8713:94::-;;;;;;;;;;-1:-1:-1;8713:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8713:94:0;;-1:-1:-1;;;;;8713:94:0;;;10737:122;;;;;;;;;;-1:-1:-1;10737:122:0;;;;;:::i;:::-;;:::i;15368:119::-;;;;;;;;;;-1:-1:-1;15368:119:0;;;;;:::i;:::-;;:::i;8138:58::-;;;;;;;;;;;;;;;;11866:138;;;;;;;;;;-1:-1:-1;11866:138:0;;;;;:::i;:::-;;:::i;2973:103::-;;;;;;;;;;;;;:::i;8077:54::-;;;;;;;;;;;;;;;;12616:113;;;;;;;;;;;;;:::i;2325:87::-;;;;;;;;;;-1:-1:-1;2371:7:0;2398:6;-1:-1:-1;;;;;2398:6:0;2325:87;;;-1:-1:-1;;;;;3934:32:1;;;3916:51;;3904:2;3889:18;2325:87:0;3770:203:1;11769:89:0;;;;;;;;;;;;;:::i;12737:306::-;;;;;;;;;;-1:-1:-1;12737:306:0;;;;;:::i;:::-;;:::i;7537:126::-;;;;;;;;;;;;7620:42;7537:126;;10867:156;;;;;;;;;;-1:-1:-1;10867:156:0;;;;;:::i;:::-;;:::i;9040:32::-;;;;;;;;;;-1:-1:-1;9040:32:0;;;;-1:-1:-1;;;9040:32:0;;;;;;7717:57;;;;;;;;;;-1:-1:-1;7717:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8497:33;;;;;;;;;;-1:-1:-1;8497:33:0;;;;;;;;13521:262;;;;;;;;;;-1:-1:-1;13521:262:0;;;;;:::i;:::-;;:::i;14272:1088::-;;;;;;;;;;-1:-1:-1;14272:1088:0;;;;;:::i;:::-;;:::i;8537:40::-;;;;;;;;;;-1:-1:-1;8537:40:0;;;;;;;;;;;15626:189;;;;;;;;;;-1:-1:-1;15626:189:0;;;;;:::i;:::-;;:::i;13969:131::-;;;;;;;;;;;;;:::i;12012:147::-;;;;;;;;;;-1:-1:-1;12012:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;12123:19:0;;;12096:7;12123:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12012:147;14108:156;;;;;;;;;;-1:-1:-1;14108:156:0;;;;;:::i;:::-;;:::i;3231:201::-;;;;;;;;;;-1:-1:-1;3231:201:0;;;;;:::i;:::-;;:::i;7670:40::-;;;;;;;;;;;;;;;11676:85;11715:13;11748:5;11741:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11676:85;:::o;10513:216::-;10617:10;10588:4;10605:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10605:32:0;;;;;;;;;;:41;;;10662:37;10588:4;;10605:32;;10662:37;;;;10640:6;160:25:1;;148:2;133:18;;14:177;10662:37:0;;;;;;;;-1:-1:-1;10717:4:0;10513:216;;;;;:::o;13247:266::-;2211:13;:11;:13::i;:::-;13383:4:::1;13375;13355:12;;13370:1;13355:16;;;;:::i;:::-;13354:25;;;;:::i;:::-;13353:34;;;;:::i;:::-;13343:6;:44;;13321:141;;;::::0;-1:-1:-1;;;13321:141:0;;7491:2:1;13321:141:0::1;::::0;::::1;7473:21:1::0;7530:2;7510:18;;;7503:30;7569:34;7549:18;;;7542:62;-1:-1:-1;;;7620:18:1;;;7613:45;7675:19;;13321:141:0::1;;;;;;;;;13488:17;:6:::0;13498::::1;13488:17;:::i;:::-;13473:12;:32:::0;-1:-1:-1;13247:266:0:o;11031:441::-;-1:-1:-1;;;;;11152:19:0;;11131:4;11152:19;;;:11;:19;;;;;;;;11172:10;11152:31;;;;;;;;-1:-1:-1;;11152:52:0;11148:257;;-1:-1:-1;;;;;11229:19:0;;;;;;:11;:19;;;;;;;;11249:10;11229:31;;;;;;;;:41;-1:-1:-1;11229:41:0;11221:83;;;;-1:-1:-1;;;11221:83:0;;7907:2:1;11221:83:0;;;7889:21:1;7946:2;7926:18;;;7919:30;7985:31;7965:18;;;7958:59;8034:18;;11221:83:0;7705:353:1;11221:83:0;-1:-1:-1;;;;;11353:19:0;;;;;;:11;:19;;;;;;;;11373:10;11353:31;;;;;;;;:40;;11387:6;;11353:40;:::i;:::-;-1:-1:-1;;;;;11319:19:0;;;;;;:11;:19;;;;;;;;11339:10;11319:31;;;;;;;:74;11148:257;11424:40;11438:6;11446:9;11457:6;11424:13;:40::i;:::-;11417:47;;11031:441;;;;;;:::o;15495:123::-;2211:13;:11;:13::i;:::-;-1:-1:-1;;;;;15580:21:0;;;::::1;;::::0;;;:13:::1;:21;::::0;;;;:30;;-1:-1:-1;;15580:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15495:123::o;12472:136::-;12525:7;12585:15;7448:42;12585:9;:15::i;:::-;12567;7375:42;12567:9;:15::i;:::-;12552:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;12545:55;;12472:136;:::o;12315:149::-;12385:7;12440:16;;12425:12;;12412:10;:25;;;;:::i;:::-;:44;;;;:::i;15949:139::-;16016:4;2211:13;:11;:13::i;:::-;-1:-1:-1;16033:20:0::1;:25:::0;;-1:-1:-1;;16033:25:0::1;;::::0;::::1;;;;::::0;;-1:-1:-1;2235:1:0::1;15949:139:::0;;;:::o;13791:170::-;2211:13;:11;:13::i;:::-;13868:58:::1;::::0;13851:12:::1;::::0;13876:10:::1;::::0;13900:21:::1;::::0;13851:12;13868:58;13851:12;13868:58;13900:21;13876:10;13868:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13850:76;;;13945:7;13937:16;;;::::0;::::1;;13839:122;13791:170::o:0;16096:135::-;2211:13;:11;:13::i;:::-;-1:-1:-1;;;;;16185:20:0;;;::::1;;::::0;;;:10:::1;:20;::::0;;;;:38;;-1:-1:-1;;16185:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16096:135::o;15823:91::-;2211:13;:11;:13::i;:::-;15888::::1;:18:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;15888:18:0;;::::1;::::0;;;::::1;::::0;;15823:91::o;12167:140::-;12232:7;12287:12;;12268:16;;12259:6;:25;;;;:::i;10737:122::-;10792:4;10816:35;10824:7;-1:-1:-1;;10816:7:0;:35::i;15368:119::-;2211:13;:11;:13::i;:::-;-1:-1:-1;;;;;15451:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;15451:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15368:119::o;11866:138::-;-1:-1:-1;;;;;11979:16:0;;11932:7;11979:16;;;:7;:16;;;;;;11959:37;;:19;:37::i;2973:103::-;2211:13;:11;:13::i;:::-;3038:30:::1;3065:1;3038:18;:30::i;:::-;2973:103::o:0;12616:113::-;2211:13;:11;:13::i;:::-;12671::::1;:20:::0;;-1:-1:-1;;12671:20:0::1;12687:4;12671:20;::::0;;12702:12:::1;:19:::0;;-1:-1:-1;;;;12702:19:0::1;-1:-1:-1::0;;;12702:19:0::1;::::0;;12616:113::o;11769:89::-;11810:13;11843:7;11836:14;;;;;:::i;12737:306::-;2211:13;:11;:13::i;:::-;12881:15:::1;-1:-1:-1::0;;;;;12873:23:0::1;:4;-1:-1:-1::0;;;;;12873:23:0::1;::::0;12851:130:::1;;;::::0;-1:-1:-1;;;12851:130:0;;8608:2:1;12851:130:0::1;::::0;::::1;8590:21:1::0;8647:2;8627:18;;;8620:30;8686:34;8666:18;;;8659:62;8757:27;8737:18;;;8730:55;8802:19;;12851:130:0::1;8406:421:1::0;12851:130:0::1;12994:41;13023:4;13029:5;12994:28;:41::i;:::-;12737:306:::0;;:::o;10867:156::-;10947:4;10971:44;10985:10;10997:9;11008:6;10971:13;:44::i;13521:262::-;2211:13;:11;:13::i;:::-;13660:4:::1;13652;13632:12;;13647:1;13632:16;;;;:::i;:::-;13631:25;;;;:::i;:::-;13630:34;;;;:::i;:::-;13620:6;:44;;13598:130;;;::::0;-1:-1:-1;;;13598:130:0;;9034:2:1;13598:130:0::1;::::0;::::1;9016:21:1::0;9073:2;9053:18;;;9046:30;9112:34;9092:18;;;9085:62;-1:-1:-1;;;9163:18:1;;;9156:34;9207:19;;13598:130:0::1;8832:400:1::0;13598:130:0::1;13758:17;:6:::0;13768::::1;13758:17;:::i;:::-;13739:16;:36:::0;-1:-1:-1;13521:262:0:o;14272:1088::-;2211:13;:11;:13::i;:::-;14628:21:::1;14716:10:::0;14700:13;14689:8;14652:34:::1;14671:15:::0;14652:16;:34:::1;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;:74;;;;:::i;:::-;14628:98;;::::0;-1:-1:-1;14737:22:0::1;14830:11:::0;14813:14;14801:9;14762:36:::1;14782:16:::0;14762:17;:36:::1;:::i;:::-;:48;;;;:::i;:::-;:65;;;;:::i;:::-;:79;;;;:::i;:::-;14737:104;;;;14863:230;;;;;;;;14894:16;14863:230;;;;;;14936:15;14863:230;;;;;;14970:8;14863:230;;;;;;15002:13;14863:230;;;;;;15036:10;14863:230;;;;;;15068:13;-1:-1:-1::0;;;;;14863:230:0::1;;;::::0;14854:6:::1;:239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;14854:239:0::1;;;;;-1:-1:-1::0;;;;;14854:239:0::1;;;;;;;;;15116:236;;;;;;;;15147:17;15116:236;;;;;;15190:16;15116:236;;;;;;15225:9;15116:236;;;;;;15258:14;15116:236;;;;;;15293:11;15116:236;;;;;;15326:14;-1:-1:-1::0;;;;;15116:236:0::1;;;::::0;15106:7:::1;:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;15106:246:0::1;;;;;-1:-1:-1::0;;;;;15106:246:0::1;;;;;;;;;14617:743;;14272:1088:::0;;;;;;;;;;:::o;15626:189::-;2211:13;:11;:13::i;:::-;15718:20:::1;:25:::0;;-1:-1:-1;;;;;15718:25:0;;::::1;-1:-1:-1::0;;;;;;15718:25:0;;::::1;;::::0;;;15754:13:::1;:19:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;15784:18:::1;:23:::0;;;;;::::1;::::0;::::1;;::::0;;15626:189::o;13969:131::-;2211:13;:11;:13::i;:::-;14026:66:::1;14048:4;14055:10;14067:24;14085:4;14067:9;:24::i;:::-;14026:13;:66::i;14108:156::-:0;2211:13;:11;:13::i;:::-;14199:12:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;14199:23:0::1;-1:-1:-1::0;;;;14199:23:0;;::::1;::::0;;;::::1;::::0;;;14233:13:::1;:23:::0;14108:156::o;3231:201::-;2211:13;:11;:13::i;:::-;-1:-1:-1;;;;;3320:22:0;::::1;3312:73;;;::::0;-1:-1:-1;;;3312:73:0;;9592:2:1;3312:73:0::1;::::0;::::1;9574:21:1::0;9631:2;9611:18;;;9604:30;9670:34;9650:18;;;9643:62;-1:-1:-1;;;9721:18:1;;;9714:36;9767:19;;3312:73:0::1;9390:402:1::0;3312:73:0::1;3396:28;3415:8;3396:18;:28::i;2490:132::-:0;2371:7;2398:6;-1:-1:-1;;;;;2398:6:0;1015:10;2554:23;2546:68;;;;-1:-1:-1;;;2546:68:0;;9999:2:1;2546:68:0;;;9981:21:1;;;10018:18;;;10011:30;10077:34;10057:18;;;10050:62;10129:18;;2546:68:0;9797:356:1;16239:2741:0;-1:-1:-1;;;;;16357:21:0;;16331:4;16357:21;;;:10;:21;;;;;;;;16356:22;:45;;;;-1:-1:-1;;;;;;16383:18:0;;;;;;:10;:18;;;;;;;;16382:19;16356:45;16348:69;;;;-1:-1:-1;;;16348:69:0;;10360:2:1;16348:69:0;;;10342:21:1;10399:2;10379:18;;;10372:30;-1:-1:-1;;;10418:18:1;;;10411:41;10469:18;;16348:69:0;10158:335:1;16348:69:0;16434:6;;;;16430:87;;;16464:41;16479:6;16487:9;16498:6;16464:14;:41::i;:::-;16457:48;;;;16430:87;16533:13;;;;;;;16529:1772;;;16568:13;;;;16563:210;;-1:-1:-1;;;;;16646:19:0;;;;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;16669:22:0;;;;;;:11;:22;;;;;;;;16646:45;16616:141;;;;-1:-1:-1;;;16616:141:0;;10700:2:1;16616:141:0;;;10682:21:1;10739:2;10719:18;;;10712:30;-1:-1:-1;;;10758:18:1;;;10751:52;10820:18;;16616:141:0;10498:346:1;16616:141:0;-1:-1:-1;;;;;16817:33:0;;;;;;:25;:33;;;;;;;;:62;;;;-1:-1:-1;;;;;;16855:24:0;;;;;;:13;:24;;;;;;;;16854:25;16817:62;16813:707;;;16932:12;;16922:6;:22;;16914:75;;;;-1:-1:-1;;;16914:75:0;;;;;;;:::i;:::-;17049:16;;17025:20;17035:9;17025;:20::i;:::-;17016:29;;:6;:29;:::i;:::-;:49;;17008:81;;;;-1:-1:-1;;;17008:81:0;;11590:2:1;17008:81:0;;;11572:21:1;11629:2;11609:18;;;11602:30;-1:-1:-1;;;11648:18:1;;;11641:49;11707:18;;17008:81:0;11388:343:1;17008:81:0;16813:707;;;-1:-1:-1;;;;;17153:36:0;;;;;;:25;:36;;;;;;;;:62;;;;-1:-1:-1;;;;;;17194:21:0;;;;;;:13;:21;;;;;;;;17193:22;17153:62;17149:371;;;17267:12;;17257:6;:22;;17249:75;;;;-1:-1:-1;;;17249:75:0;;;;;;;:::i;17149:371::-;-1:-1:-1;;;;;17364:24:0;;;;;;:13;:24;;;;;;;;17359:161;;17464:16;;17440:20;17450:9;17440;:20::i;:::-;17431:29;;:6;:29;:::i;:::-;:49;;17423:81;;;;-1:-1:-1;;;17423:81:0;;11590:2:1;17423:81:0;;;11572:21:1;11629:2;11609:18;;;11602:30;-1:-1:-1;;;11648:18:1;;;11641:49;11707:18;;17423:81:0;11388:343:1;17423:81:0;17680:20;;;;;;;17676:614;;;2371:7;2398:6;-1:-1:-1;;;;;17747:20:0;;;2398:6;;17747:20;;;;:84;;-1:-1:-1;;;;;;17792:39:0;;7620:42;17792:39;;17747:84;:137;;;;;17869:15;-1:-1:-1;;;;;17856:28:0;:9;-1:-1:-1;;;;;17856:28:0;;;17747:137;17721:554;;;17990:9;17961:39;;;;:28;:39;;;;;;18036:12;;17961:43;;18003:1;17961:43;:::i;:::-;:87;17927:251;;;;-1:-1:-1;;;17927:251:0;;11938:2:1;17927:251:0;;;11920:21:1;11977:2;11957:18;;;11950:30;12016:34;11996:18;;;11989:62;12087:34;12067:18;;;12060:62;-1:-1:-1;;;12138:19:1;;;12131:45;12193:19;;17927:251:0;11736:482:1;17927:251:0;18230:9;18201:39;;;;:28;:39;;;;;18243:12;18201:54;;17721:554;18317:17;:15;:17::i;:::-;18313:61;;;18351:11;:9;:11::i;:::-;18386:24;18413:26;18432:6;18413:18;:26::i;:::-;-1:-1:-1;;;;;18458:15:0;;;;;;:7;:15;;;;;;18386:53;;-1:-1:-1;18458:35:0;-1:-1:-1;18458:35:0;18450:68;;;;-1:-1:-1;;;18450:68:0;;12425:2:1;18450:68:0;;;12407:21:1;12464:2;12444:18;;;12437:30;-1:-1:-1;;;12483:18:1;;;12476:50;12543:18;;18450:68:0;12223:344:1;18450:68:0;-1:-1:-1;;;;;18547:15:0;;;;;;:7;:15;;;;;;:34;;18565:16;;18547:34;:::i;:::-;-1:-1:-1;;;;;18529:15:0;;;;;;:7;:15;;;;;:52;;;;18623:33;18537:6;18646:9;18623:14;:33::i;:::-;:170;;18777:16;18623:170;;;18672:89;18704:15;-1:-1:-1;;;;;18694:25:0;:6;-1:-1:-1;;;;;18694:25:0;;:40;;18729:5;18694:40;;;18722:4;18694:40;18736:6;18744:16;18672:21;:89::i;:::-;-1:-1:-1;;;;;18825:18:0;;;;;;:7;:18;;;;;;18594:199;;-1:-1:-1;18825:39:0;;18594:199;;18825:39;:::i;:::-;-1:-1:-1;;;;;18804:18:0;;;;;;;:7;:18;;;;;:60;;;;18882:68;;;18910:39;18930:18;18910:19;:39::i;:::-;18882:68;;160:25:1;;;148:2;133:18;18882:68:0;;;;;;;-1:-1:-1;18968:4:0;;16239:2741;-1:-1:-1;;;;;16239:2741:0:o;3592:191::-;3666:16;3685:6;;-1:-1:-1;;;;;3702:17:0;;;-1:-1:-1;;;;;;3702:17:0;;;;;;3735:40;;3685:6;;;;;;;3735:40;;3666:16;3735:40;3655:128;3592:191;:::o;13051:188::-;-1:-1:-1;;;;;13134:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;13134:39:0;;;;;;;;;;13191:40;;13134:39;;:31;13191:40;;;13051:188;;:::o;18988:455::-;19081:4;19098:24;19125:26;19144:6;19125:18;:26::i;:::-;-1:-1:-1;;;;;19170:15:0;;;;;;:7;:15;;;;;;19098:53;;-1:-1:-1;19170:35:0;-1:-1:-1;19170:35:0;19162:68;;;;-1:-1:-1;;;19162:68:0;;12425:2:1;19162:68:0;;;12407:21:1;12464:2;12444:18;;;12437:30;-1:-1:-1;;;12483:18:1;;;12476:50;12543:18;;19162:68:0;12223:344:1;19162:68:0;-1:-1:-1;;;;;19259:15:0;;;;;;:7;:15;;;;;;:34;;19277:16;;19259:34;:::i;:::-;-1:-1:-1;;;;;19241:15:0;;;;;;;:7;:15;;;;;;:52;;;;19325:18;;;;;;;:37;;19346:16;;19325:37;:::i;:::-;-1:-1:-1;;;;;19304:18:0;;;;;;;:7;:18;;;;;;;:58;;;;19378:35;;;;;;;;;;19406:6;160:25:1;;148:2;133:18;;14:177;19378:35:0;;;;;;;;-1:-1:-1;19431:4:0;;18988:455;-1:-1:-1;;;;18988:455:0:o;20574:183::-;20624:4;20648:10;-1:-1:-1;;;;;20662:15:0;20648:29;;;;;:40;;-1:-1:-1;20682:6:0;;;;20681:7;20648:40;:56;;;;-1:-1:-1;20692:12:0;;-1:-1:-1;;;20692:12:0;;;;20648:56;:101;;;;;20736:13;;20708:24;20726:4;20708:9;:24::i;:::-;:41;;20641:108;;20574:183;:::o;20765:1465::-;9313:6;:13;;9322:4;-1:-1:-1;;9313:13:0;;;;;;20815:30:::1;::::0;;::::1;::::0;::::1;::::0;;20838:7:::1;20815:30:::0;9313:13;20815:30;;::::1;::::0;;9313:13;20815:30;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;20815:30:0;;::::1;-1:-1:-1::0;;;;;20815:30:0::1;::::0;;;;;;20884:13:::1;::::0;20815:30;;-1:-1:-1;;20815:30:0;20931:32:::1;::::0;20884:13;20931:32:::1;:::i;:::-;:50;;;;:::i;:::-;20908:73:::0;-1:-1:-1;20992:20:0::1;21015:30;20908:73:::0;21015:15;:30:::1;:::i;:::-;20992:53;;21056:49;7620:42;21092:12;21056:7;:49::i;:::-;-1:-1:-1::0;21121:16:0;;21118:126:::1;;21184:48;21206:4;7375:42;21219:12;21184:13;:48::i;:::-;;21118:126;21297:16;::::0;;21311:1:::1;21297:16:::0;;;;;::::1;::::0;;21273:21:::1;::::0;21297:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21297:16:0::1;21273:40;;21342:4;21324;21329:1;21324:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;21324:23:0::1;;;-1:-1:-1::0;;;;;21324:23:0::1;;;::::0;::::1;7620:42;-1:-1:-1::0;;;;;21368:22:0::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21358:4;21363:1;21358:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21358:34:0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:34;21405:147:::1;::::0;-1:-1:-1;;;21405:147:0;;7620:42:::1;::::0;21405:68:::1;::::0;:147:::1;::::0;21488:12;;21502:1:::1;::::0;21505:4;;21519::::1;::::0;21526:15:::1;::::0;21405:147:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21565:17;21585:21;21565:41;;21619:20;21683:9;:14;;;21642:55;;21660:9;:20;;;21642:38;;:9;:15;;;:38;;;;:::i;:::-;:55;;;;:::i;:::-;-1:-1:-1::0;;;;;21619:78:0::1;;;21708:26;21771:12;21749:9;:19;;;21737:31;;:9;:31;;;;:::i;:::-;:46;;;;:::i;:::-;21708:75;;21794:19;21843:12;21828:9;:12;;;21816:24;;:9;:24;;;;:::i;:::-;:39;;;;:::i;:::-;21794:61;;21866:24;21925:12;21905:9;:17;;;21893:29;;:9;:29;;;;:::i;:::-;:44;;;;:::i;:::-;21996:13;::::0;21988:51:::1;::::0;21866:71;;-1:-1:-1;21968:15:0::1;::::0;-1:-1:-1;;;;;21996:13:0;;::::1;::::0;22023:11;;21968:15;21988:51;21968:15;21988:51;22023:11;21996:13;21988:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22074:18:0::1;::::0;22066:61:::1;::::0;21967:72;;-1:-1:-1;;;;;;22074:18:0::1;::::0;22106:16;;22066:61:::1;::::0;;;22106:16;22074:18;22066:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22162:20:0::1;::::0;22154:68:::1;::::0;22050:77;;-1:-1:-1;;;;;;22162:20:0::1;::::0;22196:21:::1;::::0;22154:68:::1;::::0;;;22196:21;22162:20;22154:68:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;9349:6:0;:14;;-1:-1:-1;;9349:14:0;;;-1:-1:-1;;;;;;;;;;;;20765:1465:0:o;22238:161::-;-1:-1:-1;;;;;22345:19:0;;22320:4;22345:19;;;:11;:19;;;;;;;;22344:20;:47;;;;-1:-1:-1;;;;;;;22369:22:0;;;;;:11;:22;;;;;;;;22368:23;;22238:161;-1:-1:-1;22238:161:0:o;19451:1115::-;19575:28;;;;;;;;;19597:6;19575:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;19575:28:0;;;;;;;;;;;;;;19614:30;;;;;;;19637:7;19614:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19555:7;;;19700:14;;;19575:28;19700:14;:99;;19796:3;19778:9;:15;;;-1:-1:-1;;;;;19759:34:0;:16;:34;;;;:::i;:::-;:40;;;;:::i;:::-;19700:99;;;19753:3;19736:8;:14;;;-1:-1:-1;;;;;19717:33:0;:16;:33;;;;:::i;:::-;:39;;;;:::i;:::-;19657:142;-1:-1:-1;19832:27:0;19872:4;19862:14;;;;:164;;20011:9;:15;;;-1:-1:-1;;;;;19966:60:0;19988:9;:20;;;19966:42;;:19;:42;;;;:::i;:::-;:60;;;;:::i;:::-;19862:164;;;19936:8;:14;;;-1:-1:-1;;;;;19892:58:0;19914:8;:19;;;19892:41;;:19;:41;;;;:::i;:::-;:58;;;;:::i;:::-;19832:194;;20077:19;20058:16;;:38;;;;:::i;:::-;20039:16;:57;20131:29;20163:41;20185:19;20163;:41;:::i;:::-;20131:73;-1:-1:-1;20219:25:0;;20215:226;;20302:4;20286:22;;;;:7;:22;;;;;;:46;;20311:21;;20286:46;:::i;:::-;20277:4;20261:22;;;;:7;:22;;;;;:71;;;;-1:-1:-1;;;;;20354:75:0;;;20386:42;20406:21;20386:19;:42::i;:::-;20354:75;;160:25:1;;;148:2;133:18;20354:75:0;;;;;;;20215:226;20485:16;;20456:46;;;14456:25:1;;;14512:2;14497:18;;14490:34;;;;20456:46:0;;14429:18:1;20456:46:0;;;;;;;20520:38;20539:19;20520:16;:38;:::i;:::-;20513:45;19451:1115;-1:-1:-1;;;;;;;;;19451:1115:0:o;196:548: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;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:180::-;1708:6;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;-1:-1:-1;1800:23:1;;1649:180;-1:-1:-1;1649:180:1:o;1834:456::-;1911:6;1919;1927;1980:2;1968:9;1959:7;1955:23;1951:32;1948:52;;;1996:1;1993;1986:12;1948:52;2035:9;2022:23;2054:31;2079:5;2054:31;:::i;:::-;2104:5;-1:-1:-1;2161:2:1;2146:18;;2133:32;2174:33;2133:32;2174:33;:::i;:::-;1834:456;;2226:7;;-1:-1:-1;;;2280:2:1;2265:18;;;;2252:32;;1834:456::o;2295:160::-;2360:20;;2416:13;;2409:21;2399:32;;2389:60;;2445:1;2442;2435:12;2460:315;2525:6;2533;2586:2;2574:9;2565:7;2561:23;2557:32;2554:52;;;2602:1;2599;2592:12;2554:52;2641:9;2628:23;2660:31;2685:5;2660:31;:::i;:::-;2710:5;-1:-1:-1;2734:35:1;2765:2;2750:18;;2734:35;:::i;:::-;2724:45;;2460:315;;;;;:::o;3585:180::-;3641:6;3694:2;3682:9;3673:7;3669:23;3665:32;3662:52;;;3710:1;3707;3700:12;3662:52;3733:26;3749:9;3733:26;:::i;4212:156::-;4278:20;;4338:4;4327:16;;4317:27;;4307:55;;4358:1;4355;4348:12;4373:819;4493:6;4501;4509;4517;4525;4533;4541;4549;4557;4565;4618:3;4606:9;4597:7;4593:23;4589:33;4586:53;;;4635:1;4632;4625:12;4586:53;4658:27;4675:9;4658:27;:::i;:::-;4648:37;;4704:36;4736:2;4725:9;4721:18;4704:36;:::i;:::-;4694:46;;4759:36;4791:2;4780:9;4776:18;4759:36;:::i;:::-;4749:46;;4814:36;4846:2;4835:9;4831:18;4814:36;:::i;:::-;4804:46;;4869:37;4901:3;4890:9;4886:19;4869:37;:::i;:::-;4859:47;;4925:37;4957:3;4946:9;4942:19;4925:37;:::i;:::-;4915:47;;4981:37;5013:3;5002:9;4998:19;4981:37;:::i;:::-;4971:47;;5037:37;5069:3;5058:9;5054:19;5037:37;:::i;:::-;5027:47;;5093:37;5125:3;5114:9;5110:19;5093:37;:::i;:::-;5083:47;;5149:37;5181:3;5170:9;5166:19;5149:37;:::i;:::-;5139:47;;4373:819;;;;;;;;;;;;;:::o;5197:529::-;5274:6;5282;5290;5343:2;5331:9;5322:7;5318:23;5314:32;5311:52;;;5359:1;5356;5349:12;5311:52;5398:9;5385:23;5417:31;5442:5;5417:31;:::i;:::-;5467:5;-1:-1:-1;5524:2:1;5509:18;;5496:32;5537:33;5496:32;5537:33;:::i;:::-;5589:7;-1:-1:-1;5648:2:1;5633:18;;5620:32;5661:33;5620:32;5661:33;:::i;:::-;5713:7;5703:17;;;5197:529;;;;;:::o;5731:388::-;5799:6;5807;5860:2;5848:9;5839:7;5835:23;5831:32;5828:52;;;5876:1;5873;5866:12;5828:52;5915:9;5902:23;5934:31;5959:5;5934:31;:::i;:::-;5984:5;-1:-1:-1;6041:2:1;6026:18;;6013:32;6054:33;6013:32;6054:33;:::i;:::-;6106:7;6096:17;;;5731:388;;;;;:::o;6124:248::-;6189:6;6197;6250:2;6238:9;6229:7;6225:23;6221:32;6218:52;;;6266:1;6263;6256:12;6218:52;6289:26;6305:9;6289:26;:::i;6377:380::-;6456:1;6452:12;;;;6499;;;6520:61;;6574:4;6566:6;6562:17;6552:27;;6520:61;6627:2;6619:6;6616:14;6596:18;6593:38;6590:161;;6673:10;6668:3;6664:20;6661:1;6654:31;6708:4;6705:1;6698:15;6736:4;6733:1;6726:15;6590:161;;6377:380;;;:::o;6762:127::-;6823:10;6818:3;6814:20;6811:1;6804:31;6854:4;6851:1;6844:15;6878:4;6875:1;6868:15;6894:168;6967:9;;;6998;;7015:15;;;7009:22;;6995:37;6985:71;;7036:18;;:::i;7067:217::-;7107:1;7133;7123:132;;7177:10;7172:3;7168:20;7165:1;7158:31;7212:4;7209:1;7202:15;7240:4;7237:1;7230:15;7123:132;-1:-1:-1;7269:9:1;;7067:217::o;8063:128::-;8130:9;;;8151:11;;;8148:37;;;8165:18;;:::i;9237:148::-;9325:4;9304:12;;;9318;;;9300:31;;9343:13;;9340:39;;;9359:18;;:::i;10849:404::-;11051:2;11033:21;;;11090:2;11070:18;;;11063:30;11129:34;11124:2;11109:18;;11102:62;-1:-1:-1;;;11195:2:1;11180:18;;11173:38;11243:3;11228:19;;10849:404::o;11258:125::-;11323:9;;;11344:10;;;11341:36;;;11357:18;;:::i;12704:127::-;12765:10;12760:3;12756:20;12753:1;12746:31;12796:4;12793:1;12786:15;12820:4;12817:1;12810:15;12836:251;12906:6;12959:2;12947:9;12938:7;12934:23;12930:32;12927:52;;;12975:1;12972;12965:12;12927:52;13007:9;13001:16;13026:31;13051:5;13026:31;:::i;13092:980::-;13354:4;13402:3;13391:9;13387:19;13433:6;13422:9;13415:25;13459:2;13497:6;13492:2;13481:9;13477:18;13470:34;13540:3;13535:2;13524:9;13520:18;13513:31;13564:6;13599;13593:13;13630:6;13622;13615:22;13668:3;13657:9;13653:19;13646:26;;13707:2;13699:6;13695:15;13681:29;;13728:1;13738:195;13752:6;13749:1;13746:13;13738:195;;;13817:13;;-1:-1:-1;;;;;13813:39:1;13801:52;;13908:15;;;;13873:12;;;;13849:1;13767:9;13738:195;;;-1:-1:-1;;;;;;;13989:32:1;;;;13984:2;13969:18;;13962:60;-1:-1:-1;;;14053:3:1;14038:19;14031:35;13950:3;13092:980;-1:-1:-1;;;13092:980:1:o;14077:200::-;-1:-1:-1;;;;;14213:10:1;;;14201;;;14197:27;;14236:12;;;14233:38;;;14251:18;;:::i;:::-;14233:38;14077:200;;;;:::o

Swarm Source

ipfs://dee4b68de56cfd3641a7cbcb55da7fe2adcd6e0d2160c4d8feca3aa3d41792f8
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.