ETH Price: $2,431.12 (+0.10%)
Gas: 8.71 Gwei
 

Overview

Max Total Supply

215.216255034606553225 THND

Holders

263

Market

Price

$9,858.59 @ 4.055168 ETH (+12.33%)

Onchain Market Cap

$2,121,728.82

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.999625695192267643 THND

Value
$9,854.90 ( ~4.0536 Eth) [0.4645%]
0x44dcd97b1512eeefcd99632b8a0d1c0c3040c35f
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

THND AI is your AI-powered co-pilot for the exciting, yet sometimes overwhelming, world of crypto trading.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
THREEHUNDRED

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-06
*/

// SPDX-License-Identifier: MIT

/*
 ______________ ______________  ________ _______  _______
 \__    ___/   |   \_   _____/  \_____  \\   _  \ \   _  \
   |    | /    ~    \    __)_     _(__  </  /_\  \/  /_\  \
   |    | \    Y    /        \   /       \  \_/   \  \_/   \
   |____|  \___|_  /_______  /  /______  /\_____  /\_____  /
                 \/        \/          \/       \/       \/
        ____/\________________ ___  _______  ________
       /   / /_/\__    ___/   |   \ \      \ \______ \
       \__/ / \   |    | /    ~    \/   |   \ |    |  \
       / / /   \  |    | \    Y    /    |    \|    `   \
      /_/ /__  /  |____|  \___|_  /\____|__  /_______  /
        \/   \/                 \/         \/        \/

  THE 300: REBORN -- Optimized & ready for the Next Chapter

 */

pragma solidity ^0.8.20;

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

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

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

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

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

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

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

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

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
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);
}

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

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

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

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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) {
        address owner = _msgSender();
        _approve(owner, 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:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, 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) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        //require(from != address(0), "ERC20: transfer from the zero address");
        //require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _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;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _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 Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - 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 {}
}

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

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

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

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

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

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

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

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

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

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}

contract THREEHUNDRED is ERC20, Ownable, ERC20Burnable {
    uint256 private constant minimumSupply = 3 ether;
    uint256 private constant MAX_PERCENTAGE = 99;

    struct ContractParameters {
        uint256 maxTransactionAmount;
        uint256 burnTaxPercent;
        uint256 maxSupply;
        bool paused;
        address the300;
        address treasuryWallet;
    }

    ContractParameters public parameters =
        ContractParameters({
            maxTransactionAmount: 3 ether,
            burnTaxPercent: 3,
            maxSupply: 300 ether,
            paused: true,
            the300: 0xEC986c37332f2DcbC0e5DE69Ed40Ee1871BF77b3,
            treasuryWallet: 0x81C2F938611257754201119248251e295ae28Ea0
        });

    event MaxTransactionAmountChanged(uint256 newMax);
    event BurnAndMintEvent(address sender, uint256 total);

    constructor() ERC20("Three Hundred", "THND") {
        _mint(msg.sender, 65 ether);
        parameters.treasuryWallet = owner();
    }

    // Prevent foolishness during transfers
    //
    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        require(
            msg.sender == parameters.treasuryWallet ||
                recipient == parameters.treasuryWallet ||
                amount <= parameters.maxTransactionAmount,
            "Exceeds max transaction amount"
        );

        uint256 burnAmount = 0;
        uint256 transferAmount = amount;

        if (
            totalSupply() > minimumSupply &&
            msg.sender != parameters.treasuryWallet &&
            recipient != parameters.treasuryWallet
        ) {
            burnAmount = (amount * parameters.burnTaxPercent) / 100;
            transferAmount = amount - burnAmount;
        }

        _transfer(_msgSender(), recipient, transferAmount);

        if (burnAmount > 0) {
            _burn(_msgSender(), burnAmount);
        }

        return true;
    }

    // Main functions
    function burnAndMint(uint256 totalToMintAndBurn) public whenNotPaused {
        // Check if the totalToMintAndBurn is greater than zero
        require(
            totalToMintAndBurn > 0,
            "Mint and burn amount must be greater than zero"
        );

        // Check the sender's balance using the IERC20 interface
        uint256 senderBalance = check300Balance(msg.sender);
        require(senderBalance >= totalToMintAndBurn, "Insufficient balance");

        // Calculate the new total supply after minting
        // Check if the new total supply is within the maximum supply limit
        uint256 newTotalSupply = totalSupply() + totalToMintAndBurn;
        require(
            newTotalSupply <= parameters.maxSupply,
            "Cannot mint more than max supply"
        );

        // burn the tokens from the old contract
        burnThe300Tokens(totalToMintAndBurn);

        // Mint new tokens to the sender
        _mint(msg.sender, totalToMintAndBurn);

        emit BurnAndMintEvent(msg.sender, totalToMintAndBurn);
    }

    // Helper functions for the burnAndMint and other functions
    //
    function check300Balance(address account) public view returns (uint256) {
        uint256 balance = IERC20(parameters.the300).balanceOf(account);
        return balance;
    }

    function burnThe300Tokens(uint256 amount) public {
        // Check the balance of the msg.sender
        uint256 senderBalance = ERC20(parameters.the300).balanceOf(msg.sender);
        require(senderBalance >= amount, "Insufficient balance");

        // Check if the contract has enough allowance to burn the tokens
        uint256 allowance = ERC20(parameters.the300).allowance(
            msg.sender,
            address(this)
        );
        require(allowance >= amount, "Insufficient allowance");

        // Transfer the tokens from msg.sender to the burn address
        ERC20(parameters.the300).transferFrom(msg.sender, address(0), amount);
    }

    modifier whenNotPaused() {
        require(!parameters.paused, "Contract is paused");
        _;
    }

    // Only owner functions

    function togglePause() public onlyOwner {
        parameters.paused = !parameters.paused;
    }

    function changeOG300(address ta) external onlyOwner {
        require(ta != address(0), "Cannot be the zero address");
        parameters.the300 = ta;
    }

    function changeTreasuryWallet(
        address newTreasuryWallet
    ) external onlyOwner {
        parameters.treasuryWallet = newTreasuryWallet;
    }

    // Only Treasury functions

    function changeTaxPercent(uint256 newTaxPercent) external {
        require(
            msg.sender == parameters.treasuryWallet,
            "Only treasury wallet can change this"
        );
        require(
            newTaxPercent <= MAX_PERCENTAGE,
            "Tax percentage cannot exceed 100%"
        );
        parameters.burnTaxPercent = newTaxPercent;
    }

    function setMaxTransactionAmount(uint256 newMax) external {
        require(
            msg.sender == parameters.treasuryWallet,
            "Only treasury wallet can change this"
        );
        parameters.maxTransactionAmount = newMax;
        emit MaxTransactionAmountChanged(newMax);
    }

    function ownerMint(uint256 mintAmount, address toWallet) external {
        require(
            msg.sender == parameters.treasuryWallet || msg.sender == owner(),
            "Only treasury wallet can change this"
        );
        require(
            totalSupply() + mintAmount <= parameters.maxSupply,
            "Cannot mint more than total supply"
        );
        _mint(toWallet, mintAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"total","type":"uint256"}],"name":"BurnAndMintEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"MaxTransactionAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"totalToMintAndBurn","type":"uint256"}],"name":"burnAndMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnThe300Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ta","type":"address"}],"name":"changeOG300","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTaxPercent","type":"uint256"}],"name":"changeTaxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTreasuryWallet","type":"address"}],"name":"changeTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"check300Balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"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":[],"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":[{"internalType":"uint256","name":"mintAmount","type":"uint256"},{"internalType":"address","name":"toWallet","type":"address"}],"name":"ownerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"parameters","outputs":[{"internalType":"uint256","name":"maxTransactionAmount","type":"uint256"},{"internalType":"uint256","name":"burnTaxPercent","type":"uint256"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"address","name":"the300","type":"address"},{"internalType":"address","name":"treasuryWallet","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"togglePause","outputs":[],"stateMutability":"nonpayable","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":"from","type":"address"},{"internalType":"address","name":"to","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"}]

