ETH Price: $2,508.76 (-5.18%)

Token

BitClouds (BCS)
 

Overview

Max Total Supply

100,000,000 BCS

Holders

380

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
163,648.548560165171210432 BCS

Value
$0.00
0x16d2dd0b85679b58c678b98879547387fd307bfb
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:
BitCloudsToken

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 256 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-21
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
   * overflow.
   *
   * Counterpart to Solidity's `+` operator.
   *
   * Requirements:
   * - Addition cannot overflow.
   */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
   * overflow (when the result is negative).
   *
   * Counterpart to Solidity's `-` operator.
   *
   * Requirements:
   * - Subtraction cannot overflow.
   */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
   * overflow (when the result is negative).
   *
   * Counterpart to Solidity's `-` operator.
   *
   * Requirements:
   * - Subtraction cannot overflow.
   */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
   * overflow.
   *
   * Counterpart to Solidity's `*` operator.
   *
   * Requirements:
   * - Multiplication cannot overflow.
   */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
   * division by zero. The result is rounded towards zero.
   *
   * Counterpart to Solidity's `/` operator. Note: this function uses a
   * `revert` opcode (which leaves remaining gas untouched) while Solidity
   * uses an invalid opcode to revert (consuming all remaining gas).
   *
   * Requirements:
   * - The divisor cannot be zero.
   */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
   * division by zero. The result is rounded towards zero.
   *
   * Counterpart to Solidity's `/` operator. Note: this function uses a
   * `revert` opcode (which leaves remaining gas untouched) while Solidity
   * uses an invalid opcode to revert (consuming all remaining gas).
   *
   * Requirements:
   * - The divisor cannot be zero.
   */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
   * Reverts when dividing by zero.
   *
   * Counterpart to Solidity's `%` operator. This function uses a `revert`
   * opcode (which leaves remaining gas untouched) while Solidity uses an
   * invalid opcode to revert (consuming all remaining gas).
   *
   * Requirements:
   * - The divisor cannot be zero.
   */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
   * Reverts with custom message when dividing by zero.
   *
   * Counterpart to Solidity's `%` operator. This function uses a `revert`
   * opcode (which leaves remaining gas untouched) while Solidity uses an
   * invalid opcode to revert (consuming all remaining gas).
   *
   * Requirements:
   * - The divisor cannot be zero.
   */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}


// File contracts/interfaces/IUniFactory.sol

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


// File contracts/interfaces/IUniRouter.sol

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

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

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

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


// File @openzeppelin/contracts/utils/[email protected]


