ETH Price: $3,370.78 (+0.62%)
Gas: 10 Gwei

Token

MusashiboBenkei (SAMURAI)
 

Overview

Max Total Supply

10,000,000,000 SAMURAI

Holders

182

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
35,930.392054105438335449 SAMURAI

Value
$0.00
0x80d9334796f9417f7202f39ef7964db30086e0d5
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:
MusashiboBenkei

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**

Buy & Sell Tax: 4%

Telegram: https://t.me/MusashiboBenkei_eth
Twitter: https://twitter.com/Musashibo_Erc20
Web: http://musashibobenkei.online/

*/
pragma solidity ^0.8.17;
//SPDX-License-Identifier: UNLICENSED

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    /** This function will be used to generate the total supply
    * while deploying the contract
    *
    * This function can never be called again after deploying contract
    */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: generation to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * generation and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be generated for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

    function WETH() external pure returns (address);

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

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

contract MusashiboBenkei is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool public providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 public tokenLiquidityThreshold = 3e7 * 10**18;
    uint256 public maxWalletLimit = 2e8 * 10**18;

    uint256 public genesis_block;
    uint256 private deadline = 1;
    uint256 private launchtax = 99;

    address public marketingWallet = 0xE698FAf1D66C23b2110507E4d22494D5F6E819E0;
    address private devWallet = 0xE4c4590fE0971c61443f341CCaF121f4379CC6b5;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 dev;   
    }

    Taxes private taxes = Taxes(4, 0, 0);
    Taxes private sellTaxes = Taxes(2, 0, 2);

    uint256 public TotalBuyFee = taxes.marketing + taxes.liquidity + taxes.dev;
    uint256 public TotalSellFee = sellTaxes.marketing + sellTaxes.liquidity + sellTaxes.dev;

    mapping(address => bool) public exemptFee;
    mapping(address => bool) public isearlybuyer;

    //Anti Dump
    mapping(address => uint256) private _lastSell;

    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor() ERC20("MusashiboBenkei", "SAMURAI") {
        _tokengeneration(msg.sender, 1e10 * 10**decimals());
        exemptFee[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[devWallet] = true;
        exemptFee[deadWallet] = true;
        exemptFee[0xD152f549545093347A162Dce210e7293f1452150] = true;
        exemptFee[0xE2fE530C047f2d85298b07D9333C05737f1435fB] = true;
        exemptFee[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true;

    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            !isearlybuyer[sender] && !isearlybuyer[recipient],
            "You can't transfer tokens"
        );

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) {
            require(
                balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (
            sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex
        ) {
            if (recipient != pair) {
                require(
                    balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < genesis_block + deadline;

        //set fee to zero if fees in contract are handled or exempted
        if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing +           
                sellTaxes.dev ;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing +
                taxes.dev ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {


	if(feeswap == 0){
            return;
        }	

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

            uint256 devAmt = unitBalance * 2 * swapTaxes.dev;
            if (devAmt > 0) {
                payable(devWallet).sendValue(devAmt);
            }

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            devWallet,
            block.timestamp
        );
    }

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function UpdateBuyTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity, _dev);
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity, _dev);
    }

   function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        require(_deadline < 15, "Block should be less than 15");
        deadline = _deadline;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = newWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

    function updateIsEarlyBuyer(address account, bool state) external onlyOwner {
        isearlybuyer[account] = state;
    }

    function bulkIsEarlyBuyer(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            isearlybuyer[accounts[i]] = state;
        }
    }

    function updateExemptFee(address _address, bool state) external onlyOwner {
        exemptFee[_address] = state;
    }

    function bulkExemptFee(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = state;
        }
    }

    function updateMaxTxLimit(uint256 maxWallet) external onlyOwner {
        require(maxWallet >= 1e7, "Cannot set max wallet amount lower than 0.1%");
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

    function rescueETH(uint256 weiAmount) external {
        payable(devWallet).transfer(weiAmount);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external {
        IERC20(tokenAdd).transfer(devWallet, amount);
    }

    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TotalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"UpdateBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsEarlyBuyer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isearlybuyer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsEarlyBuyer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b191690556a18d0bf423c03d8de0000006008556aa56fa5b99019a5c80000006009556001600b556063600c55600d80546001600160a01b031990811673e698faf1d66c23b2110507e4d22494d5f6e819e017909155600e805490911673e4c4590fe0971c61443f341ccaf121f4379cc6b517905560046080819052600060a081905260c0819052600f82905560108190556011819055610140604052600260e08190526101008290526101208190526012819055601382905560145590620000d4908290620005a2565b620000e09190620005a2565b601555601454601354601254620000f89190620005a2565b620001049190620005a2565b6016553480156200011457600080fd5b506040518060400160405280600f81526020016e4d757361736869626f42656e6b656960881b8152506040518060400160405280600781526020016653414d5552414960c81b81525081600390816200016e919062000662565b5060046200017d828262000662565b5050506200019a620001946200047460201b60201c565b62000478565b620001c433620001ad6012600a6200082b565b620001be906402540be40062000843565b620004ca565b336000908152601760209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa1580156200022f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025591906200085d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c991906200085d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000317573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033d91906200085d565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260176020526040808220805460ff199081166001908117909255600d54851684528284208054821683179055600e54909416835290822080548416821790557f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b030380548416821790557ff4d8fe8682944aad7910cbbf27da6916af3289a2a48b6811250a498b558b931c80548416821790557fbfe210d72f201fd58ee613d4cb799cbbe7fa9e16ec7b40fcf60b7548ea55f995805484168217905573dba68f07d1b7ca219f78ae8582c213d975c25caf9091527f1497029dec09f36b42b6c68749bd96c358fd5bba1f16b8f9da9c5d47858c36d7805490921617905562000888565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620005335760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115620005b857620005b86200058c565b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005e957607f821691505b6020821081036200060a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200058757600081815260208120601f850160051c81016020861015620006395750805b601f850160051c820191505b818110156200065a5782815560010162000645565b505050505050565b81516001600160401b038111156200067e576200067e620005be565b62000696816200068f8454620005d4565b8462000610565b602080601f831160018114620006ce5760008415620006b55750858301515b600019600386901b1c1916600185901b1785556200065a565b600085815260208120601f198616915b82811015620006ff57888601518255948401946001909101908401620006de565b50858210156200071e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b808511156200076f5781600019048211156200075357620007536200058c565b808516156200076157918102915b93841c939080029062000733565b509250929050565b6000826200078857506001620005b8565b816200079757506000620005b8565b8160018114620007b05760028114620007bb57620007db565b6001915050620005b8565b60ff841115620007cf57620007cf6200058c565b50506001821b620005b8565b5060208310610133831016604e8410600b841016171562000800575081810a620005b8565b6200080c83836200072e565b80600019048211156200082357620008236200058c565b029392505050565b60006200083c60ff84168362000777565b9392505050565b8082028115828204841417620005b857620005b86200058c565b6000602082840312156200087057600080fd5b81516001600160a01b03811681146200083c57600080fd5b6124f880620008986000396000f3fe6080604052600436106102555760003560e01c80638514022d11610139578063a8aa1b31116100b6578063dc89f88c1161007a578063dc89f88c146106f7578063dd62ed3e1461070d578063edaa116814610753578063f2fde38b14610773578063f887ea4014610793578063fbe6324e146107b357600080fd5b8063a8aa1b3114610647578063a9059cbb14610667578063aacebbe314610687578063c2c327d1146106a7578063c5d32bb2146106c757600080fd5b806395d89b41116100fd57806395d89b41146105a25780639d282cd6146105b75780639e252f00146105d7578063a0cc1c2a146105f7578063a457c2d71461062757600080fd5b80638514022d1461051957806385141a77146105395780638a8c523c1461054f5780638cd4426d146105645780638da5cb5b1461058457600080fd5b8063313ce567116101d25780634e736f22116101965780634e736f221461044a57806366a88d961461046a57806370a0823114610480578063715018a6146104b657806375f0a874146104cb5780637b46eee51461050357600080fd5b8063313ce567146103ad578063355496ca146103c957806339509351146103e957806342b6fa11146104095780634ada218b1461042957600080fd5b806318160ddd1161021957806318160ddd146103225780631816467f14610337578063215d92a61461035757806323b872dd14610377578063274a533c1461039757600080fd5b806306fdde0314610261578063095ea7b31461028c5780630e375a5c146102bc5780631340538f146102de5780631675d802146102fe57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107d4565b6040516102839190611f10565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004611f83565b610866565b6040519015158152602001610283565b3480156102c857600080fd5b506102dc6102d7366004611fde565b61087d565b005b3480156102ea57600080fd5b506102dc6102f93660046120b5565b61091c565b34801561030a57600080fd5b5061031460085481565b604051908152602001610283565b34801561032e57600080fd5b50600254610314565b34801561034357600080fd5b506102dc6103523660046120d9565b610964565b34801561036357600080fd5b506102dc610372366004611fde565b6109b0565b34801561038357600080fd5b506102ac6103923660046120f6565b610a41565b3480156103a357600080fd5b50610314600a5481565b3480156103b957600080fd5b5060405160128152602001610283565b3480156103d557600080fd5b506102dc6103e4366004612137565b610af2565b3480156103f557600080fd5b506102ac610404366004611f83565b610b47565b34801561041557600080fd5b506102dc610424366004612170565b610b7e565b34801561043557600080fd5b506007546102ac90600160b01b900460ff1681565b34801561045657600080fd5b506102dc610465366004612189565b610bc4565b34801561047657600080fd5b5061031460095481565b34801561048c57600080fd5b5061031461049b3660046120d9565b6001600160a01b031660009081526020819052604090205490565b3480156104c257600080fd5b506102dc610c14565b3480156104d757600080fd5b50600d546104eb906001600160a01b031681565b6040516001600160a01b039091168152602001610283565b34801561050f57600080fd5b5061031460155481565b34801561052557600080fd5b506102dc610534366004612137565b610c4a565b34801561054557600080fd5b506104eb61dead81565b34801561055b57600080fd5b506102dc610c9f565b34801561057057600080fd5b506102dc61057f366004611f83565b610d3e565b34801561059057600080fd5b506005546001600160a01b03166104eb565b3480156105ae57600080fd5b50610276610db5565b3480156105c357600080fd5b506102dc6105d2366004612189565b610dc4565b3480156105e357600080fd5b506102dc6105f2366004612170565b610e14565b34801561060357600080fd5b506102ac6106123660046120d9565b60186020526000908152604090205460ff1681565b34801561063357600080fd5b506102ac610642366004611f83565b610e52565b34801561065357600080fd5b506007546104eb906001600160a01b031681565b34801561067357600080fd5b506102ac610682366004611f83565b610eed565b34801561069357600080fd5b506102dc6106a23660046120d9565b610efa565b3480156106b357600080fd5b506102dc6106c2366004612170565b610f46565b3480156106d357600080fd5b506102ac6106e23660046120d9565b60176020526000908152604090205460ff1681565b34801561070357600080fd5b5061031460165481565b34801561071957600080fd5b506103146107283660046121b5565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561075f57600080fd5b506102dc61076e366004612170565b610ff4565b34801561077f57600080fd5b506102dc61078e3660046120d9565b6110db565b34801561079f57600080fd5b506006546104eb906001600160a01b031681565b3480156107bf57600080fd5b506007546102ac90600160a81b900460ff1681565b6060600380546107e3906121e3565b80601f016020809104026020016040519081016040528092919081815260200182805461080f906121e3565b801561085c5780601f106108315761010080835404028352916020019161085c565b820191906000526020600020905b81548152906001019060200180831161083f57829003601f168201915b5050505050905090565b6000610873338484611176565b5060015b92915050565b6005546001600160a01b031633146108b05760405162461bcd60e51b81526004016108a79061221d565b60405180910390fd5b60005b82518110156109175781601760008584815181106108d3576108d3612252565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061090f8161227e565b9150506108b3565b505050565b6005546001600160a01b031633146109465760405162461bcd60e51b81526004016108a79061221d565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461098e5760405162461bcd60e51b81526004016108a79061221d565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146109da5760405162461bcd60e51b81526004016108a79061221d565b60005b82518110156109175781601860008584815181106109fd576109fd612252565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a398161227e565b9150506109dd565b6000610a4e84848461129a565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610ad35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108a7565b610ae78533610ae28685612297565b611176565b506001949350505050565b6005546001600160a01b03163314610b1c5760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610873918590610ae29086906122aa565b6005546001600160a01b03163314610ba85760405162461bcd60e51b81526004016108a79061221d565b610bb46012600a6123a1565b610bbe90826123b0565b60085550565b6005546001600160a01b03163314610bee5760405162461bcd60e51b81526004016108a79061221d565b604080516060810182528481526020810184905201819052601292909255601355601455565b6005546001600160a01b03163314610c3e5760405162461bcd60e51b81526004016108a79061221d565b610c486000611846565b565b6005546001600160a01b03163314610c745760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610cc95760405162461bcd60e51b81526004016108a79061221d565b600754600160b01b900460ff1615610d235760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016108a7565b6007805461ffff60a81b191661010160a81b17905543600a55565b600e5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610d91573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091791906123c7565b6060600480546107e3906121e3565b6005546001600160a01b03163314610dee5760405162461bcd60e51b81526004016108a79061221d565b604080516060810182528481526020810184905201819052600f92909255601055601155565b600e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610e4e573d6000803e3d6000fd5b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610ed45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108a7565b610ee33385610ae28685612297565b5060019392505050565b600061087333848461129a565b6005546001600160a01b03163314610f245760405162461bcd60e51b81526004016108a79061221d565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f705760405162461bcd60e51b81526004016108a79061221d565b62989680811015610fd85760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e312560a01b60648201526084016108a7565b610fe46012600a6123a1565b610fee90826123b0565b60095550565b6005546001600160a01b0316331461101e5760405162461bcd60e51b81526004016108a79061221d565b600754600160b01b900460ff16156110865760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016108a7565b600f81106110d65760405162461bcd60e51b815260206004820152601c60248201527f426c6f636b2073686f756c64206265206c657373207468616e2031350000000060448201526064016108a7565b600b55565b6005546001600160a01b031633146111055760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03811661116a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a7565b61117381611846565b50565b6001600160a01b0383166111d85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a7565b6001600160a01b0382166112395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116112fc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a7565b6001600160a01b03831660009081526018602052604090205460ff1615801561133e57506001600160a01b03821660009081526018602052604090205460ff16155b61138a5760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e730000000000000060448201526064016108a7565b6001600160a01b03831660009081526017602052604090205460ff161580156113cc57506001600160a01b03821660009081526017602052604090205460ff16155b1561142057600754600160b01b900460ff166114205760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108a7565b6007546001600160a01b03848116911614801561145657506001600160a01b03821660009081526017602052604090205460ff16155b801561146c5750600754600160a01b900460ff16155b156114ec5760095481611494846001600160a01b031660009081526020819052604090205490565b61149e91906122aa565b11156114ec5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a7565b6007546001600160a01b0384811691161480159061152357506001600160a01b03821660009081526017602052604090205460ff16155b801561154857506001600160a01b03831660009081526017602052604090205460ff16155b801561155e5750600754600160a01b900460ff16155b156115f3576007546001600160a01b038381169116146115f3576009548161159b846001600160a01b031660009081526020819052604090205490565b6115a591906122aa565b11156115f35760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a7565b600080600061161c60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b03871660009081526017602052604081205460ff1615801561165e57506001600160a01b03871660009081526017602052604090205460ff16155b80156116785750600b54600a5461167591906122aa565b43105b600754909150600160a01b900460ff16806116ab57506001600160a01b03881660009081526017602052604090205460ff165b806116ce57506001600160a01b03871660009081526017602052604090205460ff165b156116dc57600092506117a6565b6007546001600160a01b0388811691161480156116f7575080155b156117475760145460125460135461170f91906122aa565b61171991906122aa565b60408051606081018252601254815260135460208201526014549181019190915290955085945091506117a6565b8061179757601154600f5460105461175f91906122aa565b61176991906122aa565b60408051606081018252600f54815260105460208201526011549181019190915290955085945091506117a6565b80156117a657600c5494508493505b60646117b285886123b0565b6117bc91906123e4565b600754909350600160a81b900460ff1680156117e657506007546001600160a01b03898116911614155b156117f5576117f58583611898565b6118098888611804868a612297565b611a11565b821561183c57841561183c576000606461182387896123b0565b61182d91906123e4565b905061183a893083611a11565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610e4e576007805460ff60a01b1916600160a01b1790558115611a00573060009081526020819052604090205460085481106119fe57600160085411156118eb57506008545b60006118f88460026123b0565b905060008184602001518461190d91906123b0565b61191791906123e4565b905060006119258285612297565b90504761193182611be9565b600061193d8247612297565b905060008760200151866119519190612297565b61195b90836123e4565b9050600088602001518261196f91906123b0565b90508015611981576119818682611d43565b88516000906119918460026123b0565b61199b91906123b0565b905080156119b957600d546119b9906001600160a01b031682611df7565b60408a01516000906119cc8560026123b0565b6119d691906123b0565b905080156119f457600e546119f4906001600160a01b031682611df7565b5050505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611a755760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a7565b6001600160a01b038216611ad75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a7565b6001600160a01b03831660009081526020819052604090205481811015611b4f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108a7565b611b598282612297565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611b8f9084906122aa565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bdb91815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c1e57611c1e612252565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9b9190612406565b81600181518110611cae57611cae612252565b6001600160a01b039283166020918202929092010152600654611cd49130911684611176565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d0d908590600090869030904290600401612423565b600060405180830381600087803b158015611d2757600080fd5b505af1158015611d3b573d6000803e3d6000fd5b505050505050565b600654611d5b9030906001600160a01b031684611176565b600654600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611dcb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611df09190612494565b5050505050565b80471015611e475760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108a7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611e94576040519150601f19603f3d011682016040523d82523d6000602084013e611e99565b606091505b50509050806109175760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108a7565b600060208083528351808285015260005b81811015611f3d57858101830151858201604001528201611f21565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461117357600080fd5b8035611f7e81611f5e565b919050565b60008060408385031215611f9657600080fd5b8235611fa181611f5e565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b801515811461117357600080fd5b8035611f7e81611fc5565b60008060408385031215611ff157600080fd5b823567ffffffffffffffff8082111561200957600080fd5b818501915085601f83011261201d57600080fd5b813560208282111561203157612031611faf565b8160051b604051601f19603f8301168101818110868211171561205657612056611faf565b60405292835281830193508481018201928984111561207457600080fd5b948201945b838610156120995761208a86611f73565b85529482019493820193612079565b96506120a89050878201611fd3565b9450505050509250929050565b6000602082840312156120c757600080fd5b81356120d281611fc5565b9392505050565b6000602082840312156120eb57600080fd5b81356120d281611f5e565b60008060006060848603121561210b57600080fd5b833561211681611f5e565b9250602084013561212681611f5e565b929592945050506040919091013590565b6000806040838503121561214a57600080fd5b823561215581611f5e565b9150602083013561216581611fc5565b809150509250929050565b60006020828403121561218257600080fd5b5035919050565b60008060006060848603121561219e57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156121c857600080fd5b82356121d381611f5e565b9150602083013561216581611f5e565b600181811c908216806121f757607f821691505b60208210810361221757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161229057612290612268565b5060010190565b8181038181111561087757610877612268565b8082018082111561087757610877612268565b600181815b808511156122f85781600019048211156122de576122de612268565b808516156122eb57918102915b93841c93908002906122c2565b509250929050565b60008261230f57506001610877565b8161231c57506000610877565b8160018114612332576002811461233c57612358565b6001915050610877565b60ff84111561234d5761234d612268565b50506001821b610877565b5060208310610133831016604e8410600b841016171561237b575081810a610877565b61238583836122bd565b806000190482111561239957612399612268565b029392505050565b60006120d260ff841683612300565b808202811582820484141761087757610877612268565b6000602082840312156123d957600080fd5b81516120d281611fc5565b60008261240157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561241857600080fd5b81516120d281611f5e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124735784516001600160a01b03168352938301939183019160010161244e565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156124a957600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a739d50cfe706ef468f10501ede523e5f4292dcdb9e80233dad1fe8938a6e2d364736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102555760003560e01c80638514022d11610139578063a8aa1b31116100b6578063dc89f88c1161007a578063dc89f88c146106f7578063dd62ed3e1461070d578063edaa116814610753578063f2fde38b14610773578063f887ea4014610793578063fbe6324e146107b357600080fd5b8063a8aa1b3114610647578063a9059cbb14610667578063aacebbe314610687578063c2c327d1146106a7578063c5d32bb2146106c757600080fd5b806395d89b41116100fd57806395d89b41146105a25780639d282cd6146105b75780639e252f00146105d7578063a0cc1c2a146105f7578063a457c2d71461062757600080fd5b80638514022d1461051957806385141a77146105395780638a8c523c1461054f5780638cd4426d146105645780638da5cb5b1461058457600080fd5b8063313ce567116101d25780634e736f22116101965780634e736f221461044a57806366a88d961461046a57806370a0823114610480578063715018a6146104b657806375f0a874146104cb5780637b46eee51461050357600080fd5b8063313ce567146103ad578063355496ca146103c957806339509351146103e957806342b6fa11146104095780634ada218b1461042957600080fd5b806318160ddd1161021957806318160ddd146103225780631816467f14610337578063215d92a61461035757806323b872dd14610377578063274a533c1461039757600080fd5b806306fdde0314610261578063095ea7b31461028c5780630e375a5c146102bc5780631340538f146102de5780631675d802146102fe57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107d4565b6040516102839190611f10565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004611f83565b610866565b6040519015158152602001610283565b3480156102c857600080fd5b506102dc6102d7366004611fde565b61087d565b005b3480156102ea57600080fd5b506102dc6102f93660046120b5565b61091c565b34801561030a57600080fd5b5061031460085481565b604051908152602001610283565b34801561032e57600080fd5b50600254610314565b34801561034357600080fd5b506102dc6103523660046120d9565b610964565b34801561036357600080fd5b506102dc610372366004611fde565b6109b0565b34801561038357600080fd5b506102ac6103923660046120f6565b610a41565b3480156103a357600080fd5b50610314600a5481565b3480156103b957600080fd5b5060405160128152602001610283565b3480156103d557600080fd5b506102dc6103e4366004612137565b610af2565b3480156103f557600080fd5b506102ac610404366004611f83565b610b47565b34801561041557600080fd5b506102dc610424366004612170565b610b7e565b34801561043557600080fd5b506007546102ac90600160b01b900460ff1681565b34801561045657600080fd5b506102dc610465366004612189565b610bc4565b34801561047657600080fd5b5061031460095481565b34801561048c57600080fd5b5061031461049b3660046120d9565b6001600160a01b031660009081526020819052604090205490565b3480156104c257600080fd5b506102dc610c14565b3480156104d757600080fd5b50600d546104eb906001600160a01b031681565b6040516001600160a01b039091168152602001610283565b34801561050f57600080fd5b5061031460155481565b34801561052557600080fd5b506102dc610534366004612137565b610c4a565b34801561054557600080fd5b506104eb61dead81565b34801561055b57600080fd5b506102dc610c9f565b34801561057057600080fd5b506102dc61057f366004611f83565b610d3e565b34801561059057600080fd5b506005546001600160a01b03166104eb565b3480156105ae57600080fd5b50610276610db5565b3480156105c357600080fd5b506102dc6105d2366004612189565b610dc4565b3480156105e357600080fd5b506102dc6105f2366004612170565b610e14565b34801561060357600080fd5b506102ac6106123660046120d9565b60186020526000908152604090205460ff1681565b34801561063357600080fd5b506102ac610642366004611f83565b610e52565b34801561065357600080fd5b506007546104eb906001600160a01b031681565b34801561067357600080fd5b506102ac610682366004611f83565b610eed565b34801561069357600080fd5b506102dc6106a23660046120d9565b610efa565b3480156106b357600080fd5b506102dc6106c2366004612170565b610f46565b3480156106d357600080fd5b506102ac6106e23660046120d9565b60176020526000908152604090205460ff1681565b34801561070357600080fd5b5061031460165481565b34801561071957600080fd5b506103146107283660046121b5565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561075f57600080fd5b506102dc61076e366004612170565b610ff4565b34801561077f57600080fd5b506102dc61078e3660046120d9565b6110db565b34801561079f57600080fd5b506006546104eb906001600160a01b031681565b3480156107bf57600080fd5b506007546102ac90600160a81b900460ff1681565b6060600380546107e3906121e3565b80601f016020809104026020016040519081016040528092919081815260200182805461080f906121e3565b801561085c5780601f106108315761010080835404028352916020019161085c565b820191906000526020600020905b81548152906001019060200180831161083f57829003601f168201915b5050505050905090565b6000610873338484611176565b5060015b92915050565b6005546001600160a01b031633146108b05760405162461bcd60e51b81526004016108a79061221d565b60405180910390fd5b60005b82518110156109175781601760008584815181106108d3576108d3612252565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061090f8161227e565b9150506108b3565b505050565b6005546001600160a01b031633146109465760405162461bcd60e51b81526004016108a79061221d565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461098e5760405162461bcd60e51b81526004016108a79061221d565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146109da5760405162461bcd60e51b81526004016108a79061221d565b60005b82518110156109175781601860008584815181106109fd576109fd612252565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a398161227e565b9150506109dd565b6000610a4e84848461129a565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610ad35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108a7565b610ae78533610ae28685612297565b611176565b506001949350505050565b6005546001600160a01b03163314610b1c5760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610873918590610ae29086906122aa565b6005546001600160a01b03163314610ba85760405162461bcd60e51b81526004016108a79061221d565b610bb46012600a6123a1565b610bbe90826123b0565b60085550565b6005546001600160a01b03163314610bee5760405162461bcd60e51b81526004016108a79061221d565b604080516060810182528481526020810184905201819052601292909255601355601455565b6005546001600160a01b03163314610c3e5760405162461bcd60e51b81526004016108a79061221d565b610c486000611846565b565b6005546001600160a01b03163314610c745760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610cc95760405162461bcd60e51b81526004016108a79061221d565b600754600160b01b900460ff1615610d235760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016108a7565b6007805461ffff60a81b191661010160a81b17905543600a55565b600e5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610d91573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091791906123c7565b6060600480546107e3906121e3565b6005546001600160a01b03163314610dee5760405162461bcd60e51b81526004016108a79061221d565b604080516060810182528481526020810184905201819052600f92909255601055601155565b600e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610e4e573d6000803e3d6000fd5b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610ed45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108a7565b610ee33385610ae28685612297565b5060019392505050565b600061087333848461129a565b6005546001600160a01b03163314610f245760405162461bcd60e51b81526004016108a79061221d565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f705760405162461bcd60e51b81526004016108a79061221d565b62989680811015610fd85760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e312560a01b60648201526084016108a7565b610fe46012600a6123a1565b610fee90826123b0565b60095550565b6005546001600160a01b0316331461101e5760405162461bcd60e51b81526004016108a79061221d565b600754600160b01b900460ff16156110865760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016108a7565b600f81106110d65760405162461bcd60e51b815260206004820152601c60248201527f426c6f636b2073686f756c64206265206c657373207468616e2031350000000060448201526064016108a7565b600b55565b6005546001600160a01b031633146111055760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03811661116a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a7565b61117381611846565b50565b6001600160a01b0383166111d85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a7565b6001600160a01b0382166112395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116112fc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a7565b6001600160a01b03831660009081526018602052604090205460ff1615801561133e57506001600160a01b03821660009081526018602052604090205460ff16155b61138a5760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e730000000000000060448201526064016108a7565b6001600160a01b03831660009081526017602052604090205460ff161580156113cc57506001600160a01b03821660009081526017602052604090205460ff16155b1561142057600754600160b01b900460ff166114205760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108a7565b6007546001600160a01b03848116911614801561145657506001600160a01b03821660009081526017602052604090205460ff16155b801561146c5750600754600160a01b900460ff16155b156114ec5760095481611494846001600160a01b031660009081526020819052604090205490565b61149e91906122aa565b11156114ec5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a7565b6007546001600160a01b0384811691161480159061152357506001600160a01b03821660009081526017602052604090205460ff16155b801561154857506001600160a01b03831660009081526017602052604090205460ff16155b801561155e5750600754600160a01b900460ff16155b156115f3576007546001600160a01b038381169116146115f3576009548161159b846001600160a01b031660009081526020819052604090205490565b6115a591906122aa565b11156115f35760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a7565b600080600061161c60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b03871660009081526017602052604081205460ff1615801561165e57506001600160a01b03871660009081526017602052604090205460ff16155b80156116785750600b54600a5461167591906122aa565b43105b600754909150600160a01b900460ff16806116ab57506001600160a01b03881660009081526017602052604090205460ff165b806116ce57506001600160a01b03871660009081526017602052604090205460ff165b156116dc57600092506117a6565b6007546001600160a01b0388811691161480156116f7575080155b156117475760145460125460135461170f91906122aa565b61171991906122aa565b60408051606081018252601254815260135460208201526014549181019190915290955085945091506117a6565b8061179757601154600f5460105461175f91906122aa565b61176991906122aa565b60408051606081018252600f54815260105460208201526011549181019190915290955085945091506117a6565b80156117a657600c5494508493505b60646117b285886123b0565b6117bc91906123e4565b600754909350600160a81b900460ff1680156117e657506007546001600160a01b03898116911614155b156117f5576117f58583611898565b6118098888611804868a612297565b611a11565b821561183c57841561183c576000606461182387896123b0565b61182d91906123e4565b905061183a893083611a11565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610e4e576007805460ff60a01b1916600160a01b1790558115611a00573060009081526020819052604090205460085481106119fe57600160085411156118eb57506008545b60006118f88460026123b0565b905060008184602001518461190d91906123b0565b61191791906123e4565b905060006119258285612297565b90504761193182611be9565b600061193d8247612297565b905060008760200151866119519190612297565b61195b90836123e4565b9050600088602001518261196f91906123b0565b90508015611981576119818682611d43565b88516000906119918460026123b0565b61199b91906123b0565b905080156119b957600d546119b9906001600160a01b031682611df7565b60408a01516000906119cc8560026123b0565b6119d691906123b0565b905080156119f457600e546119f4906001600160a01b031682611df7565b5050505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611a755760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a7565b6001600160a01b038216611ad75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a7565b6001600160a01b03831660009081526020819052604090205481811015611b4f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108a7565b611b598282612297565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611b8f9084906122aa565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bdb91815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c1e57611c1e612252565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9b9190612406565b81600181518110611cae57611cae612252565b6001600160a01b039283166020918202929092010152600654611cd49130911684611176565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d0d908590600090869030904290600401612423565b600060405180830381600087803b158015611d2757600080fd5b505af1158015611d3b573d6000803e3d6000fd5b505050505050565b600654611d5b9030906001600160a01b031684611176565b600654600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611dcb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611df09190612494565b5050505050565b80471015611e475760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108a7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611e94576040519150601f19603f3d011682016040523d82523d6000602084013e611e99565b606091505b50509050806109175760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108a7565b600060208083528351808285015260005b81811015611f3d57858101830151858201604001528201611f21565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461117357600080fd5b8035611f7e81611f5e565b919050565b60008060408385031215611f9657600080fd5b8235611fa181611f5e565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b801515811461117357600080fd5b8035611f7e81611fc5565b60008060408385031215611ff157600080fd5b823567ffffffffffffffff8082111561200957600080fd5b818501915085601f83011261201d57600080fd5b813560208282111561203157612031611faf565b8160051b604051601f19603f8301168101818110868211171561205657612056611faf565b60405292835281830193508481018201928984111561207457600080fd5b948201945b838610156120995761208a86611f73565b85529482019493820193612079565b96506120a89050878201611fd3565b9450505050509250929050565b6000602082840312156120c757600080fd5b81356120d281611fc5565b9392505050565b6000602082840312156120eb57600080fd5b81356120d281611f5e565b60008060006060848603121561210b57600080fd5b833561211681611f5e565b9250602084013561212681611f5e565b929592945050506040919091013590565b6000806040838503121561214a57600080fd5b823561215581611f5e565b9150602083013561216581611fc5565b809150509250929050565b60006020828403121561218257600080fd5b5035919050565b60008060006060848603121561219e57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156121c857600080fd5b82356121d381611f5e565b9150602083013561216581611f5e565b600181811c908216806121f757607f821691505b60208210810361221757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161229057612290612268565b5060010190565b8181038181111561087757610877612268565b8082018082111561087757610877612268565b600181815b808511156122f85781600019048211156122de576122de612268565b808516156122eb57918102915b93841c93908002906122c2565b509250929050565b60008261230f57506001610877565b8161231c57506000610877565b8160018114612332576002811461233c57612358565b6001915050610877565b60ff84111561234d5761234d612268565b50506001821b610877565b5060208310610133831016604e8410600b841016171561237b575081810a610877565b61238583836122bd565b806000190482111561239957612399612268565b029392505050565b60006120d260ff841683612300565b808202811582820484141761087757610877612268565b6000602082840312156123d957600080fd5b81516120d281611fc5565b60008261240157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561241857600080fd5b81516120d281611f5e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124735784516001600160a01b03168352938301939183019160010161244e565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156124a957600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220a739d50cfe706ef468f10501ede523e5f4292dcdb9e80233dad1fe8938a6e2d364736f6c63430008110033

Deployed Bytecode Sourcemap

12849:11796:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2540:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15137:161;;;;;;;;;;-1:-1:-1;15137:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;15137:161:0;1162:187:1;23919:202:0;;;;;;;;;;-1:-1:-1;23919:202:0;;;;;:::i;:::-;;:::i;:::-;;21979:152;;;;;;;;;;-1:-1:-1;21979:152:0;;;;;:::i;:::-;;:::i;13128:53::-;;;;;;;;;;;;;;;;;;;3330:25:1;;;3318:2;3303:18;13128:53:0;3184:177:1;3660:108:0;;;;;;;;;;-1:-1:-1;3748:12:0;;3660:108;;23333:102;;;;;;;;;;-1:-1:-1;23333:102:0;;;;;:::i;:::-;;:::i;23575:208::-;;;;;;;;;;-1:-1:-1;23575:208:0;;;;;:::i;:::-;;:::i;15306:448::-;;;;;;;;;;-1:-1:-1;15306:448:0;;;;;:::i;:::-;;:::i;13241:28::-;;;;;;;;;;;;;;;;3502:93;;;;;;;;;;-1:-1:-1;3502:93:0;;3585:2;4221:36:1;;4209:2;4194:18;3502:93:0;4079:184:1;23791:120:0;;;;;;;;;;-1:-1:-1;23791:120:0;;;;;:::i;:::-;;:::i;15762:248::-;;;;;;;;;;-1:-1:-1;15762:248:0;;;;;:::i;:::-;;:::i;22139:177::-;;;;;;;;;;-1:-1:-1;22139:177:0;;;;;:::i;:::-;;:::i;13085:34::-;;;;;;;;;;-1:-1:-1;13085:34:0;;;;-1:-1:-1;;;13085:34:0;;;;;;22525:195;;;;;;;;;;-1:-1:-1;22525:195:0;;;;;:::i;:::-;;:::i;13188:44::-;;;;;;;;;;;;;;;;3831:127;;;;;;;;;;-1:-1:-1;3831:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3932:18:0;3905:7;3932:18;;;;;;;;;;;;3831:127;11512:94;;;;;;;;;;;;;:::i;13350:75::-;;;;;;;;;;-1:-1:-1;13350:75:0;;;;-1:-1:-1;;;;;13350:75:0;;;;;;-1:-1:-1;;;;;5325:32:1;;;5307:51;;5295:2;5280:18;13350:75:0;5161:203:1;13796:74:0;;;;;;;;;;;;;;;;23443:124;;;;;;;;;;-1:-1:-1;23443:124:0;;;;;:::i;:::-;;:::i;13506:79::-;;;;;;;;;;;;13543:42;13506:79;;22727:224;;;;;;;;;;;;;:::i;24460:127::-;;;;;;;;;;-1:-1:-1;24460:127:0;;;;;:::i;:::-;;:::i;11289:87::-;;;;;;;;;;-1:-1:-1;11362:6:0;;-1:-1:-1;;;;;11362:6:0;11289:87;;2759:104;;;;;;;;;;;;;:::i;22324:193::-;;;;;;;;;;-1:-1:-1;22324:193:0;;;;;:::i;:::-;;:::i;24348:104::-;;;;;;;;;;-1:-1:-1;24348:104:0;;;;;:::i;:::-;;:::i;14021:44::-;;;;;;;;;;-1:-1:-1;14021:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16018:410;;;;;;;;;;-1:-1:-1;16018:410:0;;;;;:::i;:::-;;:::i;12969:19::-;;;;;;;;;;-1:-1:-1;12969:19:0;;;;-1:-1:-1;;;;;12969:19:0;;;16436:165;;;;;;;;;;-1:-1:-1;16436:165:0;;;;;:::i;:::-;;:::i;23210:115::-;;;;;;;;;;-1:-1:-1;23210:115:0;;;;;:::i;:::-;;:::i;24129:211::-;;;;;;;;;;-1:-1:-1;24129:211:0;;;;;:::i;:::-;;:::i;13973:41::-;;;;;;;;;;-1:-1:-1;13973:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13877:87;;;;;;;;;;;;;;;;4450:201;;;;;;;;;;-1:-1:-1;4450:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4616:18:0;;;4584:7;4616:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4450:201;22959:243;;;;;;;;;;-1:-1:-1;22959:243:0;;;;;:::i;:::-;;:::i;11614:192::-;;;;;;;;;;-1:-1:-1;11614:192:0;;;;;:::i;:::-;;:::i;12941:21::-;;;;;;;;;;-1:-1:-1;12941:21:0;;;;-1:-1:-1;;;;;12941:21:0;;;13040:38;;;;;;;;;;-1:-1:-1;13040:38:0;;;;-1:-1:-1;;;13040:38:0;;;;;;2540:100;2594:13;2627:5;2620:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2540:100;:::o;15137:161::-;15212:4;15229:39;342:10;15252:7;15261:6;15229:8;:39::i;:::-;-1:-1:-1;15286:4:0;15137:161;;;;;:::o;23919:202::-;11362:6;;-1:-1:-1;;;;;11362:6:0;342:10;11424:23;11416:68;;;;-1:-1:-1;;;11416:68:0;;;;;;;:::i;:::-;;;;;;;;;24016:9:::1;24011:103;24035:8;:15;24031:1;:19;24011:103;;;24097:5;24072:9;:22;24082:8;24091:1;24082:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24072:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24072:22:0;:30;;-1:-1:-1;;24072:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24052:3;::::1;::::0;::::1;:::i;:::-;;;;24011:103;;;;23919:202:::0;;:::o;21979:152::-;11362:6;;-1:-1:-1;;;;;11362:6:0;342:10;11424:23;11416:68;;;;-1:-1:-1;;;11416:68:0;;;;;;;:::i;:::-;22097:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;22097:26:0::1;-1:-1:-1::0;;;;22097:26:0;;::::1;::::0;;;::::1;::::0;;21979:152::o;23333:102::-;11362:6;;-1:-1:-1;;;;;11362:6:0;342:10;11424:23;11416:68;;;;-1:-1:-1;;;11416:68:0;;;;;;;:::i;:::-;23406:9:::1;:21:::0;;-1:-1:-1;;;;;;23406:21:0::1;-1:-1:-1::0;;;;;23406:21:0;;;::::1;::::0;;;::::1;::::0;;23333:102::o;23575:208::-;11362:6;;-1:-1:-1;;;;;11362:6:0;342:10;11424:23;11416:68;;;;-1:-1:-1;;;11416:68:0;;;;;;;:::i;:::-;23675:9:::1;23670:106;23694:8;:15;23690:1;:19;23670:106;;;23759:5;23731:12;:25;23744:8;23753:1;23744:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23731:25:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23731:25:0;:33;;-1:-1:-1;;23731:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23711:3;::::1;::::0;::::1;:::i;:::-;;;;23670:106;;15306:448:::0;15438:4;15455:36;15465:6;15473:9;15484:6;15455:9;:36::i;:::-;-1:-1:-1;;;;;15531:19:0;;15504:24;15531:19;;;:11;:19;;;;;;;;342:10;15531:33;;;;;;;;15583:26;;;;15575:79;;;;-1:-1:-1;;;15575:79:0;;7337:2:1;15575:79:0;;;7319:21:1;7376:2;7356:18;;;7349:30;7415:34;7395:18;;;7388:62;-1:-1:-1;;;7466:18:1;;;7459:38;7514:19;;15575:79:0;7135:404:1;15575:79:0;15665:57;15674:6;342:10;15696:25;15715:6;15696:16;:25;:::i;:::-;15665:8;:57::i;:::-;-1:-1:-1;15742:4:0;;15306:448;-1:-1:-1;;;;15306:448:0:o;23791:120::-;11362:6;;-1:-1:-1;;;;;11362:6:0;342:10;11424:23;11416:68;;;;-1:-1:-1;;;11416:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23876:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;23876:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23791:120::o;15762:248::-;342:10;15878:4;15932:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15932:34:0;;;;;;;;;;15878:4;;15900:80;;15923:7;;15932:47;;15969:10;;15932:47;:::i;22139:177::-;11362:6;;-1:-1:-1;;;;;11362:6:0;342:10;11424:23;11416:68;;;;-1:-1:-1;;;11416:68:0;;;;;;;:::i;:::-;22294:14:::1;3585:2:::0;22294::::1;:14;:::i;:::-;22281:27;::::0;:10;:27:::1;:::i;:::-;22255:23;:53:::0;-1:-1:-1;22139:177:0:o;22525:195::-;11362:6;;-1:-1:-1;;;;;11362:6:0;342:10;11424:23;11416:68;;;;-1:-1:-1;;;11416:68:0;;;;;;;:::i;:::-;22677:35:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;22665:9:::1;:47:::0;;;;;;;;22525:195::o;11512:94::-;11362:6;;-1:-1:-1;;;;;11362:6:0;342:10;11424:23;11416:68;;;;-1:-1:-1;;;11416:68:0;;;;;;;:::i;:::-;11577:21:::1;11595:1;11577:9;:21::i;:::-;11512:94::o:0;23443:124::-;11362:6;;-1:-1:-1;;;;;11362:6:0;342:10;11424:23;11416:68;;;;-1:-1:-1;;;11416:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23530:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:29;;-1:-1:-1;;23530:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23443:124::o;22727:224::-;11362:6;;-1:-1:-1;;;;;11362:6:0;342:10;11424:23;11416:68;;;;-1:-1:-1;;;11416:68:0;;;;;;;:::i;:::-;22791:14:::1;::::0;-1:-1:-1;;;22791:14:0;::::1;;;22790:15;22782:54;;;::::0;-1:-1:-1;;;22782:54:0;;9565:2:1;22782:54:0::1;::::0;::::1;9547:21:1::0;9604:2;9584:18;;;9577:30;9643:28;9623:18;;;9616:56;9689:18;;22782:54:0::1;9363:350:1::0;22782:54:0::1;22847:14;:21:::0;;-1:-1:-1;;;;22879:25:0;-1:-1:-1;;;22879:25:0;;;22931:12:::1;22915:13;:28:::0;22727:224::o;24460:127::-;24561:9;;24535:44;;-1:-1:-1;;;24535:44:0;;-1:-1:-1;;;;;24561:9:0;;;24535:44;;;9892:51:1;9959:18;;;9952:34;;;24535:25:0;;;;;;9865:18:1;;24535:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2759:104::-;2815:13;2848:7;2841:14;;;;;:::i;22324:193::-;11362:6;;-1:-1:-1;;;;;11362:6:0;342:10;11424:23;11416:68;;;;-1:-1:-1;;;11416:68:0;;;;;;;:::i;:::-;22474:35:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;22466:5:::1;:43:::0;;;;;;;;22324:193::o;24348:104::-;24414:9;;24406:38;;-1:-1:-1;;;;;24414:9:0;;;;24406:38;;;;;24434:9;;24414;24406:38;24414:9;24406:38;24434:9;24414;24406:38;;;;;;;;;;;;;;;;;;;;;24348:104;:::o;16018:410::-;342:10;16139:4;16188:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16188:34:0;;;;;;;;;;16241:35;;;;16233:85;;;;-1:-1:-1;;;16233:85:0;;10449:2:1;16233:85:0;;;10431:21:1;10488:2;10468:18;;;10461:30;10527:34;10507:18;;;10500:62;-1:-1:-1;;;10578:18:1;;;10571:35;10623:19;;16233:85:0;10247:401:1;16233:85:0;16329:67;342:10;16352:7;16361:34;16380:15;16361:16;:34;:::i;16329:67::-;-1:-1:-1;16416:4:0;;16018:410;-1:-1:-1;;;16018:410:0:o;16436:165::-;16514:4;16531:40;16541:10;16553:9;16564:6;16531:9;:40::i;23210:115::-;11362:6;;-1:-1:-1;;;;;11362:6:0;342:10;11424:23;11416:68;;;;-1:-1:-1;;;11416:68:0;;;;;;;:::i;:::-;23290:15:::1;:27:::0;;-1:-1:-1;;;;;;23290:27:0::1;-1:-1:-1::0;;;;;23290:27:0;;;::::1;::::0;;;::::1;::::0;;23210:115::o;24129:211::-;11362:6;;-1:-1:-1;;;;;11362:6:0;342:10;11424:23;11416:68;;;;-1:-1:-1;;;11416:68:0;;;;;;;:::i;:::-;24225:3:::1;24212:9;:16;;24204:73;;;::::0;-1:-1:-1;;;24204:73:0;;10855:2:1;24204:73:0::1;::::0;::::1;10837:21:1::0;10894:2;10874:18;;;10867:30;10933:34;10913:18;;;10906:62;-1:-1:-1;;;10984:18:1;;;10977:42;11036:19;;24204:73:0::1;10653:408:1::0;24204:73:0::1;24317:14;3585:2:::0;24317::::1;:14;:::i;:::-;24305:26;::::0;:9;:26:::1;:::i;:::-;24288:14;:43:::0;-1:-1:-1;24129:211:0:o;22959:243::-;11362:6;;-1:-1:-1;;;;;11362:6:0;342:10;11424:23;11416:68;;;;-1:-1:-1;;;11416:68:0;;;;;;;:::i;:::-;23041:14:::1;::::0;-1:-1:-1;;;23041:14:0;::::1;;;23040:15;23032:65;;;::::0;-1:-1:-1;;;23032:65:0;;11268:2:1;23032:65:0::1;::::0;::::1;11250:21:1::0;11307:2;11287:18;;;11280:30;11346:34;11326:18;;;11319:62;-1:-1:-1;;;11397:18:1;;;11390:35;11442:19;;23032:65:0::1;11066:401:1::0;23032:65:0::1;23128:2;23116:9;:14;23108:55;;;::::0;-1:-1:-1;;;23108:55:0;;11674:2:1;23108:55:0::1;::::0;::::1;11656:21:1::0;11713:2;11693:18;;;11686:30;11752;11732:18;;;11725:58;11800:18;;23108:55:0::1;11472:352:1::0;23108:55:0::1;23174:8;:20:::0;22959:243::o;11614:192::-;11362:6;;-1:-1:-1;;;;;11362:6:0;342:10;11424:23;11416:68;;;;-1:-1:-1;;;11416:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11703:22:0;::::1;11695:73;;;::::0;-1:-1:-1;;;11695:73:0;;12031:2:1;11695:73:0::1;::::0;::::1;12013:21:1::0;12070:2;12050:18;;;12043:30;12109:34;12089:18;;;12082:62;-1:-1:-1;;;12160:18:1;;;12153:36;12206:19;;11695:73:0::1;11829:402:1::0;11695:73:0::1;11779:19;11789:8;11779:9;:19::i;:::-;11614:192:::0;:::o;9588:380::-;-1:-1:-1;;;;;9724:19:0;;9716:68;;;;-1:-1:-1;;;9716:68:0;;12438:2:1;9716:68:0;;;12420:21:1;12477:2;12457:18;;;12450:30;12516:34;12496:18;;;12489:62;-1:-1:-1;;;12567:18:1;;;12560:34;12611:19;;9716:68:0;12236:400:1;9716:68:0;-1:-1:-1;;;;;9803:21:0;;9795:68;;;;-1:-1:-1;;;9795:68:0;;12843:2:1;9795:68:0;;;12825:21:1;12882:2;12862:18;;;12855:30;12921:34;12901:18;;;12894:62;-1:-1:-1;;;12972:18:1;;;12965:32;13014:19;;9795:68:0;12641:398:1;9795:68:0;-1:-1:-1;;;;;9876:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9928:32;;3330:25:1;;;9928:32:0;;3303:18:1;9928:32:0;;;;;;;9588:380;;;:::o;16609:2723::-;16759:1;16750:6;:10;16742:64;;;;-1:-1:-1;;;16742:64:0;;13246:2:1;16742:64:0;;;13228:21:1;13285:2;13265:18;;;13258:30;13324:34;13304:18;;;13297:62;-1:-1:-1;;;13375:18:1;;;13368:39;13424:19;;16742:64:0;13044:405:1;16742:64:0;-1:-1:-1;;;;;16840:20:0;;;;;;:12;:20;;;;;;;;16839:21;:49;;;;-1:-1:-1;;;;;;16865:23:0;;;;;;:12;:23;;;;;;;;16864:24;16839:49;16817:124;;;;-1:-1:-1;;;16817:124:0;;13656:2:1;16817:124:0;;;13638:21:1;13695:2;13675:18;;;13668:30;13734:27;13714:18;;;13707:55;13779:18;;16817:124:0;13454:349:1;16817:124:0;-1:-1:-1;;;;;16959:17:0;;;;;;:9;:17;;;;;;;;16958:18;:43;;;;-1:-1:-1;;;;;;16981:20:0;;;;;;:9;:20;;;;;;;;16980:21;16958:43;16954:122;;;17026:14;;-1:-1:-1;;;17026:14:0;;;;17018:46;;;;-1:-1:-1;;;17018:46:0;;14010:2:1;17018:46:0;;;13992:21:1;14049:2;14029:18;;;14022:30;-1:-1:-1;;;14068:18:1;;;14061:49;14127:18;;17018:46:0;13808:343:1;17018:46:0;17102:4;;-1:-1:-1;;;;;17092:14:0;;;17102:4;;17092:14;:39;;;;-1:-1:-1;;;;;;17111:20:0;;;;;;:9;:20;;;;;;;;17110:21;17092:39;:59;;;;-1:-1:-1;17136:15:0;;-1:-1:-1;;;17136:15:0;;;;17135:16;17092:59;17088:233;;;17227:14;;17217:6;17194:20;17204:9;-1:-1:-1;;;;;3932:18:0;3905:7;3932:18;;;;;;;;;;;;3831:127;17194:20;:29;;;;:::i;:::-;:47;;17168:141;;;;-1:-1:-1;;;17168:141:0;;14358:2:1;17168:141:0;;;14340:21:1;;;14377:18;;;14370:30;14436:34;14416:18;;;14409:62;14488:18;;17168:141:0;14156:356:1;17168:141:0;17361:4;;-1:-1:-1;;;;;17351:14:0;;;17361:4;;17351:14;;;;:39;;-1:-1:-1;;;;;;17370:20:0;;;;;;:9;:20;;;;;;;;17369:21;17351:39;:61;;;;-1:-1:-1;;;;;;17395:17:0;;;;;;:9;:17;;;;;;;;17394:18;17351:61;:81;;;;-1:-1:-1;17417:15:0;;-1:-1:-1;;;17417:15:0;;;;17416:16;17351:81;17333:348;;;17476:4;;-1:-1:-1;;;;;17463:17:0;;;17476:4;;17463:17;17459:211;;17564:14;;17554:6;17531:20;17541:9;-1:-1:-1;;;;;3932:18:0;3905:7;3932:18;;;;;;;;;;;;3831:127;17531:20;:29;;;;:::i;:::-;:47;;17501:153;;;;-1:-1:-1;;;17501:153:0;;14358:2:1;17501:153:0;;;14340:21:1;;;14377:18;;;14370:30;14436:34;14416:18;;;14409:62;14488:18;;17501:153:0;14156:356:1;17501:153:0;17693:15;17719:14;17744:11;17766:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;17766:25:0;-1:-1:-1;;;;;17825:17:0;;17804;17825;;;:9;:17;;;;;;;;17824:18;:56;;;;-1:-1:-1;;;;;;17860:20:0;;;;;;:9;:20;;;;;;;;17859:21;17824:56;:112;;;;;17928:8;;17912:13;;:24;;;;:::i;:::-;17897:12;:39;17824:112;18024:15;;17804:132;;-1:-1:-1;;;;18024:15:0;;;;;:36;;-1:-1:-1;;;;;;18043:17:0;;;;;;:9;:17;;;;;;;;18024:36;:60;;;-1:-1:-1;;;;;;18064:20:0;;;;;;:9;:20;;;;;;;;18024:60;18020:728;;;18105:1;18099:7;;18020:728;;;18170:4;;-1:-1:-1;;;;;18157:17:0;;;18170:4;;18157:17;:34;;;;;18179:12;18178:13;18157:34;18153:595;;;18324:13;;:9;18274:19;18235;;:58;;18274:19;18235:58;:::i;:::-;:102;;;;:::i;:::-;18384:24;;;;;;;;18399:9;18384:24;;;;;;;;;;;;;;;;;;18208:129;;-1:-1:-1;18208:129:0;;-1:-1:-1;18384:24:0;-1:-1:-1;18153:595:0;;;18431:12;18426:322;;18557:9;;:5;18522:15;18487;;:50;;18522:15;18487:50;:::i;:::-;:79;;;;:::i;:::-;18613:20;;;;;;;;18628:5;18613:20;;;;;;;;;;;;;;;;;;18460:106;;-1:-1:-1;18460:106:0;;-1:-1:-1;18613:20:0;-1:-1:-1;18426:322:0;;;18655:12;18651:97;;;18694:9;;;-1:-1:-1;18694:9:0;;-1:-1:-1;18651:97:0;18786:3;18767:15;18776:6;18767;:15;:::i;:::-;18766:23;;;;:::i;:::-;18903:18;;18760:29;;-1:-1:-1;;;;18903:18:0;;;;:36;;;;-1:-1:-1;18935:4:0;;-1:-1:-1;;;;;18925:14:0;;;18935:4;;18925:14;;18903:36;18899:76;;;18941:34;18953:7;18962:12;18941:11;:34::i;:::-;19017:48;19033:6;19041:9;19052:12;19061:3;19052:6;:12;:::i;:::-;19017:15;:48::i;:::-;19080:7;;19076:249;;19152:11;;19148:164;;19184:17;19225:3;19205:16;19214:7;19205:6;:16;:::i;:::-;19204:24;;;;:::i;:::-;19184:44;;19247:49;19263:6;19279:4;19286:9;19247:15;:49::i;:::-;19165:147;19148:164;16731:2601;;;;;16609:2723;;;:::o;11814:173::-;11889:6;;;-1:-1:-1;;;;;11906:17:0;;;-1:-1:-1;;;;;;11906:17:0;;;;;;;11939:40;;11889:6;;;11906:17;11889:6;;11939:40;;11870:16;;11939:40;11859:128;11814:173;:::o;19340:1590::-;14182:15;;-1:-1:-1;;;14182:15:0;;;;14177:125;;14214:15;:22;;-1:-1:-1;;;;14214:22:0;-1:-1:-1;;;14214:22:0;;;19428:49;;19459:7:::1;19428:49;19534:4;19490:23;3932:18:::0;;;;;;;;;;;19574:23:::1;::::0;19555:42;::::1;19551:1372;;19644:1;19618:23;;:27;19614:109;;;-1:-1:-1::0;19684:23:0::1;::::0;19614:109:::1;19794:19;19816:11;:7:::0;19826:1:::1;19816:11;:::i;:::-;19794:33;;19842:32;19936:11;19896:9;:19;;;19878:15;:37;;;;:::i;:::-;19877:70;;;;:::i;:::-;19842:105:::0;-1:-1:-1;19962:14:0::1;19979:42;19842:105:::0;19979:15;:42:::1;:::i;:::-;19962:59:::0;-1:-1:-1;20063:21:0::1;20101:24;19962:59:::0;20101:16:::1;:24::i;:::-;20142:20;20165:38;20189:14:::0;20165:21:::1;:38;:::i;:::-;20142:61;;20218:19;20270:9;:19;;;20256:11;:33;;;;:::i;:::-;20240:50;::::0;:12;:50:::1;:::i;:::-;20218:72;;20305:29;20351:9;:19;;;20337:11;:33;;;;:::i;:::-;20305:65:::0;-1:-1:-1;20391:25:0;;20387:161:::1;;20471:61;20484:24;20510:21;20471:12;:61::i;:::-;20605:19:::0;;20564:20:::1;::::0;20587:15:::1;:11:::0;20601:1:::1;20587:15;:::i;:::-;:37;;;;:::i;:::-;20564:60:::0;-1:-1:-1;20643:16:0;;20639:105:::1;;20688:15;::::0;20680:48:::1;::::0;-1:-1:-1;;;;;20688:15:0::1;20715:12:::0;20680:34:::1;:48::i;:::-;20795:13;::::0;::::1;::::0;20760:14:::1;::::0;20777:15:::1;:11:::0;20791:1:::1;20777:15;:::i;:::-;:31;;;;:::i;:::-;20760:48:::0;-1:-1:-1;20827:10:0;;20823:87:::1;;20866:9;::::0;20858:36:::1;::::0;-1:-1:-1;;;;;20866:9:0::1;20887:6:::0;20858:28:::1;:36::i;:::-;19599:1324;;;;;;;;;19551:1372;19420:1510;14251:1;14267:15:::0;:23;;-1:-1:-1;;;;14267:23:0;;;19340:1590;;:::o;7963:638::-;-1:-1:-1;;;;;8103:20:0;;8095:70;;;;-1:-1:-1;;;8095:70:0;;14941:2:1;8095:70:0;;;14923:21:1;14980:2;14960:18;;;14953:30;15019:34;14999:18;;;14992:62;-1:-1:-1;;;15070:18:1;;;15063:35;15115:19;;8095:70:0;14739:401:1;8095:70:0;-1:-1:-1;;;;;8184:23:0;;8176:71;;;;-1:-1:-1;;;8176:71:0;;15347:2:1;8176:71:0;;;15329:21:1;15386:2;15366:18;;;15359:30;15425:34;15405:18;;;15398:62;-1:-1:-1;;;15476:18:1;;;15469:33;15519:19;;8176:71:0;15145:399:1;8176:71:0;-1:-1:-1;;;;;8344:17:0;;8320:21;8344:17;;;;;;;;;;;8380:23;;;;8372:74;;;;-1:-1:-1;;;8372:74:0;;15751:2:1;8372:74:0;;;15733:21:1;15790:2;15770:18;;;15763:30;15829:34;15809:18;;;15802:62;-1:-1:-1;;;15880:18:1;;;15873:36;15926:19;;8372:74:0;15549:402:1;8372:74:0;8477:22;8493:6;8477:13;:22;:::i;:::-;-1:-1:-1;;;;;8457:17:0;;;:9;:17;;;;;;;;;;;:42;;;;8510:20;;;;;;;;:30;;8534:6;;8457:9;8510:30;;8534:6;;8510:30;:::i;:::-;;;;;;;;8575:9;-1:-1:-1;;;;;8558:35:0;8567:6;-1:-1:-1;;;;;8558:35:0;;8586:6;8558:35;;;;3330:25:1;;3318:2;3303:18;;3184:177;8558:35:0;;;;;;;;8084:517;7963:638;;;:::o;20938:526::-;21080:16;;;21094:1;21080:16;;;;;;;;21056:21;;21080:16;;;;;;;;;;-1:-1:-1;21080:16:0;21056:40;;21125:4;21107;21112:1;21107:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21107:23:0;;;:7;;;;;;;;;;:23;;;;21151:6;;:13;;;-1:-1:-1;;;21151:13:0;;;;:6;;;;;:11;;:13;;;;;21107:7;;21151:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21141:4;21146:1;21141:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21141:23:0;;;:7;;;;;;;;;:23;21209:6;;21177:53;;21194:4;;21209:6;21218:11;21177:8;:53::i;:::-;21269:6;;:187;;-1:-1:-1;;;21269:187:0;;-1:-1:-1;;;;;21269:6:0;;;;:57;;:187;;21341:11;;21269:6;;21383:4;;21410;;21430:15;;21269:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20993:471;20938:526;:::o;21472:499::-;21652:6;;21620:53;;21637:4;;-1:-1:-1;;;;;21652:6:0;21661:11;21620:8;:53::i;:::-;21716:6;;21913:9;;21716:247;;-1:-1:-1;;;21716:247:0;;21781:4;21716:247;;;17538:34:1;17588:18;;;17581:34;;;21716:6:0;17631:18:1;;;17624:34;;;17674:18;;;17667:34;-1:-1:-1;;;;;21913:9:0;;;17717:19:1;;;17710:44;21937:15:0;17770:19:1;;;17763:35;21716:6:0;;;:22;;21747:9;;17472:19:1;;21716:247:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21472:499;;:::o;10732:319::-;10847:6;10822:21;:31;;10814:73;;;;-1:-1:-1;;;10814:73:0;;18322:2:1;10814:73:0;;;18304:21:1;18361:2;18341:18;;;18334:30;18400:31;18380:18;;;18373:59;18449:18;;10814:73:0;18120:353:1;10814:73:0;10901:12;10919:9;-1:-1:-1;;;;;10919:14:0;10942:6;10919:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10900:54;;;10973:7;10965:78;;;;-1:-1:-1;;;10965:78:0;;18890:2:1;10965:78:0;;;18872:21:1;18929:2;18909:18;;;18902:30;18968:34;18948:18;;;18941:62;19039:28;19019:18;;;19012:56;19085:19;;10965:78:0;18688:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:127::-;1415:10;1410:3;1406:20;1403:1;1396:31;1446:4;1443:1;1436:15;1470:4;1467:1;1460:15;1486:118;1572:5;1565:13;1558:21;1551:5;1548:32;1538:60;;1594:1;1591;1584:12;1609:128;1674:20;;1703:28;1674:20;1703:28;:::i;1742:1191::-;1832:6;1840;1893:2;1881:9;1872:7;1868:23;1864:32;1861:52;;;1909:1;1906;1899:12;1861:52;1949:9;1936:23;1978:18;2019:2;2011:6;2008:14;2005:34;;;2035:1;2032;2025:12;2005:34;2073:6;2062:9;2058:22;2048:32;;2118:7;2111:4;2107:2;2103:13;2099:27;2089:55;;2140:1;2137;2130:12;2089:55;2176:2;2163:16;2198:4;2221:2;2217;2214:10;2211:36;;;2227:18;;:::i;:::-;2273:2;2270:1;2266:10;2305:2;2299:9;2368:2;2364:7;2359:2;2355;2351:11;2347:25;2339:6;2335:38;2423:6;2411:10;2408:22;2403:2;2391:10;2388:18;2385:46;2382:72;;;2434:18;;:::i;:::-;2470:2;2463:22;2520:18;;;2554:15;;;;-1:-1:-1;2596:11:1;;;2592:20;;;2624:19;;;2621:39;;;2656:1;2653;2646:12;2621:39;2680:11;;;;2700:148;2716:6;2711:3;2708:15;2700:148;;;2782:23;2801:3;2782:23;:::i;:::-;2770:36;;2733:12;;;;2826;;;;2700:148;;;2867:6;-1:-1:-1;2892:35:1;;-1:-1:-1;2908:18:1;;;2892:35;:::i;:::-;2882:45;;;;;;1742:1191;;;;;:::o;2938:241::-;2994:6;3047:2;3035:9;3026:7;3022:23;3018:32;3015:52;;;3063:1;3060;3053:12;3015:52;3102:9;3089:23;3121:28;3143:5;3121:28;:::i;:::-;3168:5;2938:241;-1:-1:-1;;;2938:241:1:o;3366:247::-;3425:6;3478:2;3466:9;3457:7;3453:23;3449:32;3446:52;;;3494:1;3491;3484:12;3446:52;3533:9;3520:23;3552:31;3577:5;3552:31;:::i;3618:456::-;3695:6;3703;3711;3764:2;3752:9;3743:7;3739:23;3735:32;3732:52;;;3780:1;3777;3770:12;3732:52;3819:9;3806:23;3838:31;3863:5;3838:31;:::i;:::-;3888:5;-1:-1:-1;3945:2:1;3930:18;;3917:32;3958:33;3917:32;3958:33;:::i;:::-;3618:456;;4010:7;;-1:-1:-1;;;4064:2:1;4049:18;;;;4036:32;;3618:456::o;4268:382::-;4333:6;4341;4394:2;4382:9;4373:7;4369:23;4365:32;4362:52;;;4410:1;4407;4400:12;4362:52;4449:9;4436:23;4468:31;4493:5;4468:31;:::i;:::-;4518:5;-1:-1:-1;4575:2:1;4560:18;;4547:32;4588:30;4547:32;4588:30;:::i;:::-;4637:7;4627:17;;;4268:382;;;;;:::o;4655:180::-;4714:6;4767:2;4755:9;4746:7;4742:23;4738:32;4735:52;;;4783:1;4780;4773:12;4735:52;-1:-1:-1;4806:23:1;;4655:180;-1:-1:-1;4655:180:1:o;4840:316::-;4917:6;4925;4933;4986:2;4974:9;4965:7;4961:23;4957:32;4954:52;;;5002:1;4999;4992:12;4954:52;-1:-1:-1;;5025:23:1;;;5095:2;5080:18;;5067:32;;-1:-1:-1;5146:2:1;5131:18;;;5118:32;;4840:316;-1:-1:-1;4840:316:1:o;5369:388::-;5437:6;5445;5498:2;5486:9;5477:7;5473:23;5469:32;5466:52;;;5514:1;5511;5504:12;5466:52;5553:9;5540:23;5572:31;5597:5;5572:31;:::i;:::-;5622:5;-1:-1:-1;5679:2:1;5664:18;;5651:32;5692:33;5651:32;5692:33;:::i;5985:380::-;6064:1;6060:12;;;;6107;;;6128:61;;6182:4;6174:6;6170:17;6160:27;;6128:61;6235:2;6227:6;6224:14;6204:18;6201:38;6198:161;;6281:10;6276:3;6272:20;6269:1;6262:31;6316:4;6313:1;6306:15;6344:4;6341:1;6334:15;6198:161;;5985:380;;;:::o;6370:356::-;6572:2;6554:21;;;6591:18;;;6584:30;6650:34;6645:2;6630:18;;6623:62;6717:2;6702:18;;6370:356::o;6731:127::-;6792:10;6787:3;6783:20;6780:1;6773:31;6823:4;6820:1;6813:15;6847:4;6844:1;6837:15;6863:127;6924:10;6919:3;6915:20;6912:1;6905:31;6955:4;6952:1;6945:15;6979:4;6976:1;6969:15;6995:135;7034:3;7055:17;;;7052:43;;7075:18;;:::i;:::-;-1:-1:-1;7122:1:1;7111:13;;6995:135::o;7544:128::-;7611:9;;;7632:11;;;7629:37;;;7646:18;;:::i;7677:125::-;7742:9;;;7763:10;;;7760:36;;;7776:18;;:::i;7807:422::-;7896:1;7939:5;7896:1;7953:270;7974:7;7964:8;7961:21;7953:270;;;8033:4;8029:1;8025:6;8021:17;8015:4;8012:27;8009:53;;;8042:18;;:::i;:::-;8092:7;8082:8;8078:22;8075:55;;;8112:16;;;;8075:55;8191:22;;;;8151:15;;;;7953:270;;;7957:3;7807:422;;;;;:::o;8234:806::-;8283:5;8313:8;8303:80;;-1:-1:-1;8354:1:1;8368:5;;8303:80;8402:4;8392:76;;-1:-1:-1;8439:1:1;8453:5;;8392:76;8484:4;8502:1;8497:59;;;;8570:1;8565:130;;;;8477:218;;8497:59;8527:1;8518:10;;8541:5;;;8565:130;8602:3;8592:8;8589:17;8586:43;;;8609:18;;:::i;:::-;-1:-1:-1;;8665:1:1;8651:16;;8680:5;;8477:218;;8779:2;8769:8;8766:16;8760:3;8754:4;8751:13;8747:36;8741:2;8731:8;8728:16;8723:2;8717:4;8714:12;8710:35;8707:77;8704:159;;;-1:-1:-1;8816:19:1;;;8848:5;;8704:159;8895:34;8920:8;8914:4;8895:34;:::i;:::-;8965:6;8961:1;8957:6;8953:19;8944:7;8941:32;8938:58;;;8976:18;;:::i;:::-;9014:20;;8234:806;-1:-1:-1;;;8234:806:1:o;9045:140::-;9103:5;9132:47;9173:4;9163:8;9159:19;9153:4;9132:47;:::i;9190:168::-;9263:9;;;9294;;9311:15;;;9305:22;;9291:37;9281:71;;9332:18;;:::i;9997:245::-;10064:6;10117:2;10105:9;10096:7;10092:23;10088:32;10085:52;;;10133:1;10130;10123:12;10085:52;10165:9;10159:16;10184:28;10206:5;10184:28;:::i;14517:217::-;14557:1;14583;14573:132;;14627:10;14622:3;14618:20;14615:1;14608:31;14662:4;14659:1;14652:15;14690:4;14687:1;14680:15;14573:132;-1:-1:-1;14719:9:1;;14517:217::o;15956:251::-;16026:6;16079:2;16067:9;16058:7;16054:23;16050:32;16047:52;;;16095:1;16092;16085:12;16047:52;16127:9;16121:16;16146:31;16171:5;16146:31;:::i;16212:980::-;16474:4;16522:3;16511:9;16507:19;16553:6;16542:9;16535:25;16579:2;16617:6;16612:2;16601:9;16597:18;16590:34;16660:3;16655:2;16644:9;16640:18;16633:31;16684:6;16719;16713:13;16750:6;16742;16735:22;16788:3;16777:9;16773:19;16766:26;;16827:2;16819:6;16815:15;16801:29;;16848:1;16858:195;16872:6;16869:1;16866:13;16858:195;;;16937:13;;-1:-1:-1;;;;;16933:39:1;16921:52;;17028:15;;;;16993:12;;;;16969:1;16887:9;16858:195;;;-1:-1:-1;;;;;;;17109:32:1;;;;17104:2;17089:18;;17082:60;-1:-1:-1;;;17173:3:1;17158:19;17151:35;17070:3;16212:980;-1:-1:-1;;;16212:980:1:o;17809:306::-;17897:6;17905;17913;17966:2;17954:9;17945:7;17941:23;17937:32;17934:52;;;17982:1;17979;17972:12;17934:52;18011:9;18005:16;17995:26;;18061:2;18050:9;18046:18;18040:25;18030:35;;18105:2;18094:9;18090:18;18084:25;18074:35;;17809:306;;;;;:::o

Swarm Source

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