ETH Price: $2,523.06 (+0.24%)

Token

Hodo Inu (HODO)
 

Overview

Max Total Supply

1,000,000 HODO

Holders

195

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
148.502878055400125116 HODO

Value
$0.00
0xbfbcf1251cf1c74dbbc5965c7ba66f1dcf7c615d
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:
HodoInu

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-29
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.13;

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

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

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

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

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

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

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

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;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default 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}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * 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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * 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) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, 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");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This 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");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

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

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), 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
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted 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 {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

contract HodoInu is ERC20, Ownable {

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;

    bool private swapping;

    address public deadWallet = 0x000000000000000000000000000000000000dEaD;
    address public marketingWallet = 0x79c2D2d773B59a9798fCBa45B33C1d78a8d1e46D;

    uint256 public swapTokensAtAmount = 200 * (10**18);

    uint256 public liquidityFee = 15;
    uint256 public marketingFee = 5;
    uint256 public buybackFee = 5;
    uint256 public totalFees = liquidityFee + marketingFee + buybackFee;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public automatedMarketMakerPairs;

    mapping (address => uint256) public lastBuy;

    uint public accumulatedBuybackETH = 0;
    uint public ethValueForBuyBurn = 15 * (10**16); // 0.15 ETH

    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor (address _newOwner) ERC20("Hodo Inu", "HODO") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
         // Create a uniswap pair for this new token
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;

        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);

        excludeFromFees(_newOwner, true);
        excludeFromFees(address(this), true);
        
        _isExcludedFromMaxWalletLimit[_newOwner] = true;
        _isExcludedFromMaxWalletLimit[address(0)] = true;
        _isExcludedFromMaxWalletLimit[address(this)] = true;
        _isExcludedFromMaxWalletLimit[deadWallet] = true;

        _isExcludedFromMaxTxLimit[_newOwner] = true;
        _isExcludedFromMaxTxLimit[address(0)] = true;
        _isExcludedFromMaxTxLimit[address(this)] = true;
        _isExcludedFromMaxTxLimit[deadWallet] = true;

        _mint(_newOwner, 1_000_000 * (10**18));
        transferOwnership(_newOwner);
    }

    receive() external payable {

  	}
      
    function updateUniswapV2Router(address newAddress) public onlyOwner {
        require(newAddress != address(uniswapV2Router), "The router already has that address");
        emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router));
        uniswapV2Router = IUniswapV2Router02(newAddress);
        address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
            .createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Pair = _uniswapV2Pair;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        require(_isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function setSwapTokensAtAmount(uint256 amount) external onlyOwner{
        require(amount > totalSupply() / 100000, "Amount must be greater than 0.001% of total supply");
        swapTokensAtAmount = amount;
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function setFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _buybackFee) external onlyOwner {
        marketingFee = _marketingFee;
        liquidityFee = _liquidityFee;
        buybackFee = _buybackFee;
        totalFees = marketingFee + liquidityFee + buybackFee;
        require(totalFees <= 25, "Total fees must be lower than 25%");
    }

    function setMarketingWallet(address _marketingWallet) external onlyOwner {
        marketingWallet = _marketingWallet;
    }

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "Owner cannot claim native tokens");
        if (token == address(0x0)) {
            payable(msg.sender).transfer(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal  override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
    
        if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if (maxWalletLimitEnabled) {
            if (_isExcludedFromMaxWalletLimit[from] == false
                && _isExcludedFromMaxWalletLimit[to] == false &&
                to != uniswapV2Pair
            ) {
                uint balance  = balanceOf(to);
                require(balance + amount <= maxWalletAmount(), "MaxWallet: Transfer amount exceeds the maxWalletAmount");
            }
        }

        if (maxTransactionLimitEnabled) {
            if (_isExcludedFromMaxTxLimit[from] == false
                && _isExcludedFromMaxTxLimit[to] == false
            ) {
                if (from == uniswapV2Pair) {
                    require(amount <= maxTransferAmountBuy(), "AntiWhale: Transfer amount exceeds the maxTransferAmount");
                }else{
                    require(amount <= maxTransferAmountSell(), "AntiWhale: Transfer amount exceeds the maxTransferAmount");
                }
            }
        }
        

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if( canSwap &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            from != owner() &&
            to != owner() &&
            totalFees != 0
        ) {
            swapping = true;

            uint256 liqTokensToAdd = contractTokenBalance * liquidityFee / 2 / totalFees;
            contractTokenBalance -= liqTokensToAdd;

            uint initBalance = address(this).balance;
            swapTokensForEth(contractTokenBalance);
            uint finalBalance = address(this).balance - (initBalance);
            uint ethFee = totalFees * 2 - liquidityFee;


            if(marketingFee > 0) {
                uint256 marketingETH = finalBalance * (2 * marketingFee) / ethFee;
                payable(marketingWallet).transfer(marketingETH);
            }

            if(liquidityFee > 0) {
                uint256 liqETH = finalBalance * liquidityFee / ethFee;
                addLiquidity(liqTokensToAdd, liqETH);
            }

            if(buybackFee > 0) {
                uint256 buybackETH = finalBalance * (2 * buybackFee) / ethFee;
                accumulatedBuybackETH += buybackETH;
                if (accumulatedBuybackETH > ethValueForBuyBurn) {
                    if(address(this).balance >= accumulatedBuybackETH) {
                        buyBackAndBurn(accumulatedBuybackETH);
                    }else{
                        buyBackAndBurn(address(this).balance);
                    }
                    accumulatedBuybackETH = 0;
                }
            }       

            swapping = false;
        }

        bool takeFee = !swapping;

        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        } 

        if(from == uniswapV2Pair) {
            takeFee = false;      
        }
        
        if(block.timestamp - lastBuy[from] > 24 hours) {
            takeFee = false;
        }

        if(takeFee) {                                       
        	uint256 fees = (amount * totalFees) / 100;
        	
        	amount = amount - fees;

            super._transfer(from, address(this), fees);
        }
        
        if(from == uniswapV2Pair) {
            lastBuy[to] = block.timestamp;
        }  

        super._transfer(from, to, amount);

    }      

    function startBuyback(uint valETH) public payable onlyOwner {
        require(msg.value >= valETH, "eth invalid");
        buyBackAndBurn(msg.value);
    }

    function setETHValueForBuyBurn(uint value) public onlyOwner {
        ethValueForBuyBurn = value;
    }

    function buyBackAndBurn(uint256 amount) internal {
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);

        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: amount }(
        0, 
        path, 
        deadWallet, 
        block.timestamp);
    }

    function swapAndLiquify(uint256 tokens) private {
       // split the contract balance into halves
        uint256 half = tokens / 2;
        uint256 otherHalf = tokens - half;

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = address(this).balance - initialBalance;

        // add liquidity to uniswap
        addLiquidity(otherHalf, newBalance);

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadWallet,
            block.timestamp
        );
    }
    //=======MaxWallet=======//
    mapping(address => bool) private _isExcludedFromMaxWalletLimit;
    bool public maxWalletLimitEnabled = true;
    uint256 private maxWalletLimitRate = 10;

    function setEnableMaxWallet(bool enable) public onlyOwner {
        require(enable != maxWalletLimitEnabled, "Max wallet limit is already that state");
        maxWalletLimitEnabled = enable;
    }

    function isExcludedFromMaxWallet(address account) public view returns(bool) {
        return _isExcludedFromMaxWalletLimit[account];
    }

    function maxWalletAmount() public view returns (uint256) {
        return totalSupply() * maxWalletLimitRate / 1000;
    }

    function setMaxWalletRate_Denominator1000(uint256 _val) public onlyOwner {
        require(_val >= 10, "Max wallet percentage cannot be lower than 1%");
        maxWalletLimitRate = _val;
    }

    function setExcludeFromMaxWallet(address account, bool exclude) public onlyOwner {
        require(_isExcludedFromMaxWalletLimit[account] != exclude, "Account is already set to that state");
        _isExcludedFromMaxWalletLimit[account] = exclude;
    }

    //=======MaxTransaction=======//
    mapping(address => bool) private _isExcludedFromMaxTxLimit;
    bool public maxTransactionLimitEnabled = true;
    uint256 private maxTransactionRateBuy = 10;
    uint256 private maxTransactionRateSell = 10;

    function setEnableMaxTransactionLimit(bool enable) public onlyOwner {
        require(enable != maxTransactionLimitEnabled, "Max transaction limit is already that state");
        maxTransactionLimitEnabled = enable;
    }

    function isExcludedFromMaxTransaction(address account) public view returns(bool) {
        return _isExcludedFromMaxTxLimit[account];
    }
    
    function maxTransferAmountBuy() public view returns (uint256) {
        return totalSupply() * maxTransactionRateBuy / 1000;
    }

    function maxTransferAmountSell() public view returns (uint256) {
        return totalSupply() * maxTransactionRateSell / 1000;
    }

    function setMaxTransferRates_Denominator1000(uint256 _maxTransferRateBuy, uint256 _maxTransferRateSell) public onlyOwner {
        require(_maxTransferRateSell >= 1 && _maxTransferRateBuy >= 1, "Max Transaction limit cannot be lower than 0.1% of total supply"); 
        maxTransactionRateBuy  = _maxTransferRateBuy;
        maxTransactionRateSell = _maxTransferRateSell;
    }

    function setExcludedFromMaxTransactionLimit(address account, bool exclude) public onlyOwner {
        require(_isExcludedFromMaxTxLimit[account] != exclude, "Account is already set to that state");
        _isExcludedFromMaxTxLimit[account] = exclude;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[],"name":"accumulatedBuybackETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","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":"ethValueForBuyBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setETHValueForBuyBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludedFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransferRateBuy","type":"uint256"},{"internalType":"uint256","name":"_maxTransferRateSell","type":"uint256"}],"name":"setMaxTransferRates_Denominator1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_val","type":"uint256"}],"name":"setMaxWalletRate_Denominator1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"valETH","type":"uint256"}],"name":"startBuyback","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600880546001600160a01b031990811661dead17909155600980549091167379c2d2d773b59a9798fcba45b33c1d78a8d1e46d179055680ad78ebc5ac6200000600a55600f600b8190556005600c819055600d819055906200006890829062000900565b62000074919062000900565b600e556000601255670214e8348c4f000060135560158054600160ff199182168117909255600a60168190556018805490921690921790556019819055601a55348015620000c157600080fd5b50604051620034c4380380620034c4833981016040819052620000e49162000927565b6040805180820182526008815267486f646f20496e7560c01b602080830191825283518085019094526004845263484f444f60e01b90840152815191929162000130916003916200085a565b508051620001469060049060208401906200085a565b50505060006200015b6200045560201b60201c565b600580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620034a4833981519152908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000218919062000927565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000266573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028c919062000927565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000300919062000927565b600680546001600160a01b038086166001600160a01b031992831617909255600780549284169290911691909117905590506200033f81600162000459565b6200034c83600162000549565b6200035930600162000549565b6001600160a01b0383811660008181526014602090815260408083208054600160ff1991821681179092557f4f26c3876aa9f4b92579780beea1161a61f87ebf1ec6ee865b299e447ecba99c805482168317905530808652838620805483168417905560088054891687528487208054841685179055968652601790945282852080548216831790557fd840e16649f6b9a295d95876f4633d3a6b10b55e8162971cf78afd886d5ec89b80548216831790559284528184208054841682179055935490941682529290208054909216179055620004418369d3c21bcecceda100000062000678565b6200044c836200075d565b50505062000995565b3390565b6001600160a01b03821660009081526010602052604090205481151560ff909116151503620004f55760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c7565000000000000000060648201526084015b60405180910390fd5b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005945760405162461bcd60e51b81526020600482018190526024820152600080516020620034848339815191526044820152606401620004ec565b6001600160a01b0382166000908152600f602052604090205481151560ff909116151503620006195760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b6064820152608401620004ec565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006d05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004ec565b8060026000828254620006e4919062000900565b90915550506001600160a01b038216600090815260208190526040812080548392906200071390849062000900565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620007a85760405162461bcd60e51b81526020600482018190526024820152600080516020620034848339815191526044820152606401620004ec565b6001600160a01b0381166200080f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620004ec565b6005546040516001600160a01b03808416921690600080516020620034a483398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b828054620008689062000959565b90600052602060002090601f0160209004810192826200088c5760008555620008d7565b82601f10620008a757805160ff1916838001178555620008d7565b82800160010185558215620008d7579182015b82811115620008d7578251825591602001919060010190620008ba565b50620008e5929150620008e9565b5090565b5b80821115620008e55760008155600101620008ea565b600082198211156200092257634e487b7160e01b600052601160045260246000fd5b500190565b6000602082840312156200093a57600080fd5b81516001600160a01b03811681146200095257600080fd5b9392505050565b600181811c908216806200096e57607f821691505b6020821081036200098f57634e487b7160e01b600052602260045260246000fd5b50919050565b612adf80620009a56000396000f3fe6080604052600436106102b25760003560e01c8063715018a611610175578063afa4f3b2116100dc578063c5bb51bf11610095578063e2f456051161006f578063e2f456051461089c578063e700b140146108b2578063f2fde38b146108c5578063f9d0831a146108e557600080fd5b8063c5bb51bf14610816578063cec10c1114610836578063dd62ed3e1461085657600080fd5b8063afa4f3b214610739578063b083296f14610759578063b62496f514610779578063bc90aa09146107a9578063c0246668146107c9578063c1adf7bc146107e957600080fd5b806395d89b411161012e57806395d89b411461069957806398118cb4146106ae5780639a7a23d6146106c4578063a457c2d7146106e4578063a9059cbb14610704578063aa4bde281461072457600080fd5b8063715018a6146105e657806375f0a874146105fb57806385141a771461061b5780638da5cb5b1461063b578063929f136014610659578063940c0e2a1461067957600080fd5b8063395093511161021957806358093604116101d2578063580936041461050b5780635d098b381461052157806365b8dbc0146105415780636b67c4df146105615780636dd3d39f1461057757806370a08231146105b057600080fd5b8063395093511461046a5780633b2d081c1461048a5780633d161d0f146104a05780633f7d65f9146104b557806349bd5a5e146104cb57806356a6cabf146104eb57600080fd5b806318160ddd1161026b57806318160ddd146103ac57806318d9ceae146103c157806321a9d82a146103fa57806323b872dd146104145780632ba86bf214610434578063313ce5671461044e57600080fd5b806306fdde03146102be57806307958953146102e9578063095ea7b31461030c5780630ebaaa7e1461033c57806313114a9d1461035e5780631694505e1461037457600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610905565b6040516102e0919061254b565b60405180910390f35b3480156102f557600080fd5b506102fe610997565b6040519081526020016102e0565b34801561031857600080fd5b5061032c6103273660046125b5565b6109c1565b60405190151581526020016102e0565b34801561034857600080fd5b5061035c6103573660046125ef565b6109d7565b005b34801561036a57600080fd5b506102fe600e5481565b34801561038057600080fd5b50600654610394906001600160a01b031681565b6040516001600160a01b0390911681526020016102e0565b3480156103b857600080fd5b506002546102fe565b3480156103cd57600080fd5b5061032c6103dc366004612628565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561040657600080fd5b5060155461032c9060ff1681565b34801561042057600080fd5b5061032c61042f36600461264c565b610a75565b34801561044057600080fd5b5060185461032c9060ff1681565b34801561045a57600080fd5b50604051601281526020016102e0565b34801561047657600080fd5b5061032c6104853660046125b5565b610b26565b34801561049657600080fd5b506102fe600d5481565b3480156104ac57600080fd5b506102fe610b62565b3480156104c157600080fd5b506102fe60125481565b3480156104d757600080fd5b50600754610394906001600160a01b031681565b3480156104f757600080fd5b5061035c61050636600461268d565b610b73565b34801561051757600080fd5b506102fe60135481565b34801561052d57600080fd5b5061035c61053c366004612628565b610c1c565b34801561054d57600080fd5b5061035c61055c366004612628565b610c68565b34801561056d57600080fd5b506102fe600c5481565b34801561058357600080fd5b5061032c610592366004612628565b6001600160a01b031660009081526014602052604090205460ff1690565b3480156105bc57600080fd5b506102fe6105cb366004612628565b6001600160a01b031660009081526020819052604090205490565b3480156105f257600080fd5b5061035c610ed2565b34801561060757600080fd5b50600954610394906001600160a01b031681565b34801561062757600080fd5b50600854610394906001600160a01b031681565b34801561064757600080fd5b506005546001600160a01b0316610394565b34801561066557600080fd5b5061035c6106743660046125ef565b610f46565b34801561068557600080fd5b5061035c6106943660046126aa565b610fdb565b3480156106a557600080fd5b506102d3611071565b3480156106ba57600080fd5b506102fe600b5481565b3480156106d057600080fd5b5061035c6106df3660046125ef565b611080565b3480156106f057600080fd5b5061032c6106ff3660046125b5565b61114a565b34801561071057600080fd5b5061032c61071f3660046125b5565b6111e3565b34801561073057600080fd5b506102fe6111f0565b34801561074557600080fd5b5061035c6107543660046126aa565b611201565b34801561076557600080fd5b5061035c6107743660046126c3565b6112b0565b34801561078557600080fd5b5061032c610794366004612628565b60106020526000908152604090205460ff1681565b3480156107b557600080fd5b5061035c6107c43660046126aa565b611369565b3480156107d557600080fd5b5061035c6107e43660046125ef565b611398565b3480156107f557600080fd5b506102fe610804366004612628565b60116020526000908152604090205481565b34801561082257600080fd5b5061035c61083136600461268d565b6114a4565b34801561084257600080fd5b5061035c6108513660046126e5565b611548565b34801561086257600080fd5b506102fe610871366004612711565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108a857600080fd5b506102fe600a5481565b61035c6108c03660046126aa565b6115fa565b3480156108d157600080fd5b5061035c6108e0366004612628565b61166e565b3480156108f157600080fd5b5061035c610900366004612628565b611759565b6060600380546109149061273f565b80601f01602080910402602001604051908101604052809291908181526020018280546109409061273f565b801561098d5780601f106109625761010080835404028352916020019161098d565b820191906000526020600020905b81548152906001019060200180831161097057829003601f168201915b5050505050905090565b60006103e8601a546109a860025490565b6109b2919061278f565b6109bc91906127ae565b905090565b60006109ce3384846118fc565b50600192915050565b6005546001600160a01b03163314610a0a5760405162461bcd60e51b8152600401610a01906127d0565b60405180910390fd5b6001600160a01b03821660009081526017602052604090205481151560ff909116151503610a4a5760405162461bcd60e51b8152600401610a0190612805565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6001600160a01b03831660009081526001602090815260408083203384529091528120546000198114610b105782811015610b035760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a01565b610b1085338584036118fc565b610b1b858585611a20565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109ce918590610b5d908690612849565b6118fc565b60006103e86019546109a860025490565b6005546001600160a01b03163314610b9d5760405162461bcd60e51b8152600401610a01906127d0565b60185460ff16151581151503610c095760405162461bcd60e51b815260206004820152602b60248201527f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960448201526a207468617420737461746560a81b6064820152608401610a01565b6018805460ff1916911515919091179055565b6005546001600160a01b03163314610c465760405162461bcd60e51b8152600401610a01906127d0565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c925760405162461bcd60e51b8152600401610a01906127d0565b6006546001600160a01b0390811690821603610cfc5760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610a01565b6006546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190612861565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3d9190612861565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610e8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eae9190612861565b600780546001600160a01b0319166001600160a01b03929092169190911790555050565b6005546001600160a01b03163314610efc5760405162461bcd60e51b8152600401610a01906127d0565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f705760405162461bcd60e51b8152600401610a01906127d0565b6001600160a01b03821660009081526014602052604090205481151560ff909116151503610fb05760405162461bcd60e51b8152600401610a0190612805565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110055760405162461bcd60e51b8152600401610a01906127d0565b600a81101561106c5760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060448201526c6c6f776572207468616e20312560981b6064820152608401610a01565b601655565b6060600480546109149061273f565b6005546001600160a01b031633146110aa5760405162461bcd60e51b8152600401610a01906127d0565b6007546001600160a01b039081169083160361113c5760405162461bcd60e51b815260206004820152604560248201527f5468652050616e63616b655377617020706169722063616e6e6f74206265207260448201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572606482015264506169727360d81b608482015260a401610a01565b6111468282611fb0565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111cc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a01565b6111d933858584036118fc565b5060019392505050565b60006109ce338484611a20565b60006103e86016546109a860025490565b6005546001600160a01b0316331461122b5760405162461bcd60e51b8152600401610a01906127d0565b620186a061123860025490565b61124291906127ae565b81116112ab5760405162461bcd60e51b815260206004820152603260248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e30306044820152713125206f6620746f74616c20737570706c7960701b6064820152608401610a01565b600a55565b6005546001600160a01b031633146112da5760405162461bcd60e51b8152600401610a01906127d0565b600181101580156112ec575060018210155b61135e5760405162461bcd60e51b815260206004820152603f60248201527f4d6178205472616e73616374696f6e206c696d69742063616e6e6f742062652060448201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c79006064820152608401610a01565b601991909155601a55565b6005546001600160a01b031633146113935760405162461bcd60e51b8152600401610a01906127d0565b601355565b6005546001600160a01b031633146113c25760405162461bcd60e51b8152600401610a01906127d0565b6001600160a01b0382166000908152600f602052604090205481151560ff9091161515036114455760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b6064820152608401610a01565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146114ce5760405162461bcd60e51b8152600401610a01906127d0565b60155460ff161515811515036115355760405162461bcd60e51b815260206004820152602660248201527f4d61782077616c6c6574206c696d697420697320616c7265616479207468617460448201526520737461746560d01b6064820152608401610a01565b6015805460ff1916911515919091179055565b6005546001600160a01b031633146115725760405162461bcd60e51b8152600401610a01906127d0565b600c839055600b829055600d8190558061158c8385612849565b6115969190612849565b600e819055601910156115f55760405162461bcd60e51b815260206004820152602160248201527f546f74616c2066656573206d757374206265206c6f776572207468616e2032356044820152602560f81b6064820152608401610a01565b505050565b6005546001600160a01b031633146116245760405162461bcd60e51b8152600401610a01906127d0565b803410156116625760405162461bcd60e51b815260206004820152600b60248201526a195d1a081a5b9d985b1a5960aa1b6044820152606401610a01565b61166b3461209a565b50565b6005546001600160a01b031633146116985760405162461bcd60e51b8152600401610a01906127d0565b6001600160a01b0381166116fd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a01565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146117835760405162461bcd60e51b8152600401610a01906127d0565b306001600160a01b038216036117db5760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e736044820152606401610a01565b6001600160a01b0381166118155760405133904780156108fc02916000818181858888f19350505050158015611146573d6000803e3d6000fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561185e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611882919061287e565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156118d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f69190612897565b50505050565b6001600160a01b03831661195e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a01565b6001600160a01b0382166119bf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a01565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611a465760405162461bcd60e51b8152600401610a01906128b4565b6001600160a01b038216611a6c5760405162461bcd60e51b8152600401610a01906128f9565b80600003611a80576115f5838360006121f1565b60155460ff1615611b86576001600160a01b03831660009081526014602052604090205460ff16158015611acd57506001600160a01b03821660009081526014602052604090205460ff16155b8015611ae757506007546001600160a01b03838116911614155b15611b86576001600160a01b038216600090815260208190526040902054611b0d6111f0565b611b178383612849565b1115611b845760405162461bcd60e51b815260206004820152603660248201527f4d617857616c6c65743a205472616e7366657220616d6f756e74206578636565604482015275191cc81d1a19481b585e15d85b1b195d105b5bdd5b9d60521b6064820152608401610a01565b505b60185460ff1615611c41576001600160a01b03831660009081526017602052604090205460ff16158015611bd357506001600160a01b03821660009081526017602052604090205460ff16155b15611c41576007546001600160a01b0390811690841603611c1a57611bf6610b62565b811115611c155760405162461bcd60e51b8152600401610a019061293c565b611c41565b611c22610997565b811115611c415760405162461bcd60e51b8152600401610a019061293c565b30600090815260208190526040902054600a5481108015908190611c6f5750600754600160a01b900460ff16155b8015611c9457506001600160a01b03851660009081526010602052604090205460ff16155b8015611cae57506005546001600160a01b03868116911614155b8015611cc857506005546001600160a01b03858116911614155b8015611cd55750600e5415155b15611e8b576007805460ff60a01b1916600160a01b179055600e54600b5460009190600290611d04908661278f565b611d0e91906127ae565b611d1891906127ae565b9050611d248184612999565b925047611d3084612345565b6000611d3c8247612999565b90506000600b54600e546002611d52919061278f565b611d5c9190612999565b600c5490915015611dcb57600081600c546002611d79919061278f565b611d83908561278f565b611d8d91906127ae565b6009546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611dc8573d6000803e3d6000fd5b50505b600b5415611dfc57600081600b5484611de4919061278f565b611dee91906127ae565b9050611dfa8582612497565b505b600d5415611e7957600081600d546002611e16919061278f565b611e20908561278f565b611e2a91906127ae565b90508060126000828254611e3e9190612849565b90915550506013546012541115611e77576012544710611e6857611e6360125461209a565b611e71565b611e714761209a565b60006012555b505b50506007805460ff60a01b1916905550505b6007546001600160a01b0386166000908152600f602052604090205460ff600160a01b909204821615911680611ed957506001600160a01b0385166000908152600f602052604090205460ff165b15611ee2575060005b6007546001600160a01b0390811690871603611efc575060005b6001600160a01b0386166000908152601160205260409020546201518090611f249042612999565b1115611f2e575060005b8015611f6b5760006064600e5486611f46919061278f565b611f5091906127ae565b9050611f5c8186612999565b9450611f698730836121f1565b505b6007546001600160a01b0390811690871603611f9d576001600160a01b03851660009081526011602052604090204290555b611fa88686866121f1565b505050505050565b6001600160a01b03821660009081526010602052604090205481151560ff9091161515036120465760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610a01565b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015612104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121289190612861565b8160008151811061213b5761213b6129b0565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061216f5761216f6129b0565b6001600160a01b03928316602091820292909201015260065460085460405163b6f9de9560e01b81529183169263b6f9de959286926121bb926000928892909116904290600401612a0a565b6000604051808303818588803b1580156121d457600080fd5b505af11580156121e8573d6000803e3d6000fd5b50505050505050565b6001600160a01b0383166122175760405162461bcd60e51b8152600401610a01906128b4565b6001600160a01b03821661223d5760405162461bcd60e51b8152600401610a01906128f9565b6001600160a01b038316600090815260208190526040902054818110156122b55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a01565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906122ec908490612849565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161233891815260200190565b60405180910390a36118f6565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061237a5761237a6129b0565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156123d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f79190612861565b8160018151811061240a5761240a6129b0565b6001600160a01b03928316602091820292909201015260065461243091309116846118fc565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612469908590600090869030904290600401612a3f565b600060405180830381600087803b15801561248357600080fd5b505af1158015611fa8573d6000803e3d6000fd5b6006546124af9030906001600160a01b0316846118fc565b60065460085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561251f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125449190612a7b565b5050505050565b600060208083528351808285015260005b818110156125785785810183015185820160400152820161255c565b8181111561258a576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461166b57600080fd5b600080604083850312156125c857600080fd5b82356125d3816125a0565b946020939093013593505050565b801515811461166b57600080fd5b6000806040838503121561260257600080fd5b823561260d816125a0565b9150602083013561261d816125e1565b809150509250929050565b60006020828403121561263a57600080fd5b8135612645816125a0565b9392505050565b60008060006060848603121561266157600080fd5b833561266c816125a0565b9250602084013561267c816125a0565b929592945050506040919091013590565b60006020828403121561269f57600080fd5b8135612645816125e1565b6000602082840312156126bc57600080fd5b5035919050565b600080604083850312156126d657600080fd5b50508035926020909101359150565b6000806000606084860312156126fa57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561272457600080fd5b823561272f816125a0565b9150602083013561261d816125a0565b600181811c9082168061275357607f821691505b60208210810361277357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156127a9576127a9612779565b500290565b6000826127cb57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526024908201527f4163636f756e7420697320616c72656164792073657420746f207468617420736040820152637461746560e01b606082015260800190565b6000821982111561285c5761285c612779565b500190565b60006020828403121561287357600080fd5b8151612645816125a0565b60006020828403121561289057600080fd5b5051919050565b6000602082840312156128a957600080fd5b8151612645816125e1565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526038908201527f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560408201527f647320746865206d61785472616e73666572416d6f756e740000000000000000606082015260800190565b6000828210156129ab576129ab612779565b500390565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156129ff5781516001600160a01b0316875295820195908201906001016129da565b509495945050505050565b848152608060208201526000612a2360808301866129c6565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a060408201526000612a5e60a08301866129c6565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612a9057600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212205f39acf0c13ae967cbe3f1463bcec257dd06243e51e529e9e6de4d9c066162f364736f6c634300080d00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e00000000000000000000000009ff32ef888ccb397bb643c73b9f9f48fe6beb186