6101406040526729a2241af62c00006080819052600360a0819052681043561a882930000060c0819052600160e05273ec986c37332f2dcbc0e5de69ed40ee1871bf77b3610100527381c2f938611257754201119248251e295ae28ea0610120819052600693909355600791909155600855600980546001600160a81b03191674ec986c37332f2dcbc0e5de69ed40ee1871bf77b301179055600a80546001600160a01b0319169091179055348015620000b7575f80fd5b506040518060400160405280600d81526020016c151a1c995948121d5b991c9959609a1b815250604051806040016040528060048152602001631512139160e21b81525081600390816200010c919062000332565b5060046200011b828262000332565b50505062000138620001326200017560201b60201c565b62000179565b6200014d336803860e639d80640000620001ca565b600554600a80546001600160a01b0319166001600160a01b0390921691909117905562000420565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620002255760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f828254620002389190620003fa565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620002bc57607f821691505b602082108103620002db57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200028e575f81815260208120601f850160051c81016020861015620003095750805b601f850160051c820191505b818110156200032a5782815560010162000315565b505050505050565b81516001600160401b038111156200034e576200034e62000293565b62000366816200035f8454620002a7565b84620002e1565b602080601f8311600181146200039c575f8415620003845750858301515b5f19600386901b1c1916600185901b1785556200032a565b5f85815260208120601f198616915b82811015620003cc57888601518255948401946001909101908401620003ab565b5085821015620003ea57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200041a57634e487b7160e01b5f52601160045260245ffd5b92915050565b611593806200042e5f395ff3fe608060405234801561000f575f80fd5b5060043610610187575f3560e01c806379cc6790116100d9578063c4ae316811610093578063dd62ed3e1161006e578063dd62ed3e14610399578063f28dcabe146103ac578063f2fde38b146103bf578063fc06b26a146103d2575f80fd5b8063c4ae31681461036b578063c963114d14610373578063d52c57e014610386575f80fd5b806379cc6790146102a457806389035730146102b75780638da5cb5b1461032257806395d89b411461033d578063a457c2d714610345578063a9059cbb14610358575f80fd5b8063313ce56711610144578063537c1ac71161011f578063537c1ac71461024e57806364be293c1461026157806370a0823114610274578063715018a61461029c575f80fd5b8063313ce56714610219578063395093511461022857806342966c681461023b575f80fd5b806306fdde031461018b578063095ea7b3146101a957806311104e94146101cc57806318160ddd146101e15780631e293c10146101f357806323b872dd14610206575b5f80fd5b6101936103e5565b6040516101a091906112f2565b60405180910390f35b6101bc6101b7366004611358565b610475565b60405190151581526020016101a0565b6101df6101da366004611380565b61048e565b005b6002545b6040519081526020016101a0565b6101df610201366004611380565b61064f565b6101bc610214366004611397565b6106b4565b604051601281526020016101a0565b6101bc610236366004611358565b6106d7565b6101df610249366004611380565b6106f8565b6101df61025c3660046113d0565b610705565b6101df61026f3660046113d0565b61072f565b6101e56102823660046113d0565b6001600160a01b03165f9081526020819052604090205490565b6101df6107b5565b6101df6102b2366004611358565b6107c8565b600654600754600854600954600a546102e79493929160ff8116916001600160a01b036101009092048216911686565b60408051968752602087019590955293850192909252151560608401526001600160a01b0390811660808401521660a082015260c0016101a0565b6005546040516001600160a01b0390911681526020016101a0565b6101936107e1565b6101bc610353366004611358565b6107f0565b6101bc610366366004611358565b61086a565b6101df61097a565b6101e56103813660046113d0565b610996565b6101df6103943660046113e9565b610a13565b6101e56103a7366004611413565b610acc565b6101df6103ba366004611380565b610af6565b6101df6103cd3660046113d0565b610cf0565b6101df6103e0366004611380565b610d66565b6060600380546103f49061143b565b80601f01602080910402602001604051908101604052809291908181526020018280546104209061143b565b801561046b5780601f106104425761010080835404028352916020019161046b565b820191905f5260205f20905b81548152906001019060200180831161044e57829003601f168201915b5050505050905090565b5f33610482818585610df0565b60019150505b92915050565b60095460ff16156104db5760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b60448201526064015b60405180910390fd5b5f81116105415760405162461bcd60e51b815260206004820152602e60248201527f4d696e7420616e64206275726e20616d6f756e74206d7573742062652067726560448201526d61746572207468616e207a65726f60901b60648201526084016104d2565b5f61054b33610996565b9050818110156105945760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016104d2565b5f8261059f60025490565b6105a99190611487565b6008549091508111156105fe5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74206d696e74206d6f7265207468616e206d617820737570706c7960448201526064016104d2565b61060783610af6565b6106113384610f14565b60408051338152602081018590527fdc3acc655aa78b8c7bdef4800c829aeece68a8bef2e35e781474df18416f31ad910160405180910390a1505050565b600a546001600160a01b031633146106795760405162461bcd60e51b81526004016104d29061149a565b60068190556040518181527f6486a003009c3c4b5494fffabcd2fd539e325727abba421aded6616d35e4eaef9060200160405180910390a150565b5f336106c1858285610fd1565b6106cc858585611043565b506001949350505050565b5f336104828185856106e98383610acc565b6106f39190611487565b610df0565b610702338261111f565b50565b61070d611247565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b610737611247565b6001600160a01b03811661078d5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f7420626520746865207a65726f206164647265737300000000000060448201526064016104d2565b600980546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6107bd611247565b6107c65f6112a1565b565b6107d3823383610fd1565b6107dd828261111f565b5050565b6060600480546103f49061143b565b5f33816107fd8286610acc565b90508381101561085d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d2565b6106cc8286868403610df0565b600a545f906001600160a01b03163314806108925750600a546001600160a01b038481169116145b8061089f57506006548211155b6108eb5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178207472616e73616374696f6e20616d6f756e74000060448201526064016104d2565b5f826729a2241af62c00006108ff60025490565b1180156109175750600a546001600160a01b03163314155b80156109315750600a546001600160a01b03868116911614155b1561095f5760075460649061094690866114de565b61095091906114f5565b915061095c8285611514565b90505b61096a338683611043565b81156106cc576106cc338361111f565b610982611247565b6009805460ff19811660ff90911615179055565b6009546040516370a0823160e01b81526001600160a01b0383811660048301525f928392610100909104909116906370a0823190602401602060405180830381865afa1580156109e8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0c9190611527565b9392505050565b600a546001600160a01b0316331480610a3657506005546001600160a01b031633145b610a525760405162461bcd60e51b81526004016104d29061149a565b60085482610a5f60025490565b610a699190611487565b1115610ac25760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f74206d696e74206d6f7265207468616e20746f74616c20737570706044820152616c7960f01b60648201526084016104d2565b6107dd8183610f14565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6009546040516370a0823160e01b81523360048201525f9161010090046001600160a01b0316906370a0823190602401602060405180830381865afa158015610b41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b659190611527565b905081811015610bae5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016104d2565b600954604051636eb1769f60e11b81523360048201523060248201525f9161010090046001600160a01b03169063dd62ed3e90604401602060405180830381865afa158015610bff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c239190611527565b905082811015610c6e5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b60448201526064016104d2565b6009546040516323b872dd60e01b81523360048201525f6024820152604481018590526101009091046001600160a01b0316906323b872dd906064016020604051808303815f875af1158015610cc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cea919061153e565b50505050565b610cf8611247565b6001600160a01b038116610d5d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d2565b610702816112a1565b600a546001600160a01b03163314610d905760405162461bcd60e51b81526004016104d29061149a565b6063811115610deb5760405162461bcd60e51b815260206004820152602160248201527f5461782070657263656e746167652063616e6e6f7420657863656564203130306044820152602560f81b60648201526084016104d2565b600755565b6001600160a01b038316610e525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d2565b6001600160a01b038216610eb35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d2565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038216610f6a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d2565b8060025f828254610f7b9190611487565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b5f610fdc8484610acc565b90505f198114610cea57818110156110365760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d2565b610cea8484848403610df0565b6001600160a01b0383165f90815260208190526040902054818110156110ba5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d2565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610cea565b6001600160a01b03821661117f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d2565b6001600160a01b0382165f90815260208190526040902054818110156111f25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d2565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610f07565b6005546001600160a01b031633146107c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d2565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6020808352835180828501525f5b8181101561131d57858101830151858201604001528201611301565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611353575f80fd5b919050565b5f8060408385031215611369575f80fd5b6113728361133d565b946020939093013593505050565b5f60208284031215611390575f80fd5b5035919050565b5f805f606084860312156113a9575f80fd5b6113b28461133d565b92506113c06020850161133d565b9150604084013590509250925092565b5f602082840312156113e0575f80fd5b610a0c8261133d565b5f80604083850312156113fa575f80fd5b8235915061140a6020840161133d565b90509250929050565b5f8060408385031215611424575f80fd5b61142d8361133d565b915061140a6020840161133d565b600181811c9082168061144f57607f821691505b60208210810361146d57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561048857610488611473565b60208082526024908201527f4f6e6c792074726561737572792077616c6c65742063616e206368616e6765206040820152637468697360e01b606082015260800190565b808202811582820484141761048857610488611473565b5f8261150f57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561048857610488611473565b5f60208284031215611537575f80fd5b5051919050565b5f6020828403121561154e575f80fd5b81518015158114610a0c575f80fdfea2646970667358221220d74a4ca51413e311d004f49964fca370c7e9ec69a8849fbffc2e3432f5cea22f64736f6c63430008150033

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610187575f3560e01c806379cc6790116100d9578063c4ae316811610093578063dd62ed3e1161006e578063dd62ed3e14610399578063f28dcabe146103ac578063f2fde38b146103bf578063fc06b26a146103d2575f80fd5b8063c4ae31681461036b578063c963114d14610373578063d52c57e014610386575f80fd5b806379cc6790146102a457806389035730146102b75780638da5cb5b1461032257806395d89b411461033d578063a457c2d714610345578063a9059cbb14610358575f80fd5b8063313ce56711610144578063537c1ac71161011f578063537c1ac71461024e57806364be293c1461026157806370a0823114610274578063715018a61461029c575f80fd5b8063313ce56714610219578063395093511461022857806342966c681461023b575f80fd5b806306fdde031461018b578063095ea7b3146101a957806311104e94146101cc57806318160ddd146101e15780631e293c10146101f357806323b872dd14610206575b5f80fd5b6101936103e5565b6040516101a091906112f2565b60405180910390f35b6101bc6101b7366004611358565b610475565b60405190151581526020016101a0565b6101df6101da366004611380565b61048e565b005b6002545b6040519081526020016101a0565b6101df610201366004611380565b61064f565b6101bc610214366004611397565b6106b4565b604051601281526020016101a0565b6101bc610236366004611358565b6106d7565b6101df610249366004611380565b6106f8565b6101df61025c3660046113d0565b610705565b6101df61026f3660046113d0565b61072f565b6101e56102823660046113d0565b6001600160a01b03165f9081526020819052604090205490565b6101df6107b5565b6101df6102b2366004611358565b6107c8565b600654600754600854600954600a546102e79493929160ff8116916001600160a01b036101009092048216911686565b60408051968752602087019590955293850192909252151560608401526001600160a01b0390811660808401521660a082015260c0016101a0565b6005546040516001600160a01b0390911681526020016101a0565b6101936107e1565b6101bc610353366004611358565b6107f0565b6101bc610366366004611358565b61086a565b6101df61097a565b6101e56103813660046113d0565b610996565b6101df6103943660046113e9565b610a13565b6101e56103a7366004611413565b610acc565b6101df6103ba366004611380565b610af6565b6101df6103cd3660046113d0565b610cf0565b6101df6103e0366004611380565b610d66565b6060600380546103f49061143b565b80601f01602080910402602001604051908101604052809291908181526020018280546104209061143b565b801561046b5780601f106104425761010080835404028352916020019161046b565b820191905f5260205f20905b81548152906001019060200180831161044e57829003601f168201915b5050505050905090565b5f33610482818585610df0565b60019150505b92915050565b60095460ff16156104db5760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b60448201526064015b60405180910390fd5b5f81116105415760405162461bcd60e51b815260206004820152602e60248201527f4d696e7420616e64206275726e20616d6f756e74206d7573742062652067726560448201526d61746572207468616e207a65726f60901b60648201526084016104d2565b5f61054b33610996565b9050818110156105945760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016104d2565b5f8261059f60025490565b6105a99190611487565b6008549091508111156105fe5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74206d696e74206d6f7265207468616e206d617820737570706c7960448201526064016104d2565b61060783610af6565b6106113384610f14565b60408051338152602081018590527fdc3acc655aa78b8c7bdef4800c829aeece68a8bef2e35e781474df18416f31ad910160405180910390a1505050565b600a546001600160a01b031633146106795760405162461bcd60e51b81526004016104d29061149a565b60068190556040518181527f6486a003009c3c4b5494fffabcd2fd539e325727abba421aded6616d35e4eaef9060200160405180910390a150565b5f336106c1858285610fd1565b6106cc858585611043565b506001949350505050565b5f336104828185856106e98383610acc565b6106f39190611487565b610df0565b610702338261111f565b50565b61070d611247565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b610737611247565b6001600160a01b03811661078d5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f7420626520746865207a65726f206164647265737300000000000060448201526064016104d2565b600980546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6107bd611247565b6107c65f6112a1565b565b6107d3823383610fd1565b6107dd828261111f565b5050565b6060600480546103f49061143b565b5f33816107fd8286610acc565b90508381101561085d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d2565b6106cc8286868403610df0565b600a545f906001600160a01b03163314806108925750600a546001600160a01b038481169116145b8061089f57506006548211155b6108eb5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178207472616e73616374696f6e20616d6f756e74000060448201526064016104d2565b5f826729a2241af62c00006108ff60025490565b1180156109175750600a546001600160a01b03163314155b80156109315750600a546001600160a01b03868116911614155b1561095f5760075460649061094690866114de565b61095091906114f5565b915061095c8285611514565b90505b61096a338683611043565b81156106cc576106cc338361111f565b610982611247565b6009805460ff19811660ff90911615179055565b6009546040516370a0823160e01b81526001600160a01b0383811660048301525f928392610100909104909116906370a0823190602401602060405180830381865afa1580156109e8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0c9190611527565b9392505050565b600a546001600160a01b0316331480610a3657506005546001600160a01b031633145b610a525760405162461bcd60e51b81526004016104d29061149a565b60085482610a5f60025490565b610a699190611487565b1115610ac25760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f74206d696e74206d6f7265207468616e20746f74616c20737570706044820152616c7960f01b60648201526084016104d2565b6107dd8183610f14565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6009546040516370a0823160e01b81523360048201525f9161010090046001600160a01b0316906370a0823190602401602060405180830381865afa158015610b41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b659190611527565b905081811015610bae5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016104d2565b600954604051636eb1769f60e11b81523360048201523060248201525f9161010090046001600160a01b03169063dd62ed3e90604401602060405180830381865afa158015610bff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c239190611527565b905082811015610c6e5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b60448201526064016104d2565b6009546040516323b872dd60e01b81523360048201525f6024820152604481018590526101009091046001600160a01b0316906323b872dd906064016020604051808303815f875af1158015610cc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cea919061153e565b50505050565b610cf8611247565b6001600160a01b038116610d5d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d2565b610702816112a1565b600a546001600160a01b03163314610d905760405162461bcd60e51b81526004016104d29061149a565b6063811115610deb5760405162461bcd60e51b815260206004820152602160248201527f5461782070657263656e746167652063616e6e6f7420657863656564203130306044820152602560f81b60648201526084016104d2565b600755565b6001600160a01b038316610e525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d2565b6001600160a01b038216610eb35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d2565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038216610f6a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d2565b8060025f828254610f7b9190611487565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b5f610fdc8484610acc565b90505f198114610cea57818110156110365760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d2565b610cea8484848403610df0565b6001600160a01b0383165f90815260208190526040902054818110156110ba5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d2565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610cea565b6001600160a01b03821661117f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d2565b6001600160a01b0382165f90815260208190526040902054818110156111f25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d2565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610f07565b6005546001600160a01b031633146107c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d2565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6020808352835180828501525f5b8181101561131d57858101830151858201604001528201611301565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611353575f80fd5b919050565b5f8060408385031215611369575f80fd5b6113728361133d565b946020939093013593505050565b5f60208284031215611390575f80fd5b5035919050565b5f805f606084860312156113a9575f80fd5b6113b28461133d565b92506113c06020850161133d565b9150604084013590509250925092565b5f602082840312156113e0575f80fd5b610a0c8261133d565b5f80604083850312156113fa575f80fd5b8235915061140a6020840161133d565b90509250929050565b5f8060408385031215611424575f80fd5b61142d8361133d565b915061140a6020840161133d565b600181811c9082168061144f57607f821691505b60208210810361146d57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561048857610488611473565b60208082526024908201527f4f6e6c792074726561737572792077616c6c65742063616e206368616e6765206040820152637468697360e01b606082015260800190565b808202811582820484141761048857610488611473565b5f8261150f57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561048857610488611473565b5f60208284031215611537575f80fd5b5051919050565b5f6020828403121561154e575f80fd5b81518015158114610a0c575f80fdfea2646970667358221220d74a4ca51413e311d004f49964fca370c7e9ec69a8849fbffc2e3432f5cea22f64736f6c63430008150033