/**
 * @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;
    }
}


// File @openzeppelin/contracts/access/[email protected]

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


// File @openzeppelin/contracts/token/ERC20/[email protected]


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


// File contracts/BitCloudsToken.sol

contract BitCloudsToken is Ownable, IERC20 {
    using SafeMath for uint256;

    string constant _name = "BitClouds";
    string constant _symbol = "BCS";
    uint8 constant _decimals = 18;

    uint256 _totalSupply = 100000000 * 10 ** _decimals;

    uint256 setRatio = 30;
    uint256 setRatioDenominator = 100;

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

    uint256 public _maxAmountPerWallet = _totalSupply.mul(30).div(100);

    IUniRouter public router = IUniRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    address public autoLiquidityReceiver;
    address public airdropContract;
    address public devFeeReceiver = 0xa75E4e6Feb9179EDD342d72bB58C325eF0512676;
    address public mktFeeReceiver = 0x963Ac1B23a8f8E4CA0a51A5F3F17ce4C63260754;

    uint256 public sellPercent = 400;
    uint256 public buyPercent = 400;
    uint256 public devFee = 400;
    uint256 public mktFee = 600;
    uint256 public liquidityFee = 0;

    uint256 public transferPercent = 0;
    uint256 public feeDenominator = 1000;
    uint256 public totalFee = liquidityFee + devFee + mktFee;

    address public pair;
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000;
    bool inSwap;

    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;
    mapping(address => bool) isNotABot;
    mapping(address => bool) isExemptFromFees;
    mapping(address => bool) public blackListed;

    event AutoAddLiquify(uint256 amountETH, uint256 amountTokens);
    event UpdateTax(uint8 Buy, uint8 Sell, uint8 Transfer);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    event SetReceivers(address autoLiquidityReceiver, address devFee, address mktFee);
    event UpdateMaxWallet(uint256 maxWallet);
    event UpdateSwapBackSetting(uint256 Amount, bool Enabled);

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

    constructor () {
        WETH = router.WETH();
        _allowances[address(this)][address(router)] = type(uint256).max;

        autoLiquidityReceiver = msg.sender;

        isExemptFromFees[msg.sender] = true;
        isNotABot[msg.sender] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

    function checkRatio(uint256 ratio, uint256 accuracy) public view returns (bool) {
        return showBacking(accuracy) > ratio;
    }

    function showBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(showSupply());
    }

    function showSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    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) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function manualSend() external {
        payable(autoLiquidityReceiver).transfer(address(this).balance);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!blackListed[sender], "Sender blackListed");
        require(!blackListed[recipient], "Receiver blackListed");

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

        if (
            sender != owner() &&
            recipient != owner() &&
            recipient != address(this) &&
            recipient != address(DEAD) &&
            recipient != pair &&
            recipient != mktFeeReceiver &&
            recipient != devFeeReceiver &&
            recipient != airdropContract
        ) {
            uint256 heldTokens = balanceOf(recipient);
            require(
                (heldTokens + amount) <= _maxAmountPerWallet,
                "Total Holding is currently limited, you can not buy that much."
            );
        }

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

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isExemptFromFees[sender] || isExemptFromFees[recipient]) ? amount : _takeFee(sender, amount, recipient);

        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

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

    function _takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        uint256 percent = transferPercent;
        if (recipient == pair) {
            percent = sellPercent;
        } else if (sender == pair) {
            percent = buyPercent;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(percent).div(feeDenominator * 1000);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);

        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function _shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
            && !inSwap
            && swapEnabled
            && _balances[address(this)] >= swapThreshold;
    }

    function _swapBack() internal swapping {
        uint256 dynamicLiquidityFee = checkRatio(setRatio, setRatioDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

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

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHTeam = amountETH.mul(devFee).div(totalETHFee);
        uint256 amountETHbuykeys = amountETH.mul(mktFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHTeam}("");
        (tmpSuccess,) = payable(mktFeeReceiver).call{value: amountETHbuykeys}("");

        tmpSuccess = false;

        if (amountToLiquify > 0) {
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoAddLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if (tokens == 0) {
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }

        emit ClearToken(tokenAddress, tokens);
        return IERC20(tokenAddress).transfer(autoLiquidityReceiver, tokens);
    }

    function setFeesBuySellTransfer(uint256 _percentOnBuy, uint256 _percentOnSell, uint256 _walletTransfer) external onlyOwner {
        sellPercent = _percentOnSell;
        buyPercent = _percentOnBuy;
        transferPercent = _walletTransfer;
    }

    function _setFees() internal {
        emit UpdateTax(uint8(totalFee.mul(buyPercent).div(feeDenominator)),
            uint8(totalFee.mul(sellPercent).div(feeDenominator)),
            uint8(totalFee.mul(transferPercent).div(feeDenominator))
        );
    }

    function setParameters(uint256 _liquidityFee, uint256 _devFee, uint256 _mktFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        devFee = _devFee;
        mktFee = _mktFee;

        totalFee = _liquidityFee.add(_devFee).add(_mktFee);
        feeDenominator = _feeDenominator;
        _setFees();
    }

    function setWallets(address _autoLiquidityReceiver, address _devFeeReceiver, address _mktFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        devFeeReceiver = _devFeeReceiver;
        mktFeeReceiver = _mktFeeReceiver;

        emit SetReceivers(autoLiquidityReceiver, devFeeReceiver, mktFeeReceiver);
    }

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

    function setNotBot(address[] calldata accounts, bool excluded) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            isNotABot[accounts[i]] = excluded;
        }
    }

    function setExemptFees(address[] calldata accounts, bool excluded) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            isExemptFromFees[accounts[i]] = excluded;
        }
    }

    function updatePair() external onlyOwner {
        pair = IUniFactory(router.factory()).getPair(WETH, address(this));
    }

    function updatePairAddress(address _pair) external onlyOwner {
        pair = _pair;
    }

    function updateAirdrop(address _airdropContract) external onlyOwner {
        airdropContract = _airdropContract;
    }

    function blackList(address[] calldata accounts, bool excluded) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            blackListed[accounts[i]] = excluded;
        }
    }

    function setMaxAmountPerWallet(uint256 amount) external onlyOwner {
        _maxAmountPerWallet = amount;
        emit UpdateMaxWallet(_maxAmountPerWallet);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoAddLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"autoLiquidityReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"devFee","type":"address"},{"indexed":false,"internalType":"address","name":"mktFee","type":"address"}],"name":"SetReceivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"UpdateMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"UpdateSwapBackSetting","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"UpdateTax","type":"event"},{"inputs":[],"name":"_maxAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropContract","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"blackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"checkRatio","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mktFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mktFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExemptFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentOnBuy","type":"uint256"},{"internalType":"uint256","name":"_percentOnSell","type":"uint256"},{"internalType":"uint256","name":"_walletTransfer","type":"uint256"}],"name":"setFeesBuySellTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxAmountPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setNotBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_mktFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setParameters","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":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_mktFeeReceiver","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"showBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_airdropContract","type":"address"}],"name":"updateAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updatePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"updatePairAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a6200050d565b62000022906305f5e1006200051e565b600155601e600255606460035562000066606462000052601e6001546200029060201b6200111a1790919060201c565b6200032460201b620011991790919060201c565b600555600680546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d1790915560098054821673a75e4e6feb9179edd342d72bb58c325ef0512676179055600a805490911673963ac1b23a8f8e4ca0a51a5f3f17ce4c63260754179055610190600b819055600c819055600d819055610258600e8190556000600f81905560108190556103e86011559091620001089162000540565b62000114919062000540565b6012556013805460ff60a01b1916600160a01b1790556001546200013c906103e8906200055b565b6014553480156200014c57600080fd5b5062000158336200036e565b600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d291906200057e565b600480546001600160a01b03199081166001600160a01b039384161790915530600090815260176020908152604080832060065490951683529381528382206000199055600780543394168417905582825260198152838220805460ff1990811660019081179092556018835285842080549091168217905554601682528483208190559351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000601565b600082620002a1575060006200031e565b6000620002af83856200051e565b905082620002be85836200055b565b146200031b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200031b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620003be60201b60201c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183620003e25760405162461bcd60e51b8152600401620003129190620005a9565b506000620003f184866200055b565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000451578160001904821115620004355762000435620003fa565b808516156200044357918102915b93841c939080029062000415565b509250929050565b6000826200046a575060016200031e565b8162000479575060006200031e565b81600181146200049257600281146200049d57620004bd565b60019150506200031e565b60ff841115620004b157620004b1620003fa565b50506001821b6200031e565b5060208310610133831016604e8410600b8410161715620004e2575081810a6200031e565b620004ee838362000410565b8060001904821115620005055762000505620003fa565b029392505050565b60006200031b60ff84168362000459565b60008160001904831182151516156200053b576200053b620003fa565b500290565b60008219821115620005565762000556620003fa565b500190565b6000826200057957634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200059157600080fd5b81516001600160a01b03811681146200031b57600080fd5b600060208083528351808285015260005b81811015620005d857858101830151858201604001528201620005ba565b81811115620005eb576000604083870101525b50601f01601f1916929092016040019392505050565b6121ff80620006116000396000f3fe6080604052600436106102975760003560e01c80638da5cb5b1161015a578063d3fef817116100c1578063ed9442f61161007a578063ed9442f614610802578063f2fde38b14610818578063f429389014610838578063f4f784c91461084d578063f887ea401461086d578063fcd9da441461088d57600080fd5b8063d3fef8171461071c578063d6efe7781461073c578063dab84ee71461075c578063dd62ed3e1461077c578063ded1e438146107c2578063df20fd49146107e257600080fd5b8063af6727ed11610113578063af6727ed14610656578063b23e5c4c14610676578063bbde5b2514610696578063c489a649146106c6578063ca33e64c146106e6578063d36d04971461070657600080fd5b80638da5cb5b1461059657806395d89b41146105b457806398118cb4146105e0578063a8aa1b31146105f6578063a9059cbb14610616578063ab2be7261461063657600080fd5b80634f1455c9116101fe57806370a08231116101b757806370a08231146104b9578063715018a6146104ef57806375cb1bd11461050457806377b54bad1461052457806385266ec614610544578063893d20e81461056457600080fd5b80634f1455c9146104225780635526566914610438578063571ac8b01461044d5780636827e7641461046d5780636acaf860146104835780636ddd17131461049857600080fd5b80631df4ccfc116102505780631df4ccfc1461037857806323b872dd1461038e5780632ddc2f28146103ae57806330c9a6a0146103d0578063313ce567146103f0578063397dbed71461040c57600080fd5b80630445b667146102a357806306fdde03146102cc578063095ea7b3146103075780630fd5744d14610337578063180b0d7e1461034d57806318160ddd1461036357600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b960145481565b6040519081526020015b60405180910390f35b3480156102d857600080fd5b50604080518082019091526009815268426974436c6f75647360b81b60208201525b6040516102c39190611d68565b34801561031357600080fd5b50610327610322366004611dd2565b6108ad565b60405190151581526020016102c3565b34801561034357600080fd5b506102b960105481565b34801561035957600080fd5b506102b960115481565b34801561036f57600080fd5b506001546102b9565b34801561038457600080fd5b506102b960125481565b34801561039a57600080fd5b506103276103a9366004611dfe565b61091a565b3480156103ba57600080fd5b506103ce6103c9366004611e3f565b6109e3565b005b3480156103dc57600080fd5b506102b96103eb366004611e6b565b6109fc565b3480156103fc57600080fd5b50604051601281526020016102c3565b34801561041857600080fd5b506102b960055481565b34801561042e57600080fd5b506102b9600c5481565b34801561044457600080fd5b506102b9610a43565b34801561045957600080fd5b50610327610468366004611e84565b610ab4565b34801561047957600080fd5b506102b9600d5481565b34801561048f57600080fd5b506103ce610ac2565b3480156104a457600080fd5b5060135461032790600160a01b900460ff1681565b3480156104c557600080fd5b506102b96104d4366004611e84565b6001600160a01b031660009081526016602052604090205490565b3480156104fb57600080fd5b506103ce610bdd565b34801561051057600080fd5b506103ce61051f366004611ea1565b610bf1565b34801561053057600080fd5b5061032761053f366004611dd2565b610c7d565b34801561055057600080fd5b506103ce61055f366004611e6b565b610db0565b34801561057057600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102c3565b3480156105a257600080fd5b506000546001600160a01b031661057e565b3480156105c057600080fd5b5060408051808201909152600381526242435360e81b60208201526102fa565b3480156105ec57600080fd5b506102b9600f5481565b34801561060257600080fd5b5060135461057e906001600160a01b031681565b34801561062257600080fd5b50610327610631366004611dd2565b610df3565b34801561064257600080fd5b5060085461057e906001600160a01b031681565b34801561066257600080fd5b50600a5461057e906001600160a01b031681565b34801561068257600080fd5b506103ce610691366004611e84565b610e00565b3480156106a257600080fd5b506103276106b1366004611e84565b601a6020526000908152604090205460ff1681565b3480156106d257600080fd5b506103ce6106e1366004611e84565b610e08565b3480156106f257600080fd5b5060075461057e906001600160a01b031681565b34801561071257600080fd5b506102b9600b5481565b34801561072857600080fd5b506103ce610737366004611efa565b610e32565b34801561074857600080fd5b506103ce610757366004611efa565b610eb1565b34801561076857600080fd5b5060095461057e906001600160a01b031681565b34801561078857600080fd5b506102b9610797366004611f75565b6001600160a01b03918216600090815260176020908152604080832093909416825291909152205490565b3480156107ce57600080fd5b506103276107dd366004611fae565b610f2a565b3480156107ee57600080fd5b506103ce6107fd366004611fd0565b610f3e565b34801561080e57600080fd5b506102b9600e5481565b34801561082457600080fd5b506103ce610833366004611e84565b610faf565b34801561084457600080fd5b506103ce61102d565b34801561085957600080fd5b506103ce610868366004611efa565b611066565b34801561087957600080fd5b5060065461057e906001600160a01b031681565b34801561089957600080fd5b506103ce6108a8366004611fee565b6110df565b3360008181526017602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109089086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152601760209081526040808320338452909152812054600019146109ce57604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b03871660009081526017825283812033825290915291909120546109a99184906111db565b6001600160a01b03851660009081526017602090815260408083203384529091529020555b6109d9848484611215565b90505b9392505050565b6109eb6115a8565b600b91909155600c91909155601055565b6000610914610a09610a43565b6013546001600160a01b0316600090815260166020526040902054610a3d90610a36906002905b9061111a565b859061111a565b90611199565b60166020527f0263c2b778d062355049effc2dece97bc6547ff8a88a3258daa512061c2153dd5461dead60009081527f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b57546001549192610aaf929091610aa99190611602565b90611602565b905090565b6000610914826000196108ad565b610aca6115a8565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b419190612020565b6004805460405163e6a4390560e01b81526001600160a01b0391821692810192909252306024830152919091169063e6a43905906044016020604051808303816000875af1158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb9190612020565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b610be56115a8565b610bef6000611644565b565b610bf96115a8565b600780546001600160a01b038581166001600160a01b03199283168117909355600980548683169084168117909155600a8054928616929093168217909255604080519384526020840192909252908201527fdfa5e792c57928ef9d8c0c49c80dbe27345962925ba3ef3ce30ec7d9bef6df269060600160405180910390a1505050565b6000610c876115a8565b81610cf7576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf4919061203d565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160075460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af1158015610d8c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190612056565b610db86115a8565b60058190556040518181527fdd4ef051c4c49233ec73abfc2ee1514725d2a818fbcde46ee5d34a49034922f99060200160405180910390a150565b60006109dc338484611215565b610bbb6115a8565b610e106115a8565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b610e3a6115a8565b60005b82811015610eab578160196000868685818110610e5c57610e5c612073565b9050602002016020810190610e719190611e84565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610ea38161209f565b915050610e3d565b50505050565b610eb96115a8565b60005b82811015610eab5781601a6000868685818110610edb57610edb612073565b9050602002016020810190610ef09190611e84565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610f228161209f565b915050610ebc565b600082610f36836109fc565b119392505050565b610f466115a8565b6013805460ff60a01b1916600160a01b8415158102919091179182905560148390556040805184815260ff9290930491909116151560208301527f1a09c4ac66f4f4e8f626014cafdea7efe437ab39f09ac9feada57ef81af7664b910160405180910390a15050565b610fb76115a8565b6001600160a01b0381166110215760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61102a81611644565b50565b6007546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561102a573d6000803e3d6000fd5b61106e6115a8565b60005b82811015610eab57816018600086868581811061109057611090612073565b90506020020160208101906110a59190611e84565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806110d78161209f565b915050611071565b6110e76115a8565b600f849055600d839055600e82905561110a826111048686611694565b90611694565b6012556011819055610eab6116f3565b60008261112957506000610914565b600061113583856120ba565b90508261114285836120d9565b146109dc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401611018565b60006109dc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611791565b600081848411156111ff5760405162461bcd60e51b81526004016110189190611d68565b50600061120c84866120fb565b95945050505050565b6001600160a01b0383166000908152601a602052604081205460ff16156112735760405162461bcd60e51b815260206004820152601260248201527114d95b99195c88189b1858dad31a5cdd195960721b6044820152606401611018565b6001600160a01b0383166000908152601a602052604090205460ff16156112d35760405162461bcd60e51b8152602060048201526014602482015273149958d95a5d995c88189b1858dad31a5cdd195960621b6044820152606401611018565b60155460ff16156112f0576112e98484846117bf565b90506109dc565b6000546001600160a01b0385811691161480159061131c57506000546001600160a01b03848116911614155b801561133157506001600160a01b0383163014155b801561134857506001600160a01b03831661dead14155b801561136257506013546001600160a01b03848116911614155b801561137c5750600a546001600160a01b03848116911614155b801561139657506009546001600160a01b03848116911614155b80156113b057506008546001600160a01b03848116911614155b15611451576001600160a01b0383166000908152601660205260409020546005546113db8483612112565b111561144f5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401611018565b505b6114596118a5565b15611466576114666118fb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152601690915291909120546114b89184906111db565b6001600160a01b038516600090815260166020908152604080832093909355601990529081205460ff168061150557506001600160a01b03841660009081526019602052604090205460ff165b61151957611514858486611c6f565b61151b565b825b6001600160a01b0385166000908152601660205260409020549091506115419082611694565b6001600160a01b0380861660008181526016602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115959085815260200190565b60405180910390a3506001949350505050565b6000546001600160a01b03163314610bef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611018565b60006109dc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111db565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806116a18385612112565b9050838110156109dc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401611018565b7f1aae40de616179b76c56cc6537e6b06f75cd8bc11e12f6b0026ce013b28434e2611731601154610a3d600c5460125461111a90919063ffffffff16565b61174e601154610a3d600b5460125461111a90919063ffffffff16565b61176b601154610a3d60105460125461111a90919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b600081836117b25760405162461bcd60e51b81526004016110189190611d68565b50600061120c84866120d9565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526016909152918220546118109184906111db565b6001600160a01b03808616600090815260166020526040808220939093559085168152205461183f9083611694565b6001600160a01b0380851660008181526016602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118939086815260200190565b60405180910390a35060019392505050565b6013546000906001600160a01b031633148015906118c6575060155460ff16155b80156118db5750601354600160a01b900460ff165b8015610aaf57505060145430600090815260166020526040902054101590565b6015805460ff1916600117905560025460035460009161191a91610f2a565b61192657600f54611929565b60005b9050600061194d6002610a3d601254610a3d8660145461111a90919063ffffffff16565b905060006119668260145461160290919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106119a0576119a0612073565b6001600160a01b0392831660209182029290920101526004548251911690829060019081106119d1576119d1612073565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b81524792919091169063791ac94790611a1b90869060009087903090429060040161212a565b600060405180830381600087803b158015611a3557600080fd5b505af1158015611a49573d6000803e3d6000fd5b505050506000611a62824761160290919063ffffffff16565b90506000611a7d611a74886002611199565b60125490611602565b90506000611a926002610a3d8481878d61111a565b90506000611aaf83610a3d600d548761111a90919063ffffffff16565b90506000611acc84610a3d600e548861111a90919063ffffffff16565b6009546040519192506000916001600160a01b039091169084908381818185875af1925050503d8060008114611b1e576040519150601f19603f3d011682016040523d82523d6000602084013e611b23565b606091505b5050600a546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611b73576040519150601f19603f3d011682016040523d82523d6000602084013e611b78565b606091505b5060009250508a159050611c585760065460075460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015611bf6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c1b919061219b565b505060408051868152602081018d90527f70f95364b735915be0d979a62777229a66d44c0c3df9c4506cdf898f974b05d592500160405180910390a15b50506015805460ff19169055505050505050505050565b601054601354600091906001600160a01b0384811691161415611c955750600b54611cb0565b6013546001600160a01b0386811691161415611cb05750600c545b6000611cde6011546103e8611cc591906120ba565b610a3d84610a306012548a61111a90919063ffffffff16565b30600090815260166020526040902054909150611cfb9082611694565b30600081815260166020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d4c9085815260200190565b60405180910390a3611d5e8582611602565b9695505050505050565b600060208083528351808285015260005b81811015611d9557858101830151858201604001528201611d79565b81811115611da7576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461102a57600080fd5b60008060408385031215611de557600080fd5b8235611df081611dbd565b946020939093013593505050565b600080600060608486031215611e1357600080fd5b8335611e1e81611dbd565b92506020840135611e2e81611dbd565b929592945050506040919091013590565b600080600060608486031215611e5457600080fd5b505081359360208301359350604090920135919050565b600060208284031215611e7d57600080fd5b5035919050565b600060208284031215611e9657600080fd5b81356109dc81611dbd565b600080600060608486031215611eb657600080fd5b8335611ec181611dbd565b92506020840135611ed181611dbd565b91506040840135611ee181611dbd565b809150509250925092565b801515811461102a57600080fd5b600080600060408486031215611f0f57600080fd5b833567ffffffffffffffff80821115611f2757600080fd5b818601915086601f830112611f3b57600080fd5b813581811115611f4a57600080fd5b8760208260051b8501011115611f5f57600080fd5b60209283019550935050840135611ee181611eec565b60008060408385031215611f8857600080fd5b8235611f9381611dbd565b91506020830135611fa381611dbd565b809150509250929050565b60008060408385031215611fc157600080fd5b50508035926020909101359150565b60008060408385031215611fe357600080fd5b8235611df081611eec565b6000806000806080858703121561200457600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561203257600080fd5b81516109dc81611dbd565b60006020828403121561204f57600080fd5b5051919050565b60006020828403121561206857600080fd5b81516109dc81611eec565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156120b3576120b3612089565b5060010190565b60008160001904831182151516156120d4576120d4612089565b500290565b6000826120f657634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561210d5761210d612089565b500390565b6000821982111561212557612125612089565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561217a5784516001600160a01b031683529383019391830191600101612155565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156121b057600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122029bea45abd2cbf3ba606405dd230eebe3d5cd2debef76695948d04ab1b5df6bd64736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106102975760003560e01c80638da5cb5b1161015a578063d3fef817116100c1578063ed9442f61161007a578063ed9442f614610802578063f2fde38b14610818578063f429389014610838578063f4f784c91461084d578063f887ea401461086d578063fcd9da441461088d57600080fd5b8063d3fef8171461071c578063d6efe7781461073c578063dab84ee71461075c578063dd62ed3e1461077c578063ded1e438146107c2578063df20fd49146107e257600080fd5b8063af6727ed11610113578063af6727ed14610656578063b23e5c4c14610676578063bbde5b2514610696578063c489a649146106c6578063ca33e64c146106e6578063d36d04971461070657600080fd5b80638da5cb5b1461059657806395d89b41146105b457806398118cb4146105e0578063a8aa1b31146105f6578063a9059cbb14610616578063ab2be7261461063657600080fd5b80634f1455c9116101fe57806370a08231116101b757806370a08231146104b9578063715018a6146104ef57806375cb1bd11461050457806377b54bad1461052457806385266ec614610544578063893d20e81461056457600080fd5b80634f1455c9146104225780635526566914610438578063571ac8b01461044d5780636827e7641461046d5780636acaf860146104835780636ddd17131461049857600080fd5b80631df4ccfc116102505780631df4ccfc1461037857806323b872dd1461038e5780632ddc2f28146103ae57806330c9a6a0146103d0578063313ce567146103f0578063397dbed71461040c57600080fd5b80630445b667146102a357806306fdde03146102cc578063095ea7b3146103075780630fd5744d14610337578063180b0d7e1461034d57806318160ddd1461036357600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b960145481565b6040519081526020015b60405180910390f35b3480156102d857600080fd5b50604080518082019091526009815268426974436c6f75647360b81b60208201525b6040516102c39190611d68565b34801561031357600080fd5b50610327610322366004611dd2565b6108ad565b60405190151581526020016102c3565b34801561034357600080fd5b506102b960105481565b34801561035957600080fd5b506102b960115481565b34801561036f57600080fd5b506001546102b9565b34801561038457600080fd5b506102b960125481565b34801561039a57600080fd5b506103276103a9366004611dfe565b61091a565b3480156103ba57600080fd5b506103ce6103c9366004611e3f565b6109e3565b005b3480156103dc57600080fd5b506102b96103eb366004611e6b565b6109fc565b3480156103fc57600080fd5b50604051601281526020016102c3565b34801561041857600080fd5b506102b960055481565b34801561042e57600080fd5b506102b9600c5481565b34801561044457600080fd5b506102b9610a43565b34801561045957600080fd5b50610327610468366004611e84565b610ab4565b34801561047957600080fd5b506102b9600d5481565b34801561048f57600080fd5b506103ce610ac2565b3480156104a457600080fd5b5060135461032790600160a01b900460ff1681565b3480156104c557600080fd5b506102b96104d4366004611e84565b6001600160a01b031660009081526016602052604090205490565b3480156104fb57600080fd5b506103ce610bdd565b34801561051057600080fd5b506103ce61051f366004611ea1565b610bf1565b34801561053057600080fd5b5061032761053f366004611dd2565b610c7d565b34801561055057600080fd5b506103ce61055f366004611e6b565b610db0565b34801561057057600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102c3565b3480156105a257600080fd5b506000546001600160a01b031661057e565b3480156105c057600080fd5b5060408051808201909152600381526242435360e81b60208201526102fa565b3480156105ec57600080fd5b506102b9600f5481565b34801561060257600080fd5b5060135461057e906001600160a01b031681565b34801561062257600080fd5b50610327610631366004611dd2565b610df3565b34801561064257600080fd5b5060085461057e906001600160a01b031681565b34801561066257600080fd5b50600a5461057e906001600160a01b031681565b34801561068257600080fd5b506103ce610691366004611e84565b610e00565b3480156106a257600080fd5b506103276106b1366004611e84565b601a6020526000908152604090205460ff1681565b3480156106d257600080fd5b506103ce6106e1366004611e84565b610e08565b3480156106f257600080fd5b5060075461057e906001600160a01b031681565b34801561071257600080fd5b506102b9600b5481565b34801561072857600080fd5b506103ce610737366004611efa565b610e32565b34801561074857600080fd5b506103ce610757366004611efa565b610eb1565b34801561076857600080fd5b5060095461057e906001600160a01b031681565b34801561078857600080fd5b506102b9610797366004611f75565b6001600160a01b03918216600090815260176020908152604080832093909416825291909152205490565b3480156107ce57600080fd5b506103276107dd366004611fae565b610f2a565b3480156107ee57600080fd5b506103ce6107fd366004611fd0565b610f3e565b34801561080e57600080fd5b506102b9600e5481565b34801561082457600080fd5b506103ce610833366004611e84565b610faf565b34801561084457600080fd5b506103ce61102d565b34801561085957600080fd5b506103ce610868366004611efa565b611066565b34801561087957600080fd5b5060065461057e906001600160a01b031681565b34801561089957600080fd5b506103ce6108a8366004611fee565b6110df565b3360008181526017602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109089086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152601760209081526040808320338452909152812054600019146109ce57604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b03871660009081526017825283812033825290915291909120546109a99184906111db565b6001600160a01b03851660009081526017602090815260408083203384529091529020555b6109d9848484611215565b90505b9392505050565b6109eb6115a8565b600b91909155600c91909155601055565b6000610914610a09610a43565b6013546001600160a01b0316600090815260166020526040902054610a3d90610a36906002905b9061111a565b859061111a565b90611199565b60166020527f0263c2b778d062355049effc2dece97bc6547ff8a88a3258daa512061c2153dd5461dead60009081527f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b57546001549192610aaf929091610aa99190611602565b90611602565b905090565b6000610914826000196108ad565b610aca6115a8565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b419190612020565b6004805460405163e6a4390560e01b81526001600160a01b0391821692810192909252306024830152919091169063e6a43905906044016020604051808303816000875af1158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb9190612020565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b610be56115a8565b610bef6000611644565b565b610bf96115a8565b600780546001600160a01b038581166001600160a01b03199283168117909355600980548683169084168117909155600a8054928616929093168217909255604080519384526020840192909252908201527fdfa5e792c57928ef9d8c0c49c80dbe27345962925ba3ef3ce30ec7d9bef6df269060600160405180910390a1505050565b6000610c876115a8565b81610cf7576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf4919061203d565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160075460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af1158015610d8c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190612056565b610db86115a8565b60058190556040518181527fdd4ef051c4c49233ec73abfc2ee1514725d2a818fbcde46ee5d34a49034922f99060200160405180910390a150565b60006109dc338484611215565b610bbb6115a8565b610e106115a8565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b610e3a6115a8565b60005b82811015610eab578160196000868685818110610e5c57610e5c612073565b9050602002016020810190610e719190611e84565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610ea38161209f565b915050610e3d565b50505050565b610eb96115a8565b60005b82811015610eab5781601a6000868685818110610edb57610edb612073565b9050602002016020810190610ef09190611e84565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610f228161209f565b915050610ebc565b600082610f36836109fc565b119392505050565b610f466115a8565b6013805460ff60a01b1916600160a01b8415158102919091179182905560148390556040805184815260ff9290930491909116151560208301527f1a09c4ac66f4f4e8f626014cafdea7efe437ab39f09ac9feada57ef81af7664b910160405180910390a15050565b610fb76115a8565b6001600160a01b0381166110215760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61102a81611644565b50565b6007546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561102a573d6000803e3d6000fd5b61106e6115a8565b60005b82811015610eab57816018600086868581811061109057611090612073565b90506020020160208101906110a59190611e84565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806110d78161209f565b915050611071565b6110e76115a8565b600f849055600d839055600e82905561110a826111048686611694565b90611694565b6012556011819055610eab6116f3565b60008261112957506000610914565b600061113583856120ba565b90508261114285836120d9565b146109dc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401611018565b60006109dc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611791565b600081848411156111ff5760405162461bcd60e51b81526004016110189190611d68565b50600061120c84866120fb565b95945050505050565b6001600160a01b0383166000908152601a602052604081205460ff16156112735760405162461bcd60e51b815260206004820152601260248201527114d95b99195c88189b1858dad31a5cdd195960721b6044820152606401611018565b6001600160a01b0383166000908152601a602052604090205460ff16156112d35760405162461bcd60e51b8152602060048201526014602482015273149958d95a5d995c88189b1858dad31a5cdd195960621b6044820152606401611018565b60155460ff16156112f0576112e98484846117bf565b90506109dc565b6000546001600160a01b0385811691161480159061131c57506000546001600160a01b03848116911614155b801561133157506001600160a01b0383163014155b801561134857506001600160a01b03831661dead14155b801561136257506013546001600160a01b03848116911614155b801561137c5750600a546001600160a01b03848116911614155b801561139657506009546001600160a01b03848116911614155b80156113b057506008546001600160a01b03848116911614155b15611451576001600160a01b0383166000908152601660205260409020546005546113db8483612112565b111561144f5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401611018565b505b6114596118a5565b15611466576114666118fb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152601690915291909120546114b89184906111db565b6001600160a01b038516600090815260166020908152604080832093909355601990529081205460ff168061150557506001600160a01b03841660009081526019602052604090205460ff165b61151957611514858486611c6f565b61151b565b825b6001600160a01b0385166000908152601660205260409020549091506115419082611694565b6001600160a01b0380861660008181526016602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115959085815260200190565b60405180910390a3506001949350505050565b6000546001600160a01b03163314610bef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611018565b60006109dc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111db565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806116a18385612112565b9050838110156109dc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401611018565b7f1aae40de616179b76c56cc6537e6b06f75cd8bc11e12f6b0026ce013b28434e2611731601154610a3d600c5460125461111a90919063ffffffff16565b61174e601154610a3d600b5460125461111a90919063ffffffff16565b61176b601154610a3d60105460125461111a90919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b600081836117b25760405162461bcd60e51b81526004016110189190611d68565b50600061120c84866120d9565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526016909152918220546118109184906111db565b6001600160a01b03808616600090815260166020526040808220939093559085168152205461183f9083611694565b6001600160a01b0380851660008181526016602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118939086815260200190565b60405180910390a35060019392505050565b6013546000906001600160a01b031633148015906118c6575060155460ff16155b80156118db5750601354600160a01b900460ff165b8015610aaf57505060145430600090815260166020526040902054101590565b6015805460ff1916600117905560025460035460009161191a91610f2a565b61192657600f54611929565b60005b9050600061194d6002610a3d601254610a3d8660145461111a90919063ffffffff16565b905060006119668260145461160290919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106119a0576119a0612073565b6001600160a01b0392831660209182029290920101526004548251911690829060019081106119d1576119d1612073565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b81524792919091169063791ac94790611a1b90869060009087903090429060040161212a565b600060405180830381600087803b158015611a3557600080fd5b505af1158015611a49573d6000803e3d6000fd5b505050506000611a62824761160290919063ffffffff16565b90506000611a7d611a74886002611199565b60125490611602565b90506000611a926002610a3d8481878d61111a565b90506000611aaf83610a3d600d548761111a90919063ffffffff16565b90506000611acc84610a3d600e548861111a90919063ffffffff16565b6009546040519192506000916001600160a01b039091169084908381818185875af1925050503d8060008114611b1e576040519150601f19603f3d011682016040523d82523d6000602084013e611b23565b606091505b5050600a546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611b73576040519150601f19603f3d011682016040523d82523d6000602084013e611b78565b606091505b5060009250508a159050611c585760065460075460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af1158015611bf6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c1b919061219b565b505060408051868152602081018d90527f70f95364b735915be0d979a62777229a66d44c0c3df9c4506cdf898f974b05d592500160405180910390a15b50506015805460ff19169055505050505050505050565b601054601354600091906001600160a01b0384811691161415611c955750600b54611cb0565b6013546001600160a01b0386811691161415611cb05750600c545b6000611cde6011546103e8611cc591906120ba565b610a3d84610a306012548a61111a90919063ffffffff16565b30600090815260166020526040902054909150611cfb9082611694565b30600081815260166020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d4c9085815260200190565b60405180910390a3611d5e8582611602565b9695505050505050565b600060208083528351808285015260005b81811015611d9557858101830151858201604001528201611d79565b81811115611da7576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461102a57600080fd5b60008060408385031215611de557600080fd5b8235611df081611dbd565b946020939093013593505050565b600080600060608486031215611e1357600080fd5b8335611e1e81611dbd565b92506020840135611e2e81611dbd565b929592945050506040919091013590565b600080600060608486031215611e5457600080fd5b505081359360208301359350604090920135919050565b600060208284031215611e7d57600080fd5b5035919050565b600060208284031215611e9657600080fd5b81356109dc81611dbd565b600080600060608486031215611eb657600080fd5b8335611ec181611dbd565b92506020840135611ed181611dbd565b91506040840135611ee181611dbd565b809150509250925092565b801515811461102a57600080fd5b600080600060408486031215611f0f57600080fd5b833567ffffffffffffffff80821115611f2757600080fd5b818601915086601f830112611f3b57600080fd5b813581811115611f4a57600080fd5b8760208260051b8501011115611f5f57600080fd5b60209283019550935050840135611ee181611eec565b60008060408385031215611f8857600080fd5b8235611f9381611dbd565b91506020830135611fa381611dbd565b809150509250929050565b60008060408385031215611fc157600080fd5b50508035926020909101359150565b60008060408385031215611fe357600080fd5b8235611df081611eec565b6000806000806080858703121561200457600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561203257600080fd5b81516109dc81611dbd565b60006020828403121561204f57600080fd5b5051919050565b60006020828403121561206857600080fd5b81516109dc81611eec565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156120b3576120b3612089565b5060010190565b60008160001904831182151516156120d4576120d4612089565b500290565b6000826120f657634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561210d5761210d612089565b500390565b6000821982111561212557612125612089565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561217a5784516001600160a01b031683529383019391830191600101612155565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156121b057600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122029bea45abd2cbf3ba606405dd230eebe3d5cd2debef76695948d04ab1b5df6bd64736f6c634300080b0033

Deployed Bytecode Sourcemap

13145:11982:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14450:50;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;14450:50:0;;;;;;;;15937:69;;;;;;;;;;-1:-1:-1;15999:5:0;;;;;;;;;;;;-1:-1:-1;;;15999:5:0;;;;15937:69;;;;;;;:::i;16775:216::-;;;;;;;;;;-1:-1:-1;16775:216:0;;;;;:::i;:::-;;:::i;:::-;;;1442:14:1;;1435:22;1417:41;;1405:2;1390:18;16775:216:0;1277:187:1;14238:34:0;;;;;;;;;;;;;;;;14279:36;;;;;;;;;;;;;;;;15691:86;;;;;;;;;;-1:-1:-1;15763:12:0;;15691:86;;14322:56;;;;;;;;;;;;;;;;17293:372;;;;;;;;;;-1:-1:-1;17293:372:0;;;;;:::i;:::-;;:::i;22463:251::-;;;;;;;;;;-1:-1:-1;22463:251:0;;;;;:::i;:::-;;:::i;:::-;;16478:149;;;;;;;;;;-1:-1:-1;16478:149:0;;;;;:::i;:::-;;:::i;15783:69::-;;;;;;;;;;-1:-1:-1;15783:69:0;;13337:2;2578:36:1;;2566:2;2551:18;15783:69:0;2436:184:1;13644:66:0;;;;;;;;;;;;;;;;14092:31;;;;;;;;;;;;;;;;16635:132;;;;;;;;;;;;;:::i;16999:122::-;;;;;;;;;;-1:-1:-1;16999:122:0;;;;;:::i;:::-;;:::i;14130:27::-;;;;;;;;;;;;;;;;24383:125;;;;;;;;;;;;;:::i;14413:30::-;;;;;;;;;;-1:-1:-1;14413:30:0;;;;-1:-1:-1;;;14413:30:0;;;;;;16087:103;;;;;;;;;;-1:-1:-1;16087:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;16170:18:0;16153:7;16170:18;;;:9;:18;;;;;;;16087:103;9502;;;;;;;;;;;;;:::i;23353:357::-;;;;;;;;;;-1:-1:-1;23353:357:0;;;;;:::i;:::-;;:::i;22106:349::-;;;;;;;;;;-1:-1:-1;22106:349:0;;;;;:::i;:::-;;:::i;24959:165::-;;;;;;;;;;-1:-1:-1;24959:165:0;;;;;:::i;:::-;;:::i;16012:69::-;;;;;;;;;;-1:-1:-1;16055:7:0;8927:6;-1:-1:-1;;;;;8927:6:0;16012:69;;;-1:-1:-1;;;;;3575:55:1;;;3557:74;;3545:2;3530:18;16012:69:0;3411:226:1;8854:87:0;;;;;;;;;;-1:-1:-1;8900:7:0;8927:6;-1:-1:-1;;;;;8927:6:0;8854:87;;15858:73;;;;;;;;;;-1:-1:-1;15922:7:0;;;;;;;;;;;;-1:-1:-1;;;15922:7:0;;;;15858:73;;14198:31;;;;;;;;;;;;;;;;14387:19;;;;;;;;;;-1:-1:-1;14387:19:0;;;;-1:-1:-1;;;;;14387:19:0;;;17129:156;;;;;;;;;;-1:-1:-1;17129:156:0;;;;;:::i;:::-;;:::i;13852:30::-;;;;;;;;;;-1:-1:-1;13852:30:0;;;;-1:-1:-1;;;;;13852:30:0;;;13970:74;;;;;;;;;;-1:-1:-1;13970:74:0;;;;-1:-1:-1;;;;;13970:74:0;;;24516:92;;;;;;;;;;-1:-1:-1;24516:92:0;;;;;:::i;:::-;;:::i;14726:43::-;;;;;;;;;;-1:-1:-1;14726:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24616:121;;;;;;;;;;-1:-1:-1;24616:121:0;;;;;:::i;:::-;;:::i;13809:36::-;;;;;;;;;;-1:-1:-1;13809:36:0;;;;-1:-1:-1;;;;;13809:36:0;;;14053:32;;;;;;;;;;;;;;;;24158:217;;;;;;;;;;-1:-1:-1;24158:217:0;;;;;:::i;:::-;;:::i;24745:206::-;;;;;;;;;;-1:-1:-1;24745:206:0;;;;;:::i;:::-;;:::i;13889:74::-;;;;;;;;;;-1:-1:-1;13889:74:0;;;;-1:-1:-1;;;;;13889:74:0;;;16196:131;;;;;;;;;;-1:-1:-1;16196:131:0;;;;;:::i;:::-;-1:-1:-1;;;;;16297:19:0;;;16280:7;16297:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16196:131;16335:135;;;;;;;;;;-1:-1:-1;16335:135:0;;;;;:::i;:::-;;:::i;23718:220::-;;;;;;;;;;-1:-1:-1;23718:220:0;;;;;:::i;:::-;;:::i;14164:27::-;;;;;;;;;;;;;;;;9760:201;;;;;;;;;;-1:-1:-1;9760:201:0;;;;;:::i;:::-;;:::i;17673:112::-;;;;;;;;;;;;;:::i;23946:204::-;;;;;;;;;;-1:-1:-1;23946:204:0;;;;;:::i;:::-;;:::i;13719:81::-;;;;;;;;;;-1:-1:-1;13719:81:0;;;;-1:-1:-1;;;;;13719:81:0;;;22993:352;;;;;;;;;;-1:-1:-1;22993:352:0;;;;;:::i;:::-;;:::i;16775:216::-;16879:10;16850:4;16867:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16867:32:0;;;;;;;;;;:41;;;16924:37;16850:4;;16867:32;;16924:37;;;;16902:6;160:25:1;;148:2;133:18;;14:177;16924:37:0;;;;;;;;-1:-1:-1;16979:4:0;16775:216;;;;;:::o;17293:372::-;-1:-1:-1;;;;;17414:19:0;;17393:4;17414:19;;;:11;:19;;;;;;;;17434:10;17414:31;;;;;;;;-1:-1:-1;;17414:52:0;17410:188;;17517:69;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17517:19:0;;-1:-1:-1;17517:19:0;;;:11;:19;;;;;17537:10;17517:31;;;;;;;;;;:69;;17553:6;;17517:35;:69::i;:::-;-1:-1:-1;;;;;17483:19:0;;;;;;:11;:19;;;;;;;;17503:10;17483:31;;;;;;;:103;17410:188;17617:40;17631:6;17639:9;17650:6;17617:13;:40::i;:::-;17610:47;;17293:372;;;;;;:::o;22463:251::-;8740:13;:11;:13::i;:::-;22597:11:::1;:28:::0;;;;22636:10:::1;:26:::0;;;;22673:15:::1;:33:::0;22463:251::o;16478:149::-;16538:7;16565:54;16606:12;:10;:12::i;:::-;16588:4;;-1:-1:-1;;;;;16588:4:0;16153:7;16170:18;;;:9;:18;;;;;;16565:36;;16578:22;;16598:1;;16578:15;:19;;:22::i;:::-;16565:8;;:12;:36::i;:::-;:40;;:54::i;16635:132::-;16170:9;:18;;;;13520:42;16678:7;16170:18;;;;;16705:12;;16678:7;;16705:54;;16170:18;;16705:33;;:12;:16;:33::i;:::-;:37;;:54::i;:::-;16698:61;;16635:132;:::o;16999:122::-;17054:4;17078:35;17086:7;-1:-1:-1;;17078:7:0;:35::i;24383:125::-;8740:13;:11;:13::i;:::-;24454:6:::1;;;;;;;;;-1:-1:-1::0;;;;;24454:6:0::1;-1:-1:-1::0;;;;;24454:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24480:4;::::0;;24442:58:::1;::::0;-1:-1:-1;;;24442:58:0;;-1:-1:-1;;;;;24480:4:0;;::::1;24442:58:::0;;::::1;6610:34:1::0;;;;24494:4:0::1;6660:18:1::0;;;6653:43;24442:37:0;;;::::1;::::0;::::1;::::0;6522:18:1;;24442:58:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24435:4;:65:::0;;-1:-1:-1;;;;;;24435:65:0::1;-1:-1:-1::0;;;;;24435:65:0;;;::::1;::::0;;;::::1;::::0;;24383:125::o;9502:103::-;8740:13;:11;:13::i;:::-;9567:30:::1;9594:1;9567:18;:30::i;:::-;9502:103::o:0;23353:357::-;8740:13;:11;:13::i;:::-;23485:21:::1;:46:::0;;-1:-1:-1;;;;;23485:46:0;;::::1;-1:-1:-1::0;;;;;;23485:46:0;;::::1;::::0;::::1;::::0;;;23542:14:::1;:32:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;23585:14:::1;:32:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;23635:67:::1;::::0;;6970:34:1;;;7035:2;7020:18;;7013:43;;;;7072:18;;;7065:43;23635:67:0::1;::::0;6897:2:1;6882:18;23635:67:0::1;;;;;;;23353:357:::0;;;:::o;22106:349::-;22197:12;8740:13;:11;:13::i;:::-;22226:11;22222:98:::1;;22263:45;::::0;-1:-1:-1;;;22263:45:0;;22302:4:::1;22263:45;::::0;::::1;3557:74:1::0;-1:-1:-1;;;;;22263:30:0;::::1;::::0;::::1;::::0;3530:18:1;;22263:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22254:54;;22222:98;22337:32;::::0;;-1:-1:-1;;;;;7500:55:1;;7482:74;;7587:2;7572:18;;7565:34;;;22337:32:0::1;::::0;7455:18:1;22337:32:0::1;;;;;;;22417:21;::::0;22387:60:::1;::::0;-1:-1:-1;;;22387:60:0;;-1:-1:-1;;;;;22417:21:0;;::::1;22387:60;::::0;::::1;7482:74:1::0;7572:18;;;7565:34;;;22387:29:0;;::::1;::::0;::::1;::::0;7455:18:1;;22387:60:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24959:165::-:0;8740:13;:11;:13::i;:::-;25036:19:::1;:28:::0;;;25080:36:::1;::::0;160:25:1;;;25080:36:0::1;::::0;148:2:1;133:18;25080:36:0::1;;;;;;;24959:165:::0;:::o;17129:156::-;17209:4;17233:44;17247:10;17259:9;17270:6;17233:13;:44::i;24516:92::-;8740:13;:11;:13::i;24616:121::-;8740:13;:11;:13::i;:::-;24695:15:::1;:34:::0;;-1:-1:-1;;;;;;24695:34:0::1;-1:-1:-1::0;;;;;24695:34:0;;;::::1;::::0;;;::::1;::::0;;24616:121::o;24158:217::-;8740:13;:11;:13::i;:::-;24260:9:::1;24255:113;24275:19:::0;;::::1;24255:113;;;24348:8;24316:16;:29;24333:8;;24342:1;24333:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24316:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;24316:29:0;:40;;-1:-1:-1;;24316:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24296:3;::::1;::::0;::::1;:::i;:::-;;;;24255:113;;;;24158:217:::0;;;:::o;24745:206::-;8740:13;:11;:13::i;:::-;24841:9:::1;24836:108;24856:19:::0;;::::1;24836:108;;;24924:8;24897:11;:24;24909:8;;24918:1;24909:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24897:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;24897:24:0;:35;;-1:-1:-1;;24897:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24877:3;::::1;::::0;::::1;:::i;:::-;;;;24836:108;;16335:135:::0;16409:4;16457:5;16433:21;16445:8;16433:11;:21::i;:::-;:29;;16335:135;-1:-1:-1;;;16335:135:0:o;23718:220::-;8740:13;:11;:13::i;:::-;23809:11:::1;:22:::0;;-1:-1:-1;;;;23809:22:0::1;-1:-1:-1::0;;;23809:22:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;:11:::1;23842:23:::0;;;23881:49:::1;::::0;;8432:25:1;;;23809:22:0::1;23918:11:::0;;;::::1;::::0;;;::::1;8500:14:1::0;8493:22;8488:2;8473:18;;8466:50;23881:49:0::1;::::0;8405:18:1;23881:49:0::1;;;;;;;23718:220:::0;;:::o;9760:201::-;8740:13;:11;:13::i;:::-;-1:-1:-1;;;;;9849:22:0;::::1;9841:73;;;::::0;-1:-1:-1;;;9841:73:0;;8729:2:1;9841:73:0::1;::::0;::::1;8711:21:1::0;8768:2;8748:18;;;8741:30;8807:34;8787:18;;;8780:62;-1:-1:-1;;;8858:18:1;;;8851:36;8904:19;;9841:73:0::1;;;;;;;;;9925:28;9944:8;9925:18;:28::i;:::-;9760:201:::0;:::o;17673:112::-;17723:21;;17715:62;;-1:-1:-1;;;;;17723:21:0;;;;17755;17715:62;;;;;17723:21;17715:62;17723:21;17715:62;17755:21;17723;17715:62;;;;;;;;;;;;;;;;;;;23946:204;8740:13;:11;:13::i;:::-;24042:9:::1;24037:106;24057:19:::0;;::::1;24037:106;;;24123:8;24098:9;:22;24108:8;;24117:1;24108:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24098:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;24098:22:0;:33;;-1:-1:-1;;24098:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24078:3;::::1;::::0;::::1;:::i;:::-;;;;24037:106;;22993:352:::0;8740:13;:11;:13::i;:::-;23128:12:::1;:28:::0;;;23167:6:::1;:16:::0;;;23194:6:::1;:16:::0;;;23234:39:::1;23203:7:::0;23234:26:::1;23143:13:::0;23176:7;23234:17:::1;:26::i;:::-;:30:::0;::::1;:39::i;:::-;23223:8;:50:::0;23284:14:::1;:32:::0;;;23327:10:::1;:8;:10::i;2166:471::-:0;2224:7;2469:6;2465:47;;-1:-1:-1;2499:1:0;2492:8;;2465:47;2524:9;2536:5;2540:1;2536;:5;:::i;:::-;2524:17;-1:-1:-1;2569:1:0;2560:5;2564:1;2524:17;2560:5;:::i;:::-;:10;2552:56;;;;-1:-1:-1;;;2552:56:0;;9531:2:1;2552:56:0;;;9513:21:1;9570:2;9550:18;;;9543:30;9609:34;9589:18;;;9582:62;-1:-1:-1;;;9660:18:1;;;9653:31;9701:19;;2552:56:0;9329:397:1;3087:132:0;3145:7;3172:39;3176:1;3179;3172:39;;;;;;;;;;;;;;;;;:3;:39::i;1737:192::-;1823:7;1859:12;1851:6;;;;1843:29;;;;-1:-1:-1;;;1843:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1883:9:0;1895:5;1899:1;1895;:5;:::i;:::-;1883:17;1737:192;-1:-1:-1;;;;;1737:192:0:o;17793:1370::-;-1:-1:-1;;;;;17911:19:0;;17885:4;17911:19;;;:11;:19;;;;;;;;17910:20;17902:51;;;;-1:-1:-1;;;17902:51:0;;10063:2:1;17902:51:0;;;10045:21:1;10102:2;10082:18;;;10075:30;-1:-1:-1;;;10121:18:1;;;10114:48;10179:18;;17902:51:0;9861:342:1;17902:51:0;-1:-1:-1;;;;;17973:22:0;;;;;;:11;:22;;;;;;;;17972:23;17964:56;;;;-1:-1:-1;;;17964:56:0;;10410:2:1;17964:56:0;;;10392:21:1;10449:2;10429:18;;;10422:30;-1:-1:-1;;;10468:18:1;;;10461:50;10528:18;;17964:56:0;10208:344:1;17964:56:0;18037:6;;;;18033:63;;;18053:41;18068:6;18076:9;18087:6;18053:14;:41::i;:::-;18046:48;;;;18033:63;8900:7;8927:6;-1:-1:-1;;;;;18126:17:0;;;8927:6;;18126:17;;;;:54;;-1:-1:-1;8900:7:0;8927:6;-1:-1:-1;;;;;18160:20:0;;;8927:6;;18160:20;;18126:54;:97;;;;-1:-1:-1;;;;;;18197:26:0;;18218:4;18197:26;;18126:97;:140;;;;-1:-1:-1;;;;;;18240:26:0;;13520:42;18240:26;;18126:140;:174;;;;-1:-1:-1;18296:4:0;;-1:-1:-1;;;;;18283:17:0;;;18296:4;;18283:17;;18126:174;:218;;;;-1:-1:-1;18330:14:0;;-1:-1:-1;;;;;18317:27:0;;;18330:14;;18317:27;;18126:218;:262;;;;-1:-1:-1;18374:14:0;;-1:-1:-1;;;;;18361:27:0;;;18374:14;;18361:27;;18126:262;:307;;;;-1:-1:-1;18418:15:0;;-1:-1:-1;;;;;18405:28:0;;;18418:15;;18405:28;;18126:307;18108:588;;;-1:-1:-1;;;;;16170:18:0;;18460;16170;;;:9;:18;;;;;;18567:19;;18543;18556:6;16170:18;18543:19;:::i;:::-;18542:44;;18516:168;;;;-1:-1:-1;;;18516:168:0;;10892:2:1;18516:168:0;;;10874:21:1;10931:2;10911:18;;;10904:30;10970:34;10950:18;;;10943:62;11041:32;11021:18;;;11014:60;11091:19;;18516:168:0;10690:426:1;18516:168:0;18445:251;18108:588;18712:17;:15;:17::i;:::-;18708:61;;;18746:11;:9;:11::i;:::-;18801:53;;;;;;;;;;;-1:-1:-1;;;18801:53:0;;;;;;;;-1:-1:-1;;;;;18801:17:0;;-1:-1:-1;18801:17:0;;;:9;:17;;;;;;;;:53;;18823:6;;18801:21;:53::i;:::-;-1:-1:-1;;;;;18781:17:0;;;;;;:9;:17;;;;;;;;:73;;;;18893:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;18921:27:0;;;;;;:16;:27;;;;;;;;18893:55;18892:104;;18961:35;18970:6;18978;18986:9;18961:8;:35::i;:::-;18892:104;;;18952:6;18892:104;-1:-1:-1;;;;;19032:20:0;;;;;;:9;:20;;;;;;18867:129;;-1:-1:-1;19032:40:0;;18867:129;19032:24;:40::i;:::-;-1:-1:-1;;;;;19009:20:0;;;;;;;:9;:20;;;;;;;:63;;;;19090:43;;;;;;;;;;19118:14;160:25:1;;148:2;133:18;;14:177;19090:43:0;;;;;;;;-1:-1:-1;19151:4:0;;17793:1370;-1:-1:-1;;;;17793:1370:0:o;9019:132::-;8900:7;8927:6;-1:-1:-1;;;;;8927:6:0;7580:10;9083:23;9075:68;;;;-1:-1:-1;;;9075:68:0;;11323:2:1;9075:68:0;;;11305:21:1;;;11342:18;;;11335:30;11401:34;11381:18;;;11374:62;11453:18;;9075:68:0;11121:356:1;1320:136:0;1378:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;10121:191::-;10195:16;10214:6;;-1:-1:-1;;;;;10231:17:0;;;-1:-1:-1;;;;;;10231:17:0;;;;;;10264:40;;10214:6;;;;;;;10264:40;;10195:16;10264:40;10184:128;10121:191;:::o;878:181::-;936:7;;968:5;972:1;968;:5;:::i;:::-;956:17;;997:1;992;:6;;984:46;;;;-1:-1:-1;;;984:46:0;;11684:2:1;984:46:0;;;11666:21:1;11723:2;11703:18;;;11696:30;11762:29;11742:18;;;11735:57;11809:18;;984:46:0;11482:351:1;22722:263:0;22767:210;22783:44;22812:14;;22783:24;22796:10;;22783:8;;:12;;:24;;;;:::i;:44::-;22849:45;22879:14;;22849:25;22862:11;;22849:8;;:12;;:25;;;;:::i;:45::-;22916:49;22950:14;;22916:29;22929:15;;22916:8;;:12;;:29;;;;:::i;:49::-;22767:210;;;12058:4:1;12046:17;;;12028:36;;12100:17;;;12095:2;12080:18;;12073:45;12154:17;;12134:18;;;12127:45;22767:210:0;;;;;;12016:2:1;22767:210:0;;;22722:263::o;3689:345::-;3775:7;3877:12;3870:5;3862:28;;;;-1:-1:-1;;;3862:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3901:9:0;3913:5;3917:1;3913;:5;:::i;19171:330::-;19301:53;;;;;;;;;;;-1:-1:-1;;;19301:53:0;;;;;;;;-1:-1:-1;;;;;19301:17:0;;19264:4;19301:17;;;:9;:17;;;;;;;:53;;19323:6;;19301:21;:53::i;:::-;-1:-1:-1;;;;;19281:17:0;;;;;;;:9;:17;;;;;;:73;;;;19388:20;;;;;;;:32;;19413:6;19388:24;:32::i;:::-;-1:-1:-1;;;;;19365:20:0;;;;;;;:9;:20;;;;;;;:55;;;;19436:35;;;;;;;;;;19464:6;160:25:1;;148:2;133:18;;14:177;19436:35:0;;;;;;;;-1:-1:-1;19489:4:0;19171:330;;;;;:::o;20218:210::-;20306:4;;20268;;-1:-1:-1;;;;;20306:4:0;20292:10;:18;;;;:42;;-1:-1:-1;20328:6:0;;;;20327:7;20292:42;:70;;;;-1:-1:-1;20351:11:0;;-1:-1:-1;;;20351:11:0;;;;20292:70;:128;;;;-1:-1:-1;;20407:13:0;;20397:4;20379:24;;;;:9;:24;;;;;;:41;;;20218:210::o;20436:1662::-;15207:6;:13;;-1:-1:-1;;15207:13:0;15216:4;15207:13;;;20527:8:::1;::::0;20537:19:::1;::::0;15207:6;;20516:41:::1;::::0;:10:::1;:41::i;:::-;:60;;20564:12;;20516:60;;;20560:1;20516:60;20486:90;;20587:23;20613:59;20670:1;20613:52;20656:8;;20613:38;20631:19;20613:13;;:17;;:38;;;;:::i;:59::-;20587:85;;20683:20;20706:34;20724:15;20706:13;;:17;;:34;;;;:::i;:::-;20777:16;::::0;;20791:1:::1;20777:16:::0;;;;;::::1;::::0;;20683:57;;-1:-1:-1;20753:21:0::1;::::0;20777:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20777:16:0::1;20753:40;;20822:4;20804;20809:1;20804:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20804:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;20848:4:::1;::::0;20838:7;;20848:4;::::1;::::0;20838;;20848;;20838:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;20838:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;20923:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;20923:188:0;;20889:21:::1;::::0;20923:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;20995:12;;20865:21:::1;::::0;21038:4;;21065::::1;::::0;21085:15:::1;::::0;20923:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21124:17;21144:40;21170:13;21144:21;:25;;:40;;;;:::i;:::-;21124:60:::0;-1:-1:-1;21197:19:0::1;21219:40;21232:26;:19:::0;21256:1:::1;21232:23;:26::i;:::-;21219:8;::::0;;:12:::1;:40::i;:::-;21197:62:::0;-1:-1:-1;21272:26:0::1;21301:58;21357:1;21301:51;21197:62:::0;21301:51;:9;21315:19;21301:13:::1;:34::i;:58::-;21272:87;;21370:21;21394:38;21420:11;21394:21;21408:6;;21394:9;:13;;:21;;;;:::i;:38::-;21370:62;;21443:24;21470:38;21496:11;21470:21;21484:6;;21470:9;:13;;:21;;;;:::i;:38::-;21550:14;::::0;21542:54:::1;::::0;21443:65;;-1:-1:-1;21522:15:0::1;::::0;-1:-1:-1;;;;;21550:14:0;;::::1;::::0;21578:13;;21522:15;21542:54;21522:15;21542:54;21578:13;21550:14;21542:54:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;21631:14:0::1;::::0;21623:57:::1;::::0;21521:75;;-1:-1:-1;;;;;;21631:14:0::1;::::0;21659:16;;21623:57:::1;::::0;;;21659:16;21631:14;21623:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;21706:5:0::1;::::0;-1:-1:-1;;21728:19:0;;;-1:-1:-1;21724:367:0::1;;21764:6;::::0;21938:21:::1;::::0;21764:244:::1;::::0;-1:-1:-1;;;21764:244:0;;21840:4:::1;21764:244;::::0;::::1;13920:34:1::0;13970:18;;;13963:34;;;21764:6:0::1;14013:18:1::0;;;14006:34;;;14056:18;;;14049:34;-1:-1:-1;;;;;21938:21:0;;::::1;14099:19:1::0;;;14092:44;21978:15:0::1;14152:19:1::0;;;14145:35;21764:6:0;::::1;::::0;:22:::1;::::0;21794:18;;13831:19:1;;21764:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;22028:51:0::1;::::0;;14676:25:1;;;14732:2;14717:18;;14710:34;;;22028:51:0::1;::::0;-1:-1:-1;14649:18:1;22028:51:0::1;;;;;;;21724:367;-1:-1:-1::0;;15243:6:0;:14;;-1:-1:-1;;15243:14:0;;;-1:-1:-1;;;;;;;;;20436:1662:0:o;19637:573::-;19762:15;;19805:4;;19724:7;;19762:15;-1:-1:-1;;;;;19792:17:0;;;19805:4;;19792:17;19788:144;;;-1:-1:-1;19836:11:0;;19788:144;;;19879:4;;-1:-1:-1;;;;;19869:14:0;;;19879:4;;19869:14;19865:67;;;-1:-1:-1;19910:10:0;;19865:67;19944:17;19964:60;20002:14;;20019:4;20002:21;;;;:::i;:::-;19964:33;19989:7;19964:20;19975:8;;19964:6;:10;;:20;;;;:::i;:60::-;20080:4;20062:24;;;;:9;:24;;;;;;19944:80;;-1:-1:-1;20062:39:0;;19944:80;20062:28;:39::i;:::-;20053:4;20035:24;;;;:9;:24;;;;;;;:66;;;;20119:42;;-1:-1:-1;;;;;20119:42:0;;;;;;;20151:9;160:25:1;;148:2;133:18;;14:177;20119:42:0;;;;;;;;20181:21;:6;20192:9;20181:10;:21::i;:::-;20174:28;19637:573;-1:-1:-1;;;;;;19637:573:0:o;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:154::-;-1:-1:-1;;;;;877:5:1;873:54;866:5;863:65;853:93;;942:1;939;932:12;957:315;1025:6;1033;1086:2;1074:9;1065:7;1061:23;1057:32;1054:52;;;1102:1;1099;1092:12;1054:52;1141:9;1128:23;1160:31;1185:5;1160:31;:::i;:::-;1210:5;1262:2;1247:18;;;;1234:32;;-1:-1:-1;;;957:315:1:o;1469:456::-;1546:6;1554;1562;1615:2;1603:9;1594:7;1590:23;1586:32;1583:52;;;1631:1;1628;1621:12;1583:52;1670:9;1657:23;1689:31;1714:5;1689:31;:::i;:::-;1739:5;-1:-1:-1;1796:2:1;1781:18;;1768:32;1809:33;1768:32;1809:33;:::i;:::-;1469:456;;1861:7;;-1:-1:-1;;;1915:2:1;1900:18;;;;1887:32;;1469:456::o;1930:316::-;2007:6;2015;2023;2076:2;2064:9;2055:7;2051:23;2047:32;2044:52;;;2092:1;2089;2082:12;2044:52;-1:-1:-1;;2115:23:1;;;2185:2;2170:18;;2157:32;;-1:-1:-1;2236:2:1;2221:18;;;2208:32;;1930:316;-1:-1:-1;1930:316:1:o;2251:180::-;2310:6;2363:2;2351:9;2342:7;2338:23;2334:32;2331:52;;;2379:1;2376;2369:12;2331:52;-1:-1:-1;2402:23:1;;2251:180;-1:-1:-1;2251:180:1:o;2625:247::-;2684:6;2737:2;2725:9;2716:7;2712:23;2708:32;2705:52;;;2753:1;2750;2743:12;2705:52;2792:9;2779:23;2811:31;2836:5;2811:31;:::i;2877:529::-;2954:6;2962;2970;3023:2;3011:9;3002:7;2998:23;2994:32;2991:52;;;3039:1;3036;3029:12;2991:52;3078:9;3065:23;3097:31;3122:5;3097:31;:::i;:::-;3147:5;-1:-1:-1;3204:2:1;3189:18;;3176:32;3217:33;3176:32;3217:33;:::i;:::-;3269:7;-1:-1:-1;3328:2:1;3313:18;;3300:32;3341:33;3300:32;3341:33;:::i;:::-;3393:7;3383:17;;;2877:529;;;;;:::o;3642:118::-;3728:5;3721:13;3714:21;3707:5;3704:32;3694:60;;3750:1;3747;3740:12;3765:750;3857:6;3865;3873;3926:2;3914:9;3905:7;3901:23;3897:32;3894:52;;;3942:1;3939;3932:12;3894:52;3982:9;3969:23;4011:18;4052:2;4044:6;4041:14;4038:34;;;4068:1;4065;4058:12;4038:34;4106:6;4095:9;4091:22;4081:32;;4151:7;4144:4;4140:2;4136:13;4132:27;4122:55;;4173:1;4170;4163:12;4122:55;4213:2;4200:16;4239:2;4231:6;4228:14;4225:34;;;4255:1;4252;4245:12;4225:34;4310:7;4303:4;4293:6;4290:1;4286:14;4282:2;4278:23;4274:34;4271:47;4268:67;;;4331:1;4328;4321:12;4268:67;4362:4;4354:13;;;;-1:-1:-1;4386:6:1;-1:-1:-1;;4427:20:1;;4414:34;4457:28;4414:34;4457:28;:::i;4520:388::-;4588:6;4596;4649:2;4637:9;4628:7;4624:23;4620:32;4617:52;;;4665:1;4662;4655:12;4617:52;4704:9;4691:23;4723:31;4748:5;4723:31;:::i;:::-;4773:5;-1:-1:-1;4830:2:1;4815:18;;4802:32;4843:33;4802:32;4843:33;:::i;:::-;4895:7;4885:17;;;4520:388;;;;;:::o;4913:248::-;4981:6;4989;5042:2;5030:9;5021:7;5017:23;5013:32;5010:52;;;5058:1;5055;5048:12;5010:52;-1:-1:-1;;5081:23:1;;;5151:2;5136:18;;;5123:32;;-1:-1:-1;4913:248:1:o;5166:309::-;5231:6;5239;5292:2;5280:9;5271:7;5267:23;5263:32;5260:52;;;5308:1;5305;5298:12;5260:52;5347:9;5334:23;5366:28;5388:5;5366:28;:::i;5729:385::-;5815:6;5823;5831;5839;5892:3;5880:9;5871:7;5867:23;5863:33;5860:53;;;5909:1;5906;5899:12;5860:53;-1:-1:-1;;5932:23:1;;;6002:2;5987:18;;5974:32;;-1:-1:-1;6053:2:1;6038:18;;6025:32;;6104:2;6089:18;6076:32;;-1:-1:-1;5729:385:1;-1:-1:-1;5729:385:1:o;6119:251::-;6189:6;6242:2;6230:9;6221:7;6217:23;6213:32;6210:52;;;6258:1;6255;6248:12;6210:52;6290:9;6284:16;6309:31;6334:5;6309:31;:::i;7119:184::-;7189:6;7242:2;7230:9;7221:7;7217:23;7213:32;7210:52;;;7258:1;7255;7248:12;7210:52;-1:-1:-1;7281:16:1;;7119:184;-1:-1:-1;7119:184:1:o;7610:245::-;7677:6;7730:2;7718:9;7709:7;7705:23;7701:32;7698:52;;;7746:1;7743;7736:12;7698:52;7778:9;7772:16;7797:28;7819:5;7797:28;:::i;7860:127::-;7921:10;7916:3;7912:20;7909:1;7902:31;7952:4;7949:1;7942:15;7976:4;7973:1;7966:15;7992:127;8053:10;8048:3;8044:20;8041:1;8034:31;8084:4;8081:1;8074:15;8108:4;8105:1;8098:15;8124:135;8163:3;-1:-1:-1;;8184:17:1;;8181:43;;;8204:18;;:::i;:::-;-1:-1:-1;8251:1:1;8240:13;;8124:135::o;8934:168::-;8974:7;9040:1;9036;9032:6;9028:14;9025:1;9022:21;9017:1;9010:9;9003:17;8999:45;8996:71;;;9047:18;;:::i;:::-;-1:-1:-1;9087:9:1;;8934:168::o;9107:217::-;9147:1;9173;9163:132;;9217:10;9212:3;9208:20;9205:1;9198:31;9252:4;9249:1;9242:15;9280:4;9277:1;9270:15;9163:132;-1:-1:-1;9309:9:1;;9107:217::o;9731:125::-;9771:4;9799:1;9796;9793:8;9790:34;;;9804:18;;:::i;:::-;-1:-1:-1;9841:9:1;;9731:125::o;10557:128::-;10597:3;10628:1;10624:6;10621:1;10618:13;10615:39;;;10634:18;;:::i;:::-;-1:-1:-1;10670:9:1;;10557:128::o;12315:1026::-;12577:4;12625:3;12614:9;12610:19;12656:6;12645:9;12638:25;12682:2;12720:6;12715:2;12704:9;12700:18;12693:34;12763:3;12758:2;12747:9;12743:18;12736:31;12787:6;12822;12816:13;12853:6;12845;12838:22;12891:3;12880:9;12876:19;12869:26;;12930:2;12922:6;12918:15;12904:29;;12951:1;12961:218;12975:6;12972:1;12969:13;12961:218;;;13040:13;;-1:-1:-1;;;;;13036:62:1;13024:75;;13154:15;;;;13119:12;;;;12997:1;12990:9;12961:218;;;-1:-1:-1;;;;;;;13235:55:1;;;;13230:2;13215:18;;13208:83;-1:-1:-1;;;13322:3:1;13307:19;13300:35;13196:3;12315:1026;-1:-1:-1;;;12315:1026:1:o;14191:306::-;14279:6;14287;14295;14348:2;14336:9;14327:7;14323:23;14319:32;14316:52;;;14364:1;14361;14354:12;14316:52;14393:9;14387:16;14377:26;;14443:2;14432:9;14428:18;14422:25;14412:35;;14487:2;14476:9;14472:18;14466:25;14456:35;;14191:306;;;;;:::o

Swarm Source

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