Deployed Bytecode

0x6080604052600436106102b25760003560e01c8063715018a611610175578063afa4f3b2116100dc578063c5bb51bf11610095578063e2f456051161006f578063e2f456051461089c578063e700b140146108b2578063f2fde38b146108c5578063f9d0831a146108e557600080fd5b8063c5bb51bf14610816578063cec10c1114610836578063dd62ed3e1461085657600080fd5b8063afa4f3b214610739578063b083296f14610759578063b62496f514610779578063bc90aa09146107a9578063c0246668146107c9578063c1adf7bc146107e957600080fd5b806395d89b411161012e57806395d89b411461069957806398118cb4146106ae5780639a7a23d6146106c4578063a457c2d7146106e4578063a9059cbb14610704578063aa4bde281461072457600080fd5b8063715018a6146105e657806375f0a874146105fb57806385141a771461061b5780638da5cb5b1461063b578063929f136014610659578063940c0e2a1461067957600080fd5b8063395093511161021957806358093604116101d2578063580936041461050b5780635d098b381461052157806365b8dbc0146105415780636b67c4df146105615780636dd3d39f1461057757806370a08231146105b057600080fd5b8063395093511461046a5780633b2d081c1461048a5780633d161d0f146104a05780633f7d65f9146104b557806349bd5a5e146104cb57806356a6cabf146104eb57600080fd5b806318160ddd1161026b57806318160ddd146103ac57806318d9ceae146103c157806321a9d82a146103fa57806323b872dd146104145780632ba86bf214610434578063313ce5671461044e57600080fd5b806306fdde03146102be57806307958953146102e9578063095ea7b31461030c5780630ebaaa7e1461033c57806313114a9d1461035e5780631694505e1461037457600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610905565b6040516102e0919061254b565b60405180910390f35b3480156102f557600080fd5b506102fe610997565b6040519081526020016102e0565b34801561031857600080fd5b5061032c6103273660046125b5565b6109c1565b60405190151581526020016102e0565b34801561034857600080fd5b5061035c6103573660046125ef565b6109d7565b005b34801561036a57600080fd5b506102fe600e5481565b34801561038057600080fd5b50600654610394906001600160a01b031681565b6040516001600160a01b0390911681526020016102e0565b3480156103b857600080fd5b506002546102fe565b3480156103cd57600080fd5b5061032c6103dc366004612628565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561040657600080fd5b5060155461032c9060ff1681565b34801561042057600080fd5b5061032c61042f36600461264c565b610a75565b34801561044057600080fd5b5060185461032c9060ff1681565b34801561045a57600080fd5b50604051601281526020016102e0565b34801561047657600080fd5b5061032c6104853660046125b5565b610b26565b34801561049657600080fd5b506102fe600d5481565b3480156104ac57600080fd5b506102fe610b62565b3480156104c157600080fd5b506102fe60125481565b3480156104d757600080fd5b50600754610394906001600160a01b031681565b3480156104f757600080fd5b5061035c61050636600461268d565b610b73565b34801561051757600080fd5b506102fe60135481565b34801561052d57600080fd5b5061035c61053c366004612628565b610c1c565b34801561054d57600080fd5b5061035c61055c366004612628565b610c68565b34801561056d57600080fd5b506102fe600c5481565b34801561058357600080fd5b5061032c610592366004612628565b6001600160a01b031660009081526014602052604090205460ff1690565b3480156105bc57600080fd5b506102fe6105cb366004612628565b6001600160a01b031660009081526020819052604090205490565b3480156105f257600080fd5b5061035c610ed2565b34801561060757600080fd5b50600954610394906001600160a01b031681565b34801561062757600080fd5b50600854610394906001600160a01b031681565b34801561064757600080fd5b506005546001600160a01b0316610394565b34801561066557600080fd5b5061035c6106743660046125ef565b610f46565b34801561068557600080fd5b5061035c6106943660046126aa565b610fdb565b3480156106a557600080fd5b506102d3611071565b3480156106ba57600080fd5b506102fe600b5481565b3480156106d057600080fd5b5061035c6106df3660046125ef565b611080565b3480156106f057600080fd5b5061032c6106ff3660046125b5565b61114a565b34801561071057600080fd5b5061032c61071f3660046125b5565b6111e3565b34801561073057600080fd5b506102fe6111f0565b34801561074557600080fd5b5061035c6107543660046126aa565b611201565b34801561076557600080fd5b5061035c6107743660046126c3565b6112b0565b34801561078557600080fd5b5061032c610794366004612628565b60106020526000908152604090205460ff1681565b3480156107b557600080fd5b5061035c6107c43660046126aa565b611369565b3480156107d557600080fd5b5061035c6107e43660046125ef565b611398565b3480156107f557600080fd5b506102fe610804366004612628565b60116020526000908152604090205481565b34801561082257600080fd5b5061035c61083136600461268d565b6114a4565b34801561084257600080fd5b5061035c6108513660046126e5565b611548565b34801561086257600080fd5b506102fe610871366004612711565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108a857600080fd5b506102fe600a5481565b61035c6108c03660046126aa565b6115fa565b3480156108d157600080fd5b5061035c6108e0366004612628565b61166e565b3480156108f157600080fd5b5061035c610900366004612628565b611759565b6060600380546109149061273f565b80601f01602080910402602001604051908101604052809291908181526020018280546109409061273f565b801561098d5780601f106109625761010080835404028352916020019161098d565b820191906000526020600020905b81548152906001019060200180831161097057829003601f168201915b5050505050905090565b60006103e8601a546109a860025490565b6109b2919061278f565b6109bc91906127ae565b905090565b60006109ce3384846118fc565b50600192915050565b6005546001600160a01b03163314610a0a5760405162461bcd60e51b8152600401610a01906127d0565b60405180910390fd5b6001600160a01b03821660009081526017602052604090205481151560ff909116151503610a4a5760405162461bcd60e51b8152600401610a0190612805565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6001600160a01b03831660009081526001602090815260408083203384529091528120546000198114610b105782811015610b035760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a01565b610b1085338584036118fc565b610b1b858585611a20565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109ce918590610b5d908690612849565b6118fc565b60006103e86019546109a860025490565b6005546001600160a01b03163314610b9d5760405162461bcd60e51b8152600401610a01906127d0565b60185460ff16151581151503610c095760405162461bcd60e51b815260206004820152602b60248201527f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960448201526a207468617420737461746560a81b6064820152608401610a01565b6018805460ff1916911515919091179055565b6005546001600160a01b03163314610c465760405162461bcd60e51b8152600401610a01906127d0565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c925760405162461bcd60e51b8152600401610a01906127d0565b6006546001600160a01b0390811690821603610cfc5760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610a01565b6006546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190612861565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3d9190612861565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610e8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eae9190612861565b600780546001600160a01b0319166001600160a01b03929092169190911790555050565b6005546001600160a01b03163314610efc5760405162461bcd60e51b8152600401610a01906127d0565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f705760405162461bcd60e51b8152600401610a01906127d0565b6001600160a01b03821660009081526014602052604090205481151560ff909116151503610fb05760405162461bcd60e51b8152600401610a0190612805565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110055760405162461bcd60e51b8152600401610a01906127d0565b600a81101561106c5760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060448201526c6c6f776572207468616e20312560981b6064820152608401610a01565b601655565b6060600480546109149061273f565b6005546001600160a01b031633146110aa5760405162461bcd60e51b8152600401610a01906127d0565b6007546001600160a01b039081169083160361113c5760405162461bcd60e51b815260206004820152604560248201527f5468652050616e63616b655377617020706169722063616e6e6f74206265207260448201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572606482015264506169727360d81b608482015260a401610a01565b6111468282611fb0565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111cc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a01565b6111d933858584036118fc565b5060019392505050565b60006109ce338484611a20565b60006103e86016546109a860025490565b6005546001600160a01b0316331461122b5760405162461bcd60e51b8152600401610a01906127d0565b620186a061123860025490565b61124291906127ae565b81116112ab5760405162461bcd60e51b815260206004820152603260248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e30306044820152713125206f6620746f74616c20737570706c7960701b6064820152608401610a01565b600a55565b6005546001600160a01b031633146112da5760405162461bcd60e51b8152600401610a01906127d0565b600181101580156112ec575060018210155b61135e5760405162461bcd60e51b815260206004820152603f60248201527f4d6178205472616e73616374696f6e206c696d69742063616e6e6f742062652060448201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c79006064820152608401610a01565b601991909155601a55565b6005546001600160a01b031633146113935760405162461bcd60e51b8152600401610a01906127d0565b601355565b6005546001600160a01b031633146113c25760405162461bcd60e51b8152600401610a01906127d0565b6001600160a01b0382166000908152600f602052604090205481151560ff9091161515036114455760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b6064820152608401610a01565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146114ce5760405162461bcd60e51b8152600401610a01906127d0565b60155460ff161515811515036115355760405162461bcd60e51b815260206004820152602660248201527f4d61782077616c6c6574206c696d697420697320616c7265616479207468617460448201526520737461746560d01b6064820152608401610a01565b6015805460ff1916911515919091179055565b6005546001600160a01b031633146115725760405162461bcd60e51b8152600401610a01906127d0565b600c839055600b829055600d8190558061158c8385612849565b6115969190612849565b600e819055601910156115f55760405162461bcd60e51b815260206004820152602160248201527f546f74616c2066656573206d757374206265206c6f776572207468616e2032356044820152602560f81b6064820152608401610a01565b505050565b6005546001600160a01b031633146116245760405162461bcd60e51b8152600401610a01906127d0565b803410156116625760405162461bcd60e51b815260206004820152600b60248201526a195d1a081a5b9d985b1a5960aa1b6044820152606401610a01565b61166b3461209a565b50565b6005546001600160a01b031633146116985760405162461bcd60e51b8152600401610a01906127d0565b6001600160a01b0381166116fd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a01565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146117835760405162461bcd60e51b8152600401610a01906127d0565b306001600160a01b038216036117db5760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e736044820152606401610a01565b6001600160a01b0381166118155760405133904780156108fc02916000818181858888f19350505050158015611146573d6000803e3d6000fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561185e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611882919061287e565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156118d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f69190612897565b50505050565b6001600160a01b03831661195e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a01565b6001600160a01b0382166119bf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a01565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611a465760405162461bcd60e51b8152600401610a01906128b4565b6001600160a01b038216611a6c5760405162461bcd60e51b8152600401610a01906128f9565b80600003611a80576115f5838360006121f1565b60155460ff1615611b86576001600160a01b03831660009081526014602052604090205460ff16158015611acd57506001600160a01b03821660009081526014602052604090205460ff16155b8015611ae757506007546001600160a01b03838116911614155b15611b86576001600160a01b038216600090815260208190526040902054611b0d6111f0565b611b178383612849565b1115611b845760405162461bcd60e51b815260206004820152603660248201527f4d617857616c6c65743a205472616e7366657220616d6f756e74206578636565604482015275191cc81d1a19481b585e15d85b1b195d105b5bdd5b9d60521b6064820152608401610a01565b505b60185460ff1615611c41576001600160a01b03831660009081526017602052604090205460ff16158015611bd357506001600160a01b03821660009081526017602052604090205460ff16155b15611c41576007546001600160a01b0390811690841603611c1a57611bf6610b62565b811115611c155760405162461bcd60e51b8152600401610a019061293c565b611c41565b611c22610997565b811115611c415760405162461bcd60e51b8152600401610a019061293c565b30600090815260208190526040902054600a5481108015908190611c6f5750600754600160a01b900460ff16155b8015611c9457506001600160a01b03851660009081526010602052604090205460ff16155b8015611cae57506005546001600160a01b03868116911614155b8015611cc857506005546001600160a01b03858116911614155b8015611cd55750600e5415155b15611e8b576007805460ff60a01b1916600160a01b179055600e54600b5460009190600290611d04908661278f565b611d0e91906127ae565b611d1891906127ae565b9050611d248184612999565b925047611d3084612345565b6000611d3c8247612999565b90506000600b54600e546002611d52919061278f565b611d5c9190612999565b600c5490915015611dcb57600081600c546002611d79919061278f565b611d83908561278f565b611d8d91906127ae565b6009546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611dc8573d6000803e3d6000fd5b50505b600b5415611dfc57600081600b5484611de4919061278f565b611dee91906127ae565b9050611dfa8582612497565b505b600d5415611e7957600081600d546002611e16919061278f565b611e20908561278f565b611e2a91906127ae565b90508060126000828254611e3e9190612849565b90915550506013546012541115611e77576012544710611e6857611e6360125461209a565b611e71565b611e714761209a565b60006012555b505b50506007805460ff60a01b1916905550505b6007546001600160a01b0386166000908152600f602052604090205460ff600160a01b909204821615911680611ed957506001600160a01b0385166000908152600f602052604090205460ff165b15611ee2575060005b6007546001600160a01b0390811690871603611efc575060005b6001600160a01b0386166000908152601160205260409020546201518090611f249042612999565b1115611f2e575060005b8015611f6b5760006064600e5486611f46919061278f565b611f5091906127ae565b9050611f5c8186612999565b9450611f698730836121f1565b505b6007546001600160a01b0390811690871603611f9d576001600160a01b03851660009081526011602052604090204290555b611fa88686866121f1565b505050505050565b6001600160a01b03821660009081526010602052604090205481151560ff9091161515036120465760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610a01565b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015612104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121289190612861565b8160008151811061213b5761213b6129b0565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061216f5761216f6129b0565b6001600160a01b03928316602091820292909201015260065460085460405163b6f9de9560e01b81529183169263b6f9de959286926121bb926000928892909116904290600401612a0a565b6000604051808303818588803b1580156121d457600080fd5b505af11580156121e8573d6000803e3d6000fd5b50505050505050565b6001600160a01b0383166122175760405162461bcd60e51b8152600401610a01906128b4565b6001600160a01b03821661223d5760405162461bcd60e51b8152600401610a01906128f9565b6001600160a01b038316600090815260208190526040902054818110156122b55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a01565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906122ec908490612849565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161233891815260200190565b60405180910390a36118f6565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061237a5761237a6129b0565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156123d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f79190612861565b8160018151811061240a5761240a6129b0565b6001600160a01b03928316602091820292909201015260065461243091309116846118fc565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612469908590600090869030904290600401612a3f565b600060405180830381600087803b15801561248357600080fd5b505af1158015611fa8573d6000803e3d6000fd5b6006546124af9030906001600160a01b0316846118fc565b60065460085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561251f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125449190612a7b565b5050505050565b600060208083528351808285015260005b818110156125785785810183015185820160400152820161255c565b8181111561258a576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461166b57600080fd5b600080604083850312156125c857600080fd5b82356125d3816125a0565b946020939093013593505050565b801515811461166b57600080fd5b6000806040838503121561260257600080fd5b823561260d816125a0565b9150602083013561261d816125e1565b809150509250929050565b60006020828403121561263a57600080fd5b8135612645816125a0565b9392505050565b60008060006060848603121561266157600080fd5b833561266c816125a0565b9250602084013561267c816125a0565b929592945050506040919091013590565b60006020828403121561269f57600080fd5b8135612645816125e1565b6000602082840312156126bc57600080fd5b5035919050565b600080604083850312156126d657600080fd5b50508035926020909101359150565b6000806000606084860312156126fa57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561272457600080fd5b823561272f816125a0565b9150602083013561261d816125a0565b600181811c9082168061275357607f821691505b60208210810361277357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156127a9576127a9612779565b500290565b6000826127cb57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526024908201527f4163636f756e7420697320616c72656164792073657420746f207468617420736040820152637461746560e01b606082015260800190565b6000821982111561285c5761285c612779565b500190565b60006020828403121561287357600080fd5b8151612645816125a0565b60006020828403121561289057600080fd5b5051919050565b6000602082840312156128a957600080fd5b8151612645816125e1565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526038908201527f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560408201527f647320746865206d61785472616e73666572416d6f756e740000000000000000606082015260800190565b6000828210156129ab576129ab612779565b500390565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156129ff5781516001600160a01b0316875295820195908201906001016129da565b509495945050505050565b848152608060208201526000612a2360808301866129c6565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a060408201526000612a5e60a08301866129c6565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612a9057600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212205f39acf0c13ae967cbe3f1463bcec257dd06243e51e529e9e6de4d9c066162f364736f6c634300080d0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000009ff32ef888ccb397bb643c73b9f9f48fe6beb186