Deployed Bytecode Sourcemap

21964:5797:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6951:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9368:226;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;9368:226:0;1004:187:1;24004:1075:0;;;;;;:::i;:::-;;:::i;:::-;;8071:108;8159:12;;8071:108;;;1527:25:1;;;1515:2;1500:18;8071:108:0;1381:177:1;27028:304:0;;;;;;:::i;:::-;;:::i;10174:295::-;;;;;;:::i;:::-;;:::i;7913:93::-;;;7996:2;2038:36:1;;2026:2;2011:18;7913:93:0;1896:184:1;10878:263:0;;;;;;:::i;:::-;;:::i;21383:91::-;;;;;;:::i;:::-;;:::i;26443:156::-;;;;;;:::i;:::-;;:::i;26276:159::-;;;;;;:::i;:::-;;:::i;8242:143::-;;;;;;:::i;:::-;-1:-1:-1;;;;;8359:18:0;8332:7;8359:18;;;;;;;;;;;;8242:143;20150:103;;;:::i;21793:164::-;;;;;;:::i;:::-;;:::i;22356:355::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22356:355:0;;;;;;;;;;;;;;2557:25:1;;;2613:2;2598:18;;2591:34;;;;2641:18;;;2634:34;;;;2711:14;2704:22;2699:2;2684:18;;2677:50;-1:-1:-1;;;;;2802:15:1;;;2796:3;2781:19;;2774:44;2855:15;2754:3;2834:19;;2827:44;2544:3;2529:19;22356:355:0;2276:601:1;19509:87:0;19582:6;;19509:87;;-1:-1:-1;;;;;19582:6:0;;;3028:51:1;;3016:2;3001:18;19509:87:0;2882:203:1;7170:104:0;;;:::i;11644:498::-;;;;;;:::i;:::-;;:::i;23036:937::-;;;;;;:::i;:::-;;:::i;26171:97::-;;;:::i;25160:178::-;;;;;;:::i;:::-;;:::i;27340:418::-;;;;;;:::i;:::-;;:::i;8872:176::-;;;;;;:::i;:::-;;:::i;25346:673::-;;;;;;:::i;:::-;;:::i;20408:238::-;;;;;;:::i;:::-;;:::i;26641:379::-;;;;;;:::i;:::-;;:::i;6951:100::-;7005:13;7038:5;7031:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6951:100;:::o;9368:226::-;9476:4;4841:10;9532:32;4841:10;9548:7;9557:6;9532:8;:32::i;:::-;9582:4;9575:11;;;9368:226;;;;;:::o;24004:1075::-;26072:17;;;;26071:18;26063:49;;;;-1:-1:-1;;;26063:49:0;;4201:2:1;26063:49:0;;;4183:21:1;4240:2;4220:18;;;4213:30;-1:-1:-1;;;4259:18:1;;;4252:48;4317:18;;26063:49:0;;;;;;;;;24193:1:::1;24172:18;:22;24150:118;;;::::0;-1:-1:-1;;;24150:118:0;;4548:2:1;24150:118:0::1;::::0;::::1;4530:21:1::0;4587:2;4567:18;;;4560:30;4626:34;4606:18;;;4599:62;-1:-1:-1;;;4677:18:1;;;4670:44;4731:19;;24150:118:0::1;4346:410:1::0;24150:118:0::1;24347:21;24371:27;24387:10;24371:15;:27::i;:::-;24347:51;;24434:18;24417:13;:35;;24409:68;;;::::0;-1:-1:-1;;;24409:68:0;;4963:2:1;24409:68:0::1;::::0;::::1;4945:21:1::0;5002:2;4982:18;;;4975:30;-1:-1:-1;;;5021:18:1;;;5014:50;5081:18;;24409:68:0::1;4761:344:1::0;24409:68:0::1;24624:22;24665:18;24649:13;8159:12:::0;;;8071:108;24649:13:::1;:34;;;;:::i;:::-;24734:20:::0;;24624:59;;-1:-1:-1;24716:38:0;::::1;;24694:120;;;::::0;-1:-1:-1;;;24694:120:0;;5574:2:1;24694:120:0::1;::::0;::::1;5556:21:1::0;;;5593:18;;;5586:30;5652:34;5632:18;;;5625:62;5704:18;;24694:120:0::1;5372:356:1::0;24694:120:0::1;24877:36;24894:18;24877:16;:36::i;:::-;24968:37;24974:10;24986:18;24968:5;:37::i;:::-;25023:48;::::0;;25040:10:::1;5907:51:1::0;;5989:2;5974:18;;5967:34;;;25023:48:0::1;::::0;5880:18:1;25023:48:0::1;;;;;;;24074:1005;;24004:1075:::0;:::o;27028:304::-;27133:25;;-1:-1:-1;;;;;27133:25:0;27119:10;:39;27097:125;;;;-1:-1:-1;;;27097:125:0;;;;;;;:::i;:::-;27233:10;:40;;;27289:35;;1527:25:1;;;27289:35:0;;1515:2:1;1500:18;27289:35:0;;;;;;;27028:304;:::o;10174:295::-;10305:4;4841:10;10363:38;10379:4;4841:10;10394:6;10363:15;:38::i;:::-;10412:27;10422:4;10428:2;10432:6;10412:9;:27::i;:::-;-1:-1:-1;10457:4:0;;10174:295;-1:-1:-1;;;;10174:295:0:o;10878:263::-;10991:4;4841:10;11047:64;4841:10;11063:7;11100:10;11072:25;4841:10;11063:7;11072:9;:25::i;:::-;:38;;;;:::i;:::-;11047:8;:64::i;21383:91::-;21439:27;4841:10;21459:6;21439:5;:27::i;:::-;21383:91;:::o;26443:156::-;19395:13;:11;:13::i;:::-;26546:25;:45;;-1:-1:-1;;;;;;26546:45:0::1;-1:-1:-1::0;;;;;26546:45:0;;;::::1;::::0;;;::::1;::::0;;26443:156::o;26276:159::-;19395:13;:11;:13::i;:::-;-1:-1:-1;;;;;26347:16:0;::::1;26339:55;;;::::0;-1:-1:-1;;;26339:55:0;;6619:2:1;26339:55:0::1;::::0;::::1;6601:21:1::0;6658:2;6638:18;;;6631:30;6697:28;6677:18;;;6670:56;6743:18;;26339:55:0::1;6417:350:1::0;26339:55:0::1;26405:17:::0;:22;;-1:-1:-1;;;;;26405:22:0;;::::1;;;-1:-1:-1::0;;;;;;26405:22:0;;::::1;::::0;;;::::1;::::0;;26276:159::o;20150:103::-;19395:13;:11;:13::i;:::-;20215:30:::1;20242:1;20215:18;:30::i;:::-;20150:103::o:0;21793:164::-;21870:46;21886:7;4841:10;21909:6;21870:15;:46::i;:::-;21927:22;21933:7;21942:6;21927:5;:22::i;:::-;21793:164;;:::o;7170:104::-;7226:13;7259:7;7252:14;;;;;:::i;11644:498::-;11762:4;4841:10;11762:4;11845:25;4841:10;11862:7;11845:9;:25::i;:::-;11818:52;;11923:15;11903:16;:35;;11881:122;;;;-1:-1:-1;;;11881:122:0;;6974:2:1;11881:122:0;;;6956:21:1;7013:2;6993:18;;;6986:30;7052:34;7032:18;;;7025:62;-1:-1:-1;;;7103:18:1;;;7096:35;7148:19;;11881:122:0;6772:401:1;11881:122:0;12039:60;12048:5;12055:7;12083:15;12064:16;:34;12039:8;:60::i;23036:937::-;23192:25;;23139:4;;-1:-1:-1;;;;;23192:25:0;23178:10;:39;;:98;;-1:-1:-1;23251:25:0;;-1:-1:-1;;;;;23238:38:0;;;23251:25;;23238:38;23178:98;:160;;;-1:-1:-1;23307:10:0;:31;23297:41;;;23178:160;23156:240;;;;-1:-1:-1;;;23156:240:0;;7380:2:1;23156:240:0;;;7362:21:1;7419:2;7399:18;;;7392:30;7458:32;7438:18;;;7431:60;7508:18;;23156:240:0;7178:354:1;23156:240:0;23409:18;23467:6;22067:7;23504:13;8159:12;;;8071:108;23504:13;:29;:85;;;;-1:-1:-1;23564:25:0;;-1:-1:-1;;;;;23564:25:0;23550:10;:39;;23504:85;:140;;;;-1:-1:-1;23619:25:0;;-1:-1:-1;;;;;23606:38:0;;;23619:25;;23606:38;;23504:140;23486:303;;;23694:25;;23723:3;;23685:34;;:6;:34;:::i;:::-;23684:42;;;;:::i;:::-;23671:55;-1:-1:-1;23758:19:0;23671:55;23758:6;:19;:::i;:::-;23741:36;;23486:303;23801:50;4841:10;23825:9;23836:14;23801:9;:50::i;:::-;23868:14;;23864:78;;23899:31;4841:10;23919;23899:5;:31::i;26171:97::-;19395:13;:11;:13::i;:::-;26243:17;;;-1:-1:-1;;26222:38:0;::::1;26243:17;::::0;;::::1;26242:18;26222:38;::::0;;26171:97::o;25160:178::-;25268:17;;25261:44;;-1:-1:-1;;;25261:44:0;;-1:-1:-1;;;;;3046:32:1;;;25261:44:0;;;3028:51:1;25223:7:0;;;;25268:17;;;;;;;;25261:35;;3001:18:1;;25261:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25243:62;25160:178;-1:-1:-1;;;25160:178:0:o;27340:418::-;27453:25;;-1:-1:-1;;;;;27453:25:0;27439:10;:39;;:64;;-1:-1:-1;19582:6:0;;-1:-1:-1;;;;;19582:6:0;27482:10;:21;27439:64;27417:150;;;;-1:-1:-1;;;27417:150:0;;;;;;;:::i;:::-;27630:20;;27616:10;27600:13;8159:12;;;8071:108;27600:13;:26;;;;:::i;:::-;:50;;27578:134;;;;-1:-1:-1;;;27578:134:0;;8456:2:1;27578:134:0;;;8438:21:1;8495:2;8475:18;;;8468:30;8534:34;8514:18;;;8507:62;-1:-1:-1;;;8585:18:1;;;8578:32;8627:19;;27578:134:0;8254:398:1;27578:134:0;27723:27;27729:8;27739:10;27723:5;:27::i;8872:176::-;-1:-1:-1;;;;;9013:18:0;;;8986:7;9013:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8872:176::o;25346:673::-;25484:17;;25478:46;;-1:-1:-1;;;25478:46:0;;25513:10;25478:46;;;3028:51:1;25454:21:0;;25484:17;;;-1:-1:-1;;;;;25484:17:0;;25478:34;;3001:18:1;;25478:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25454:70;;25560:6;25543:13;:23;;25535:56;;;;-1:-1:-1;;;25535:56:0;;4963:2:1;25535:56:0;;;4945:21:1;5002:2;4982:18;;;4975:30;-1:-1:-1;;;5021:18:1;;;5014:50;5081:18;;25535:56:0;4761:344:1;25535:56:0;25704:17;;25698:98;;-1:-1:-1;;;25698:98:0;;25747:10;25698:98;;;8869:34:1;25780:4:0;8919:18:1;;;8912:43;25678:17:0;;25704;;;-1:-1:-1;;;;;25704:17:0;;25698:34;;8804:18:1;;25698:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25678:118;;25828:6;25815:9;:19;;25807:54;;;;-1:-1:-1;;;25807:54:0;;9168:2:1;25807:54:0;;;9150:21:1;9207:2;9187:18;;;9180:30;-1:-1:-1;;;9226:18:1;;;9219:52;9288:18;;25807:54:0;8966:346:1;25807:54:0;25948:17;;25942:69;;-1:-1:-1;;;25942:69:0;;25980:10;25942:69;;;9557:34:1;26000:1:0;9607:18:1;;;9600:43;9659:18;;;9652:34;;;25948:17:0;;;;-1:-1:-1;;;;;25948:17:0;;25942:37;;9492:18:1;;25942:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25395:624;;25346:673;:::o;20408:238::-;19395:13;:11;:13::i;:::-;-1:-1:-1;;;;;20511:22:0;::::1;20489:110;;;::::0;-1:-1:-1;;;20489:110:0;;10181:2:1;20489:110:0::1;::::0;::::1;10163:21:1::0;10220:2;10200:18;;;10193:30;10259:34;10239:18;;;10232:62;-1:-1:-1;;;10310:18:1;;;10303:36;10356:19;;20489:110:0::1;9979:402:1::0;20489:110:0::1;20610:28;20629:8;20610:18;:28::i;26641:379::-:0;26746:25;;-1:-1:-1;;;;;26746:25:0;26732:10;:39;26710:125;;;;-1:-1:-1;;;26710:125:0;;;;;;;:::i;:::-;22123:2;26868:13;:31;;26846:114;;;;-1:-1:-1;;;26846:114:0;;10588:2:1;26846:114:0;;;10570:21:1;10627:2;10607:18;;;10600:30;10666:34;10646:18;;;10639:62;-1:-1:-1;;;10717:18:1;;;10710:31;10758:19;;26846:114:0;10386:397:1;26846:114:0;26971:25;:41;26641:379::o;15774:380::-;-1:-1:-1;;;;;15910:19:0;;15902:68;;;;-1:-1:-1;;;15902:68:0;;10990:2:1;15902:68:0;;;10972:21:1;11029:2;11009:18;;;11002:30;11068:34;11048:18;;;11041:62;-1:-1:-1;;;11119:18:1;;;11112:34;11163:19;;15902:68:0;10788:400:1;15902:68:0;-1:-1:-1;;;;;15989:21:0;;15981:68;;;;-1:-1:-1;;;15981:68:0;;11395:2:1;15981:68:0;;;11377:21:1;11434:2;11414:18;;;11407:30;11473:34;11453:18;;;11446:62;-1:-1:-1;;;11524:18:1;;;11517:32;11566:19;;15981:68:0;11193:398:1;15981:68:0;-1:-1:-1;;;;;16062:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16114:32;;1527:25:1;;;16114:32:0;;1500:18:1;16114:32:0;;;;;;;;15774:380;;;:::o;13780:548::-;-1:-1:-1;;;;;13864:21:0;;13856:65;;;;-1:-1:-1;;;13856:65:0;;11798:2:1;13856:65:0;;;11780:21:1;11837:2;11817:18;;;11810:30;11876:33;11856:18;;;11849:61;11927:18;;13856:65:0;11596:355:1;13856:65:0;14012:6;13996:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;14167:18:0;;:9;:18;;;;;;;;;;;:28;;;;;;14222:37;1527:25:1;;;14222:37:0;;1500:18:1;14222:37:0;;;;;;;21793:164;;:::o;16445:502::-;16580:24;16607:25;16617:5;16624:7;16607:9;:25::i;:::-;16580:52;;-1:-1:-1;;16647:16:0;:37;16643:297;;16747:6;16727:16;:26;;16701:117;;;;-1:-1:-1;;;16701:117:0;;12158:2:1;16701:117:0;;;12140:21:1;12197:2;12177:18;;;12170:30;12236:31;12216:18;;;12209:59;12285:18;;16701:117:0;11956:353:1;16701:117:0;16862:51;16871:5;16878:7;16906:6;16887:16;:25;16862:8;:51::i;12612:881::-;-1:-1:-1;;;;;12968:15:0;;12946:19;12968:15;;;;;;;;;;;13016:21;;;;12994:109;;;;-1:-1:-1;;;12994:109:0;;12516:2:1;12994:109:0;;;12498:21:1;12555:2;12535:18;;;12528:30;12594:34;12574:18;;;12567:62;-1:-1:-1;;;12645:18:1;;;12638:36;12691:19;;12994:109:0;12314:402:1;12994:109:0;-1:-1:-1;;;;;13139:15:0;;;:9;:15;;;;;;;;;;;13157:20;;;13139:38;;13357:13;;;;;;;;;;:23;;;;;;13409:26;;1527:25:1;;;13357:13:0;;13409:26;;1500:18:1;13409:26:0;;;;;;;13448:37;14661:675;;-1:-1:-1;;;;;14745:21:0;;14737:67;;;;-1:-1:-1;;;14737:67:0;;12923:2:1;14737:67:0;;;12905:21:1;12962:2;12942:18;;;12935:30;13001:34;12981:18;;;12974:62;-1:-1:-1;;;13052:18:1;;;13045:31;13093:19;;14737:67:0;12721:397:1;14737:67:0;-1:-1:-1;;;;;14904:18:0;;14879:22;14904:18;;;;;;;;;;;14941:24;;;;14933:71;;;;-1:-1:-1;;;14933:71:0;;13325:2:1;14933:71:0;;;13307:21:1;13364:2;13344:18;;;13337:30;13403:34;13383:18;;;13376:62;-1:-1:-1;;;13454:18:1;;;13447:32;13496:19;;14933:71:0;13123:398:1;14933:71:0;-1:-1:-1;;;;;15040:18:0;;:9;:18;;;;;;;;;;;15061:23;;;15040:44;;15179:12;:22;;;;;;;15230:37;1527:25:1;;;15040:9:0;;:18;15230:37;;1500:18:1;15230:37:0;1381:177:1;19674:132:0;19582:6;;-1:-1:-1;;;;;19582:6:0;4841:10;19738:23;19730:68;;;;-1:-1:-1;;;19730:68:0;;13728:2:1;19730:68:0;;;13710:21:1;;;13747:18;;;13740:30;13806:34;13786:18;;;13779:62;13858:18;;19730:68:0;13526:356:1;20806:191:0;20899:6;;;-1:-1:-1;;;;;20916:17:0;;;-1:-1:-1;;;;;;20916:17:0;;;;;;;20949:40;;20899:6;;;20916:17;20899:6;;20949:40;;20880:16;;20949:40;20869:128;20806:191;:::o;14:548: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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1196:180::-;1255:6;1308:2;1296:9;1287:7;1283:23;1279:32;1276:52;;;1324:1;1321;1314:12;1276:52;-1:-1:-1;1347:23:1;;1196:180;-1:-1:-1;1196:180:1:o;1563:328::-;1640:6;1648;1656;1709:2;1697:9;1688:7;1684:23;1680:32;1677:52;;;1725:1;1722;1715:12;1677:52;1748:29;1767:9;1748:29;:::i;:::-;1738:39;;1796:38;1830:2;1819:9;1815:18;1796:38;:::i;:::-;1786:48;;1881:2;1870:9;1866:18;1853:32;1843:42;;1563:328;;;;;:::o;2085:186::-;2144:6;2197:2;2185:9;2176:7;2172:23;2168:32;2165:52;;;2213:1;2210;2203:12;2165:52;2236:29;2255:9;2236:29;:::i;3090:254::-;3158:6;3166;3219:2;3207:9;3198:7;3194:23;3190:32;3187:52;;;3235:1;3232;3225:12;3187:52;3271:9;3258:23;3248:33;;3300:38;3334:2;3323:9;3319:18;3300:38;:::i;:::-;3290:48;;3090:254;;;;;:::o;3349:260::-;3417:6;3425;3478:2;3466:9;3457:7;3453:23;3449:32;3446:52;;;3494:1;3491;3484:12;3446:52;3517:29;3536:9;3517:29;:::i;:::-;3507:39;;3565:38;3599:2;3588:9;3584:18;3565:38;:::i;3614:380::-;3693:1;3689:12;;;;3736;;;3757:61;;3811:4;3803:6;3799:17;3789:27;;3757:61;3864:2;3856:6;3853:14;3833:18;3830:38;3827:161;;3910:10;3905:3;3901:20;3898:1;3891:31;3945:4;3942:1;3935:15;3973:4;3970:1;3963:15;3827:161;;3614:380;;;:::o;5110:127::-;5171:10;5166:3;5162:20;5159:1;5152:31;5202:4;5199:1;5192:15;5226:4;5223:1;5216:15;5242:125;5307:9;;;5328:10;;;5325:36;;;5341:18;;:::i;6012:400::-;6214:2;6196:21;;;6253:2;6233:18;;;6226:30;6292:34;6287:2;6272:18;;6265:62;-1:-1:-1;;;6358:2:1;6343:18;;6336:34;6402:3;6387:19;;6012:400::o;7537:168::-;7610:9;;;7641;;7658:15;;;7652:22;;7638:37;7628:71;;7679:18;;:::i;7710:217::-;7750:1;7776;7766:132;;7820:10;7815:3;7811:20;7808:1;7801:31;7855:4;7852:1;7845:15;7883:4;7880:1;7873:15;7766:132;-1:-1:-1;7912:9:1;;7710:217::o;7932:128::-;7999:9;;;8020:11;;;8017:37;;;8034:18;;:::i;8065:184::-;8135:6;8188:2;8176:9;8167:7;8163:23;8159:32;8156:52;;;8204:1;8201;8194:12;8156:52;-1:-1:-1;8227:16:1;;8065:184;-1:-1:-1;8065:184:1:o;9697:277::-;9764:6;9817:2;9805:9;9796:7;9792:23;9788:32;9785:52;;;9833:1;9830;9823:12;9785:52;9865:9;9859:16;9918:5;9911:13;9904:21;9897:5;9894:32;9884:60;;9940:1;9937;9930:12

Swarm Source

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