-----Decoded View---------------
Arg [0] : _newOwner (address): 0x9FF32EF888ccb397bb643c73b9F9F48fE6BEB186

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009ff32ef888ccb397bb643c73b9f9f48fe6beb186


Deployed Bytecode Sourcemap

24306:14315:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6017:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37825:134;;;;;;;;;;;;;:::i;:::-;;;762:25:1;;;750:2;735:18;37825:134:0;616:177:1;8357:169:0;;;;;;;;;;-1:-1:-1;8357:169:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;8357:169:0;1254:187:1;38356:260:0;;;;;;;;;;-1:-1:-1;38356:260:0;;;;;:::i;:::-;;:::i;:::-;;24799:67;;;;;;;;;;;;;;;;24350:41;;;;;;;;;;-1:-1:-1;24350:41:0;;;;-1:-1:-1;;;;;24350:41:0;;;;;;-1:-1:-1;;;;;2147:32:1;;;2129:51;;2117:2;2102:18;24350:41:0;1956:230:1;7137:108:0;;;;;;;;;;-1:-1:-1;7225:12:0;;7137:108;;37532:141;;;;;;;;;;-1:-1:-1;37532:141:0;;;;;:::i;:::-;-1:-1:-1;;;;;37631:34:0;37607:4;37631:34;;;:25;:34;;;;;;;;;37532:141;35991:40;;;;;;;;;;-1:-1:-1;35991:40:0;;;;;;;;9119:573;;;;;;;;;;-1:-1:-1;9119:573:0;;;;;:::i;:::-;;:::i;37146:45::-;;;;;;;;;;-1:-1:-1;37146:45:0;;;;;;;;6979:93;;;;;;;;;;-1:-1:-1;6979:93:0;;7062:2;3046:36:1;;3034:2;3019:18;6979:93:0;2904:184:1;10101:215:0;;;;;;;;;;-1:-1:-1;10101:215:0;;;;;:::i;:::-;;:::i;24763:29::-;;;;;;;;;;;;;;;;37685:132;;;;;;;;;;;;;:::i;25054:37::-;;;;;;;;;;;;;;;;24398:29;;;;;;;;;;-1:-1:-1;24398:29:0;;;;-1:-1:-1;;;;;24398:29:0;;;37299:225;;;;;;;;;;-1:-1:-1;37299:225:0;;;;;:::i;:::-;;:::i;25098:46::-;;;;;;;;;;;;;;;;28753:126;;;;;;;;;;-1:-1:-1;28753:126:0;;;;;:::i;:::-;;:::i;26783:492::-;;;;;;;;;;-1:-1:-1;26783:492:0;;;;;:::i;:::-;;:::i;24725:31::-;;;;;;;;;;;;;;;;36294:140;;;;;;;;;;-1:-1:-1;36294:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;36388:38:0;36364:4;36388:38;;;:29;:38;;;;;;;;;36294:140;7308:127;;;;;;;;;;-1:-1:-1;7308:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7409:18:0;7382:7;7409:18;;;;;;;;;;;;7308:127;4683:148;;;;;;;;;;;;;:::i;24543:75::-;;;;;;;;;;-1:-1:-1;24543:75:0;;;;-1:-1:-1;;;;;24543:75:0;;;24466:70;;;;;;;;;;-1:-1:-1;24466:70:0;;;;-1:-1:-1;;;;;24466:70:0;;;4041:79;;;;;;;;;;-1:-1:-1;4106:6:0;;-1:-1:-1;;;;;4106:6:0;4041:79;;36778:257;;;;;;;;;;-1:-1:-1;36778:257:0;;;;;:::i;:::-;;:::i;36574:196::-;;;;;;;;;;-1:-1:-1;36574:196:0;;;;;:::i;:::-;;:::i;6236:104::-;;;;;;;;;;;;;:::i;24686:32::-;;;;;;;;;;;;;;;;27805:256;;;;;;;;;;-1:-1:-1;27805:256:0;;;;;:::i;:::-;;:::i;10819:413::-;;;;;;;;;;-1:-1:-1;10819:413:0;;;;;:::i;:::-;;:::i;7648:175::-;;;;;;;;;;-1:-1:-1;7648:175:0;;;;;:::i;:::-;;:::i;36442:124::-;;;;;;;;;;;;;:::i;27581:216::-;;;;;;;;;;-1:-1:-1;27581:216:0;;;;;:::i;:::-;;:::i;37967:381::-;;;;;;;;;;-1:-1:-1;37967:381:0;;;;;:::i;:::-;;:::i;24935:58::-;;;;;;;;;;-1:-1:-1;24935:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;33367:105;;;;;;;;;;-1:-1:-1;33367:105:0;;;;;:::i;:::-;;:::i;27283:290::-;;;;;;;;;;-1:-1:-1;27283:290:0;;;;;:::i;:::-;;:::i;25002:43::-;;;;;;;;;;-1:-1:-1;25002:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;36086:200;;;;;;;;;;-1:-1:-1;36086:200:0;;;;;:::i;:::-;;:::i;28386:359::-;;;;;;;;;;-1:-1:-1;28386:359:0;;;;;:::i;:::-;;:::i;7886:151::-;;;;;;;;;;-1:-1:-1;7886:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;8002:18:0;;;7975:7;8002:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7886:151;24627:50;;;;;;;;;;;;;;;;33201:158;;;;;;:::i;:::-;;:::i;4986:244::-;;;;;;;;;;-1:-1:-1;4986:244:0;;;;;:::i;:::-;;:::i;28887:441::-;;;;;;;;;;-1:-1:-1;28887:441:0;;;;;:::i;:::-;;:::i;6017:100::-;6071:13;6104:5;6097:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6017:100;:::o;37825:134::-;37879:7;37947:4;37922:22;;37906:13;7225:12;;;7137:108;37906:13;:38;;;;:::i;:::-;:45;;;;:::i;:::-;37899:52;;37825:134;:::o;8357:169::-;8440:4;8457:39;3272:10;8480:7;8489:6;8457:8;:39::i;:::-;-1:-1:-1;8514:4:0;8357:169;;;;:::o;38356:260::-;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;38467:34:0;::::1;;::::0;;;:25:::1;:34;::::0;;;;;:45;::::1;;:34;::::0;;::::1;:45;;::::0;38459:94:::1;;;;-1:-1:-1::0;;;38459:94:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;38564:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;38564:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;38356:260::o;9119:573::-;-1:-1:-1;;;;;9303:19:0;;9259:4;9303:19;;;:11;:19;;;;;;;;3272:10;9303:33;;;;;;;;-1:-1:-1;;9351:37:0;;9347:265;;9433:6;9413:16;:26;;9405:79;;;;-1:-1:-1;;;9405:79:0;;6579:2:1;9405:79:0;;;6561:21:1;6618:2;6598:18;;;6591:30;6657:34;6637:18;;;6630:62;-1:-1:-1;;;6708:18:1;;;6701:38;6756:19;;9405:79:0;6377:404:1;9405:79:0;9528:57;9537:6;3272:10;9578:6;9559:16;:25;9528:8;:57::i;:::-;9624:36;9634:6;9642:9;9653:6;9624:9;:36::i;:::-;-1:-1:-1;9680:4:0;;9119:573;-1:-1:-1;;;;9119:573:0:o;10101:215::-;3272:10;10189:4;10238:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10238:34:0;;;;;;;;;;10189:4;;10206:80;;10229:7;;10238:47;;10275:10;;10238:47;:::i;:::-;10206:8;:80::i;37685:132::-;37738:7;37805:4;37781:21;;37765:13;7225:12;;;7137:108;37299:225;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;37396:26:::1;::::0;::::1;;37386:36;;::::0;::::1;;::::0;37378:92:::1;;;::::0;-1:-1:-1;;;37378:92:0;;7121:2:1;37378:92:0::1;::::0;::::1;7103:21:1::0;7160:2;7140:18;;;7133:30;7199:34;7179:18;;;7172:62;-1:-1:-1;;;7250:18:1;;;7243:41;7301:19;;37378:92:0::1;6919:407:1::0;37378:92:0::1;37481:26;:35:::0;;-1:-1:-1;;37481:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;37299:225::o;28753:126::-;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;28837:15:::1;:34:::0;;-1:-1:-1;;;;;;28837:34:0::1;-1:-1:-1::0;;;;;28837:34:0;;;::::1;::::0;;;::::1;::::0;;28753:126::o;26783:492::-;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;26892:15:::1;::::0;-1:-1:-1;;;;;26892:15:0;;::::1;26870:38:::0;;::::1;::::0;26862:86:::1;;;::::0;-1:-1:-1;;;26862:86:0;;7533:2:1;26862:86:0::1;::::0;::::1;7515:21:1::0;7572:2;7552:18;;;7545:30;7611:34;7591:18;;;7584:62;-1:-1:-1;;;7662:18:1;;;7655:33;7705:19;;26862:86:0::1;7331:399:1::0;26862:86:0::1;27006:15;::::0;26964:59:::1;::::0;-1:-1:-1;;;;;27006:15:0;;::::1;::::0;26964:59;::::1;::::0;::::1;::::0;27006:15:::1;::::0;26964:59:::1;27034:15;:48:::0;;-1:-1:-1;;;;;;27034:48:0::1;-1:-1:-1::0;;;;;27034:48:0;::::1;::::0;;::::1;::::0;;;27136:25:::1;::::0;;-1:-1:-1;;;27136:25:0;;;;-1:-1:-1;;27034:48:0;27136:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;27034:48;27136:25:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27118:69:0::1;;27196:4;27203:15;;;;;;;;;-1:-1:-1::0;;;;;27203:15:0::1;-1:-1:-1::0;;;;;27203:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27118:108;::::0;-1:-1:-1;;;;;;27118:108:0::1;::::0;;;;;;-1:-1:-1;;;;;8221:15:1;;;27118:108:0::1;::::0;::::1;8203:34:1::0;8273:15;;8253:18;;;8246:43;8138:18;;27118:108:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27237:13;:30:::0;;-1:-1:-1;;;;;;27237:30:0::1;-1:-1:-1::0;;;;;27237:30:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;26783:492:0:o;4683:148::-;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;4774:6:::1;::::0;4753:40:::1;::::0;4790:1:::1;::::0;-1:-1:-1;;;;;4774:6:0::1;::::0;4753:40:::1;::::0;4790:1;;4753:40:::1;4804:6;:19:::0;;-1:-1:-1;;;;;;4804:19:0::1;::::0;;4683:148::o;36778:257::-;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36878:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;:49;::::1;;:38;::::0;;::::1;:49;;::::0;36870:98:::1;;;;-1:-1:-1::0;;;36870:98:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36979:38:0;;;::::1;;::::0;;;:29:::1;:38;::::0;;;;:48;;-1:-1:-1;;36979:48:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36778:257::o;36574:196::-;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;36674:2:::1;36666:4;:10;;36658:68;;;::::0;-1:-1:-1;;;36658:68:0;;8502:2:1;36658:68:0::1;::::0;::::1;8484:21:1::0;8541:2;8521:18;;;8514:30;8580:34;8560:18;;;8553:62;-1:-1:-1;;;8631:18:1;;;8624:43;8684:19;;36658:68:0::1;8300:409:1::0;36658:68:0::1;36737:18;:25:::0;36574:196::o;6236:104::-;6292:13;6325:7;6318:14;;;;;:::i;27805:256::-;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;27912:13:::1;::::0;-1:-1:-1;;;;;27912:13:0;;::::1;27904:21:::0;;::::1;::::0;27896:103:::1;;;::::0;-1:-1:-1;;;27896:103:0;;8916:2:1;27896:103:0::1;::::0;::::1;8898:21:1::0;8955:2;8935:18;;;8928:30;8994:34;8974:18;;;8967:62;9065:34;9045:18;;;9038:62;-1:-1:-1;;;9116:19:1;;;9109:36;9162:19;;27896:103:0::1;8714:473:1::0;27896:103:0::1;28012:41;28041:4;28047:5;28012:28;:41::i;:::-;27805:256:::0;;:::o;10819:413::-;3272:10;10912:4;10956:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10956:34:0;;;;;;;;;;11009:35;;;;11001:85;;;;-1:-1:-1;;;11001:85:0;;9394:2:1;11001:85:0;;;9376:21:1;9433:2;9413:18;;;9406:30;9472:34;9452:18;;;9445:62;-1:-1:-1;;;9523:18:1;;;9516:35;9568:19;;11001:85:0;9192:401:1;11001:85:0;11122:67;3272:10;11145:7;11173:15;11154:16;:34;11122:8;:67::i;:::-;-1:-1:-1;11220:4:0;;10819:413;-1:-1:-1;;;10819:413:0:o;7648:175::-;7734:4;7751:42;3272:10;7775:9;7786:6;7751:9;:42::i;36442:124::-;36490:7;36554:4;36533:18;;36517:13;7225:12;;;7137:108;27581:216;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;27690:6:::1;27674:13;7225:12:::0;;;7137:108;27674:13:::1;:22;;;;:::i;:::-;27665:6;:31;27657:94;;;::::0;-1:-1:-1;;;27657:94:0;;9800:2:1;27657:94:0::1;::::0;::::1;9782:21:1::0;9839:2;9819:18;;;9812:30;9878:34;9858:18;;;9851:62;-1:-1:-1;;;9929:18:1;;;9922:48;9987:19;;27657:94:0::1;9598:414:1::0;27657:94:0::1;27762:18;:27:::0;27581:216::o;37967:381::-;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;38131:1:::1;38107:20;:25;;:53;;;;;38159:1;38136:19;:24;;38107:53;38099:129;;;::::0;-1:-1:-1;;;38099:129:0;;10219:2:1;38099:129:0::1;::::0;::::1;10201:21:1::0;10258:2;10238:18;;;10231:30;10297:34;10277:18;;;10270:62;10368:33;10348:18;;;10341:61;10419:19;;38099:129:0::1;10017:427:1::0;38099:129:0::1;38240:21;:44:::0;;;;38295:22:::1;:45:::0;37967:381::o;33367:105::-;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;33438:18:::1;:26:::0;33367:105::o;27283:290::-;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27376:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;:40;::::1;;:28;::::0;;::::1;:40;;::::0;27368:95:::1;;;::::0;-1:-1:-1;;;27368:95:0;;10651:2:1;27368:95:0::1;::::0;::::1;10633:21:1::0;10690:2;10670:18;;;10663:30;10729:34;10709:18;;;10702:62;-1:-1:-1;;;10780:18:1;;;10773:40;10830:19;;27368:95:0::1;10449:406:1::0;27368:95:0::1;-1:-1:-1::0;;;;;27474:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;27474:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;27531:34;;1394:41:1;;;27531:34:0::1;::::0;1367:18:1;27531:34:0::1;;;;;;;27283:290:::0;;:::o;36086:200::-;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;36173:21:::1;::::0;::::1;;36163:31;;::::0;::::1;;::::0;36155:82:::1;;;::::0;-1:-1:-1;;;36155:82:0;;11062:2:1;36155:82:0::1;::::0;::::1;11044:21:1::0;11101:2;11081:18;;;11074:30;11140:34;11120:18;;;11113:62;-1:-1:-1;;;11191:18:1;;;11184:36;11237:19;;36155:82:0::1;10860:402:1::0;36155:82:0::1;36248:21;:30:::0;;-1:-1:-1;;36248:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36086:200::o;28386:359::-;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;28500:12:::1;:28:::0;;;28539:12:::1;:28:::0;;;28578:10:::1;:24:::0;;;28591:11;28625:27:::1;28554:13:::0;28515;28625:27:::1;:::i;:::-;:40;;;;:::i;:::-;28613:9;:52:::0;;;28697:2:::1;-1:-1:-1::0;28684:15:0::1;28676:61;;;::::0;-1:-1:-1;;;28676:61:0;;11469:2:1;28676:61:0::1;::::0;::::1;11451:21:1::0;11508:2;11488:18;;;11481:30;11547:34;11527:18;;;11520:62;-1:-1:-1;;;11598:18:1;;;11591:31;11639:19;;28676:61:0::1;11267:397:1::0;28676:61:0::1;28386:359:::0;;;:::o;33201:158::-;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;33293:6:::1;33280:9;:19;;33272:43;;;::::0;-1:-1:-1;;;33272:43:0;;11871:2:1;33272:43:0::1;::::0;::::1;11853:21:1::0;11910:2;11890:18;;;11883:30;-1:-1:-1;;;11929:18:1;;;11922:41;11980:18;;33272:43:0::1;11669:335:1::0;33272:43:0::1;33326:25;33341:9;33326:14;:25::i;:::-;33201:158:::0;:::o;4986:244::-;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5075:22:0;::::1;5067:73;;;::::0;-1:-1:-1;;;5067:73:0;;12211:2:1;5067:73:0::1;::::0;::::1;12193:21:1::0;12250:2;12230:18;;;12223:30;12289:34;12269:18;;;12262:62;-1:-1:-1;;;12340:18:1;;;12333:36;12386:19;;5067:73:0::1;12009:402:1::0;5067:73:0::1;5177:6;::::0;5156:38:::1;::::0;-1:-1:-1;;;;;5156:38:0;;::::1;::::0;5177:6:::1;::::0;5156:38:::1;::::0;5177:6:::1;::::0;5156:38:::1;5205:6;:17:::0;;-1:-1:-1;;;;;;5205:17:0::1;-1:-1:-1::0;;;;;5205:17:0;;;::::1;::::0;;;::::1;::::0;;4986:244::o;28887:441::-;4253:6;;-1:-1:-1;;;;;4253:6:0;3272:10;4253:22;4245:67;;;;-1:-1:-1;;;4245:67:0;;;;;;;:::i;:::-;28983:4:::1;-1:-1:-1::0;;;;;28966:22:0;::::1;::::0;28958:67:::1;;;::::0;-1:-1:-1;;;28958:67:0;;12618:2:1;28958:67:0::1;::::0;::::1;12600:21:1::0;;;12637:18;;;12630:30;12696:34;12676:18;;;12669:62;12748:18;;28958:67:0::1;12416:356:1::0;28958:67:0::1;-1:-1:-1::0;;;;;29040:21:0;::::1;29036:126;;29078:51;::::0;29086:10:::1;::::0;29107:21:::1;29078:51:::0;::::1;;;::::0;::::1;::::0;;;29107:21;29086:10;29078:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;29036:126;29234:35;::::0;-1:-1:-1;;;29234:35:0;;29263:4:::1;29234:35;::::0;::::1;2129:51:1::0;29199:5:0;;29172:17:::1;::::0;-1:-1:-1;;;;;29234:20:0;::::1;::::0;::::1;::::0;2102:18:1;;29234:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29280:40;::::0;-1:-1:-1;;;29280:40:0;;29300:10:::1;29280:40;::::0;::::1;13140:51:1::0;13207:18;;;13200:34;;;29216:53:0;;-1:-1:-1;;;;;;29280:19:0;::::1;::::0;::::1;::::0;13113:18:1;;29280:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28947:381;;28887:441:::0;:::o;14503:380::-;-1:-1:-1;;;;;14639:19:0;;14631:68;;;;-1:-1:-1;;;14631:68:0;;13697:2:1;14631:68:0;;;13679:21:1;13736:2;13716:18;;;13709:30;13775:34;13755:18;;;13748:62;-1:-1:-1;;;13826:18:1;;;13819:34;13870:19;;14631:68:0;13495:400:1;14631:68:0;-1:-1:-1;;;;;14718:21:0;;14710:68;;;;-1:-1:-1;;;14710:68:0;;14102:2:1;14710:68:0;;;14084:21:1;14141:2;14121:18;;;14114:30;14180:34;14160:18;;;14153:62;-1:-1:-1;;;14231:18:1;;;14224:32;14273:19;;14710:68:0;13900:398:1;14710:68:0;-1:-1:-1;;;;;14791:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14843:32;;762:25:1;;;14843:32:0;;735:18:1;14843:32:0;;;;;;;14503:380;;;:::o;29336:3851::-;-1:-1:-1;;;;;29469:18:0;;29461:68;;;;-1:-1:-1;;;29461:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29548:16:0;;29540:64;;;;-1:-1:-1;;;29540:64:0;;;;;;;:::i;:::-;29624:6;29634:1;29624:11;29621:92;;29652:28;29668:4;29674:2;29678:1;29652:15;:28::i;29621:92::-;29737:21;;;;29733:407;;;-1:-1:-1;;;;;29779:35:0;;;;;;:29;:35;;;;;;;;:44;;;:107;;-1:-1:-1;;;;;;29844:33:0;;;;;;:29;:33;;;;;;;;:42;29779:107;:147;;;;-1:-1:-1;29913:13:0;;-1:-1:-1;;;;;29907:19:0;;;29913:13;;29907:19;;29779:147;29775:354;;;-1:-1:-1;;;;;7409:18:0;;29961:12;7409:18;;;;;;;;;;;30037:17;:15;:17::i;:::-;30017:16;30027:6;30017:7;:16;:::i;:::-;:37;;30009:104;;;;-1:-1:-1;;;30009:104:0;;15315:2:1;30009:104:0;;;15297:21:1;15354:2;15334:18;;;15327:30;15393:34;15373:18;;;15366:62;-1:-1:-1;;;15444:18:1;;;15437:52;15506:19;;30009:104:0;15113:418:1;30009:104:0;29942:187;29775:354;30156:26;;;;30152:531;;;-1:-1:-1;;;;;30203:31:0;;;;;;:25;:31;;;;;;;;:40;;;:99;;-1:-1:-1;;;;;;30264:29:0;;;;;;:25;:29;;;;;;;;:38;30203:99;30199:473;;;30349:13;;-1:-1:-1;;;;;30349:13:0;;;30341:21;;;;30337:320;;30405:22;:20;:22::i;:::-;30395:6;:32;;30387:101;;;;-1:-1:-1;;;30387:101:0;;;;;;;:::i;:::-;30337:320;;;30553:23;:21;:23::i;:::-;30543:6;:33;;30535:102;;;;-1:-1:-1;;;30535:102:0;;;;;;;:::i;:::-;30748:4;30699:28;7409:18;;;;;;;;;;;30806;;30782:42;;;;;;;30841:33;;-1:-1:-1;30866:8:0;;-1:-1:-1;;;30866:8:0;;;;30865:9;30841:33;:82;;;;-1:-1:-1;;;;;;30892:31:0;;;;;;:25;:31;;;;;;;;30891:32;30841:82;:114;;;;-1:-1:-1;4106:6:0;;-1:-1:-1;;;;;30940:15:0;;;4106:6;;30940:15;;30841:114;:144;;;;-1:-1:-1;4106:6:0;;-1:-1:-1;;;;;30972:13:0;;;4106:6;;30972:13;;30841:144;:175;;;;-1:-1:-1;31002:9:0;;:14;;30841:175;30837:1615;;;31043:8;:15;;-1:-1:-1;;;;31043:15:0;-1:-1:-1;;;31043:15:0;;;31142:9;;31123:12;;31043:15;;31142:9;31138:1;;31100:35;;:20;:35;:::i;:::-;:39;;;;:::i;:::-;:51;;;;:::i;:::-;31075:76;-1:-1:-1;31166:38:0;31075:76;31166:38;;:::i;:::-;;-1:-1:-1;31240:21:0;31276:38;31166;31276:16;:38::i;:::-;31329:17;31349:37;31374:11;31349:21;:37;:::i;:::-;31329:57;;31401:11;31431:12;;31415:9;;31427:1;31415:13;;;;:::i;:::-;:28;;;;:::i;:::-;31465:12;;31401:42;;-1:-1:-1;31465:16:0;31462:187;;31502:20;31561:6;31545:12;;31541:1;:16;;;;:::i;:::-;31525:33;;:12;:33;:::i;:::-;:42;;;;:::i;:::-;31594:15;;31586:47;;31502:65;;-1:-1:-1;;;;;;31594:15:0;;31586:47;;;;;31502:65;;31594:15;31586:47;31594:15;31586:47;31502:65;31594:15;31586:47;;;;;;;;;;;;;;;;;;;;;31483:166;31462:187;31668:12;;:16;31665:164;;31705:14;31752:6;31737:12;;31722;:27;;;;:::i;:::-;:36;;;;:::i;:::-;31705:53;;31777:36;31790:14;31806:6;31777:12;:36::i;:::-;31686:143;31665:164;31848:10;;:14;31845:556;;31883:18;31938:6;31924:10;;31920:1;:14;;;;:::i;:::-;31904:31;;:12;:31;:::i;:::-;:40;;;;:::i;:::-;31883:61;;31988:10;31963:21;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;32045:18:0;;32021:21;;:42;32017:369;;;32116:21;;32091;:46;32088:231;;32166:37;32181:21;;32166:14;:37::i;:::-;32088:231;;;32258:37;32273:21;32258:14;:37::i;:::-;32365:1;32341:21;:25;32017:369;31864:537;31845:556;-1:-1:-1;;32424:8:0;:16;;-1:-1:-1;;;;32424:16:0;;;-1:-1:-1;;30837:1615:0;32480:8;;-1:-1:-1;;;;;32504:25:0;;32464:12;32504:25;;;:19;:25;;;;;;32480:8;-1:-1:-1;;;32480:8:0;;;;;32479:9;;32504:25;;:52;;-1:-1:-1;;;;;;32533:23:0;;;;;;:19;:23;;;;;;;;32504:52;32501:99;;;-1:-1:-1;32583:5:0;32501:99;32624:13;;-1:-1:-1;;;;;32624:13:0;;;32616:21;;;;32613:74;;-1:-1:-1;32664:5:0;32613:74;-1:-1:-1;;;;;32728:13:0;;;;;;:7;:13;;;;;;32744:8;;32710:31;;:15;:31;:::i;:::-;:42;32707:89;;;-1:-1:-1;32779:5:0;32707:89;32811:7;32808:220;;;32871:12;32909:3;32896:9;;32887:6;:18;;;;:::i;:::-;32886:26;;;;:::i;:::-;32871:41;-1:-1:-1;32944:13:0;32871:41;32944:6;:13;:::i;:::-;32935:22;;32974:42;32990:4;33004;33011;32974:15;:42::i;:::-;32820:208;32808:220;33059:13;;-1:-1:-1;;;;;33059:13:0;;;33051:21;;;;33048:82;;-1:-1:-1;;;;;33089:11:0;;;;;;:7;:11;;;;;33103:15;33089:29;;33048:82;33144:33;33160:4;33166:2;33170:6;33144:15;:33::i;:::-;29450:3737;;;29336:3851;;;:::o;28070:308::-;-1:-1:-1;;;;;28161:31:0;;;;;;:25;:31;;;;;;:40;;;:31;;;;:40;;;28153:109;;;;-1:-1:-1;;;28153:109:0;;16293:2:1;28153:109:0;;;16275:21:1;16332:2;16312:18;;;16305:30;16371:34;16351:18;;;16344:62;16442:26;16422:18;;;16415:54;16486:19;;28153:109:0;16091:420:1;28153:109:0;-1:-1:-1;;;;;28273:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;28273:39:0;;;;;;;;;;28330:40;;28273:39;;:31;28330:40;;;28070:308;;:::o;33480:359::-;33564:16;;;33578:1;33564:16;;;;;;;;33540:21;;33564:16;;;;;;;;-1:-1:-1;;33601:15:0;;:22;;;-1:-1:-1;;;33601:22:0;;;;33540:40;;-1:-1:-1;;;;;;33601:15:0;;;;:20;;-1:-1:-1;33601:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33591:4;33596:1;33591:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;33591:32:0;;;-1:-1:-1;;;;;33591:32:0;;;;;33652:4;33634;33639:1;33634:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;33634:23:0;;;:7;;;;;;;;;:23;33670:15;;33793:10;;33670:161;;-1:-1:-1;;;33670:161:0;;:15;;;;:66;;33745:6;;33670:161;;:15;;33777:4;;33793:10;;;;33815:15;;33670:161;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33529:310;33480:359;:::o;11722:733::-;-1:-1:-1;;;;;11862:20:0;;11854:70;;;;-1:-1:-1;;;11854:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11943:23:0;;11935:71;;;;-1:-1:-1;;;11935:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12103:17:0;;12079:21;12103:17;;;;;;;;;;;12139:23;;;;12131:74;;;;-1:-1:-1;;;12131:74:0;;17963:2:1;12131:74:0;;;17945:21:1;18002:2;17982:18;;;17975:30;18041:34;18021:18;;;18014:62;-1:-1:-1;;;18092:18:1;;;18085:36;18138:19;;12131:74:0;17761:402:1;12131:74:0;-1:-1:-1;;;;;12241:17:0;;;:9;:17;;;;;;;;;;;12261:22;;;12241:42;;12305:20;;;;;;;;:30;;12277:6;;12241:9;12305:30;;12277:6;;12305:30;:::i;:::-;;;;;;;;12370:9;-1:-1:-1;;;;;12353:35:0;12362:6;-1:-1:-1;;;;;12353:35:0;;12381:6;12353:35;;;;762:25:1;;750:2;735:18;;616:177;12353:35:0;;;;;;;;12401:46;28386:359;34768:589;34918:16;;;34932:1;34918:16;;;;;;;;34894:21;;34918:16;;;;;;;;;;-1:-1:-1;34918:16:0;34894:40;;34963:4;34945;34950:1;34945:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;34945:23:0;;;:7;;;;;;;;;;:23;;;;34989:15;;:22;;;-1:-1:-1;;;34989:22:0;;;;:15;;;;;:20;;:22;;;;;34945:7;;34989:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34979:4;34984:1;34979:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;34979:32:0;;;:7;;;;;;;;;:32;35056:15;;35024:62;;35041:4;;35056:15;35074:11;35024:8;:62::i;:::-;35125:15;;:224;;-1:-1:-1;;;35125:224:0;;-1:-1:-1;;;;;35125:15:0;;;;:66;;:224;;35206:11;;35125:15;;35276:4;;35303;;35323:15;;35125:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35365:518;35547:15;;35515:62;;35532:4;;-1:-1:-1;;;;;35547:15:0;35565:11;35515:8;:62::i;:::-;35620:15;;35824:10;;35620:255;;-1:-1:-1;;;35620:255:0;;35692:4;35620:255;;;19096:34:1;19146:18;;;19139:34;;;35620:15:0;19189:18:1;;;19182:34;;;19232:18;;;19225:34;-1:-1:-1;;;;;35824:10:0;;;19275:19:1;;;19268:44;35849:15:0;19328:19:1;;;19321:35;35620:15:0;;;:31;;35659:9;;19030:19:1;;35620:255:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;35365:518;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;934:315;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934:315:1:o;1446:118::-;1532:5;1525:13;1518:21;1511:5;1508:32;1498:60;;1554:1;1551;1544:12;1569:382;1634:6;1642;1695:2;1683:9;1674:7;1670:23;1666:32;1663:52;;;1711:1;1708;1701:12;1663:52;1750:9;1737:23;1769:31;1794:5;1769:31;:::i;:::-;1819:5;-1:-1:-1;1876:2:1;1861:18;;1848:32;1889:30;1848:32;1889:30;:::i;:::-;1938:7;1928:17;;;1569:382;;;;;:::o;2191:247::-;2250:6;2303:2;2291:9;2282:7;2278:23;2274:32;2271:52;;;2319:1;2316;2309:12;2271:52;2358:9;2345:23;2377:31;2402:5;2377:31;:::i;:::-;2427:5;2191:247;-1:-1:-1;;;2191:247:1:o;2443:456::-;2520:6;2528;2536;2589:2;2577:9;2568:7;2564:23;2560:32;2557:52;;;2605:1;2602;2595:12;2557:52;2644:9;2631:23;2663:31;2688:5;2663:31;:::i;:::-;2713:5;-1:-1:-1;2770:2:1;2755:18;;2742:32;2783:33;2742:32;2783:33;:::i;:::-;2443:456;;2835:7;;-1:-1:-1;;;2889:2:1;2874:18;;;;2861:32;;2443:456::o;3301:241::-;3357:6;3410:2;3398:9;3389:7;3385:23;3381:32;3378:52;;;3426:1;3423;3416:12;3378:52;3465:9;3452:23;3484:28;3506:5;3484:28;:::i;3547:180::-;3606:6;3659:2;3647:9;3638:7;3634:23;3630:32;3627:52;;;3675:1;3672;3665:12;3627:52;-1:-1:-1;3698:23:1;;3547:180;-1:-1:-1;3547:180:1:o;3732:248::-;3800:6;3808;3861:2;3849:9;3840:7;3836:23;3832:32;3829:52;;;3877:1;3874;3867:12;3829:52;-1:-1:-1;;3900:23:1;;;3970:2;3955:18;;;3942:32;;-1:-1:-1;3732:248:1:o;3985:316::-;4062:6;4070;4078;4131:2;4119:9;4110:7;4106:23;4102:32;4099:52;;;4147:1;4144;4137:12;4099:52;-1:-1:-1;;4170:23:1;;;4240:2;4225:18;;4212:32;;-1:-1:-1;4291:2:1;4276:18;;;4263:32;;3985:316;-1:-1:-1;3985:316:1:o;4306:388::-;4374:6;4382;4435:2;4423:9;4414:7;4410:23;4406:32;4403:52;;;4451:1;4448;4441:12;4403:52;4490:9;4477:23;4509:31;4534:5;4509:31;:::i;:::-;4559:5;-1:-1:-1;4616:2:1;4601:18;;4588:32;4629:33;4588:32;4629:33;:::i;4699:380::-;4778:1;4774:12;;;;4821;;;4842:61;;4896:4;4888:6;4884:17;4874:27;;4842:61;4949:2;4941:6;4938:14;4918:18;4915:38;4912:161;;4995:10;4990:3;4986:20;4983:1;4976:31;5030:4;5027:1;5020:15;5058:4;5055:1;5048:15;4912:161;;4699:380;;;:::o;5084:127::-;5145:10;5140:3;5136:20;5133:1;5126:31;5176:4;5173:1;5166:15;5200:4;5197:1;5190:15;5216:168;5256:7;5322:1;5318;5314:6;5310:14;5307:1;5304:21;5299:1;5292:9;5285:17;5281:45;5278:71;;;5329:18;;:::i;:::-;-1:-1:-1;5369:9:1;;5216:168::o;5389:217::-;5429:1;5455;5445:132;;5499:10;5494:3;5490:20;5487:1;5480:31;5534:4;5531:1;5524:15;5562:4;5559:1;5552:15;5445:132;-1:-1:-1;5591:9:1;;5389:217::o;5611:356::-;5813:2;5795:21;;;5832:18;;;5825:30;5891:34;5886:2;5871:18;;5864:62;5958:2;5943:18;;5611:356::o;5972:400::-;6174:2;6156:21;;;6213:2;6193:18;;;6186:30;6252:34;6247:2;6232:18;;6225:62;-1:-1:-1;;;6318:2:1;6303:18;;6296:34;6362:3;6347:19;;5972:400::o;6786:128::-;6826:3;6857:1;6853:6;6850:1;6847:13;6844:39;;;6863:18;;:::i;:::-;-1:-1:-1;6899:9:1;;6786:128::o;7735:251::-;7805:6;7858:2;7846:9;7837:7;7833:23;7829:32;7826:52;;;7874:1;7871;7864:12;7826:52;7906:9;7900:16;7925:31;7950:5;7925:31;:::i;12777:184::-;12847:6;12900:2;12888:9;12879:7;12875:23;12871:32;12868:52;;;12916:1;12913;12906:12;12868:52;-1:-1:-1;12939:16:1;;12777:184;-1:-1:-1;12777:184:1:o;13245:245::-;13312:6;13365:2;13353:9;13344:7;13340:23;13336:32;13333:52;;;13381:1;13378;13371:12;13333:52;13413:9;13407:16;13432:28;13454:5;13432:28;:::i;14303:401::-;14505:2;14487:21;;;14544:2;14524:18;;;14517:30;14583:34;14578:2;14563:18;;14556:62;-1:-1:-1;;;14649:2:1;14634:18;;14627:35;14694:3;14679:19;;14303:401::o;14709:399::-;14911:2;14893:21;;;14950:2;14930:18;;;14923:30;14989:34;14984:2;14969:18;;14962:62;-1:-1:-1;;;15055:2:1;15040:18;;15033:33;15098:3;15083:19;;14709:399::o;15536:420::-;15738:2;15720:21;;;15777:2;15757:18;;;15750:30;15816:34;15811:2;15796:18;;15789:62;15887:26;15882:2;15867:18;;15860:54;15946:3;15931:19;;15536:420::o;15961:125::-;16001:4;16029:1;16026;16023:8;16020:34;;;16034:18;;:::i;:::-;-1:-1:-1;16071:9:1;;15961:125::o;16648:127::-;16709:10;16704:3;16700:20;16697:1;16690:31;16740:4;16737:1;16730:15;16764:4;16761:1;16754:15;16780:461;16833:3;16871:5;16865:12;16898:6;16893:3;16886:19;16924:4;16953:2;16948:3;16944:12;16937:19;;16990:2;16983:5;16979:14;17011:1;17021:195;17035:6;17032:1;17029:13;17021:195;;;17100:13;;-1:-1:-1;;;;;17096:39:1;17084:52;;17156:12;;;;17191:15;;;;17132:1;17050:9;17021:195;;;-1:-1:-1;17232:3:1;;16780:461;-1:-1:-1;;;;;16780:461:1:o;17246:510::-;17517:6;17506:9;17499:25;17560:3;17555:2;17544:9;17540:18;17533:31;17480:4;17581:57;17633:3;17622:9;17618:19;17610:6;17581:57;:::i;:::-;-1:-1:-1;;;;;17674:32:1;;;;17669:2;17654:18;;17647:60;-1:-1:-1;17738:2:1;17723:18;17716:34;17573:65;17246:510;-1:-1:-1;;17246:510:1:o;18168:582::-;18467:6;18456:9;18449:25;18510:6;18505:2;18494:9;18490:18;18483:34;18553:3;18548:2;18537:9;18533:18;18526:31;18430:4;18574:57;18626:3;18615:9;18611:19;18603:6;18574:57;:::i;:::-;-1:-1:-1;;;;;18667:32:1;;;;18662:2;18647:18;;18640:60;-1:-1:-1;18731:3:1;18716:19;18709:35;18566:65;18168:582;-1:-1:-1;;;18168:582:1:o;19367:306::-;19455:6;19463;19471;19524:2;19512:9;19503:7;19499:23;19495:32;19492:52;;;19540:1;19537;19530:12;19492:52;19569:9;19563:16;19553:26;;19619:2;19608:9;19604:18;19598:25;19588:35;;19663:2;19652:9;19648:18;19642:25;19632:35;;19367:306;;;;;:::o

Swarm Source

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