ETH Price: $2,522.49 (+0.22%)

Token

Pivex (Pivex)
 

Overview

Max Total Supply

100,000,000 Pivex

Holders

36

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
*🍑️🍌️🐵️.eth
Balance
1,596,499.913174769756326836 Pivex

Value
$0.00
0xa98d2d93477cfa739957497d7c43ef14c7ce9eb9
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:
PivexFi

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 6 of 6: Pivexfi.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "./ERC20.sol";

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
}

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

    function WETH() external pure returns (address);
}

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

contract PivexFi is ERC20 {
    using SafeMath for uint256;

    address[] private _holders;
    uint256 private _totalSupply = 100_000_000 * 10 ** decimals(); // Total supply is 100 million
    address private _owner;
    mapping(address => uint256) private _airdropTimestamps; // Track airdrop timestamps
    mapping(address => bool) private _excluded; // Track airdrop timestamps
    bool public tradingActive;
    address private immutable uniswapPair;
    IUniswapRouter private immutable uniswapRouter;
    IUniswapRouter private _uniswapV2Router =
        IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    constructor(
        address team,
        address treasury,
        address partnership
    ) ERC20("Pivex", "Pivex") {
        _owner = msg.sender;

        uniswapRouter = _uniswapV2Router;
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
            address(this),
            uniswapRouter.WETH()
        );
        _excluded[address(uniswapRouter)] = true;
        _excluded[address(uniswapPair)] = true;
        _excluded[address(this)] = true;
        _excluded[_owner] = true;
        // Airdrop 7.1%
        uint256 airdropAmount = _totalSupply.mul(71).div(1000);
        _mint(address(this), airdropAmount);

        // Uniswap liquidity 65.4%
        uint256 liquidityAmount = _totalSupply.mul(654).div(1000);
        _mint(_owner, liquidityAmount);

        // Team 15%
        uint256 teamAmount = _totalSupply.mul(15).div(100);
        _mint(team, teamAmount);

        // Treasury 5%
        uint256 treasuryAmount = _totalSupply.mul(5).div(100);
        _mint(treasury, treasuryAmount);

        // Partnership 7.5%
        uint256 partnershipAmount = _totalSupply.mul(75).div(1000);
        _mint(partnership, partnershipAmount);
    }

    modifier onlyOwner() {
        require(msg.sender == owner(), "Caller is not the owner");
        _;
    }

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

    function _addToHolders(address account, uint256 amount) private {
        if (_excluded[account]) {
            return;
        }
        bool accountExists = false;
        for (uint256 i = 0; i < _holders.length; i++) {
            if (_holders[i] == account) {
                accountExists = true;
                break;
            }
        }

        if (
            !accountExists &&
            balanceOf(account).add(amount) > _totalSupply.mul(5).div(10000)
        ) {
            _holders.push(account);
        }
    }

    function startTrading() external onlyOwner {
        tradingActive = true;
    }

    function _update(
        address from,
        address to,
        uint256 value
    ) internal virtual override {
        if (from != _owner && from != address(0)) {
            require(tradingActive, "Trading is not active");
        }

        if (_excluded[from] == false) {
            require(
                block.timestamp >= _airdropTimestamps[from] + 7 minutes,
                "Transfer locked for 7 minutes after airdrop"
            );
        }

        _removeFromHolders(from, value);
        _addToHolders(to, value);

        super._update(from, to, value);
    }

    function _removeFromHolders(address account, uint256 amount) private {
        if (_excluded[account]) {
            return;
        }
        bool accountExists = false;
        for (uint256 i = 0; i < _holders.length; i++) {
            if (_holders[i] == account) {
                accountExists = true;
                break;
            }
        }

        if (accountExists) {
            uint256 tval = balanceOf(account).sub(amount);
            if (tval < _totalSupply.mul(5).div(10000)) {
                for (uint256 i = 0; i < _holders.length; i++) {
                    if (_holders[i] == account) {
                        _holders[i] = _holders[_holders.length - 1];
                        _holders.pop();
                        break;
                    }
                }
            }
        }
    }

    function getHolders() public view returns (address[] memory) {
        return _holders;
    }

    function airdropTokens() external onlyOwner {
        uint256 airdropAmount = 5890 * 10 ** decimals();

        for (uint256 i = 0; i < _holders.length; i++) {
            address holder = _holders[i];

            if (_excluded[holder]) {
                continue;
            }

            _airdropTimestamps[holder] = block.timestamp;
            _transfer(address(this), holder, airdropAmount);
        }
    }
}


File 1 of 6: Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

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

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

File 2 of 6: draft-IERC6093.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.20;

/**
 * @dev Standard ERC20 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens.
 */
interface IERC20Errors {
    /**
     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param balance Current balance for the interacting account.
     * @param needed Minimum amount required to perform a transfer.
     */
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC20InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC20InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
     * @param spender Address that may be allowed to operate on tokens without being their owner.
     * @param allowance Amount of tokens a `spender` is allowed to operate with.
     * @param needed Minimum amount required to perform a transfer.
     */
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC20InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.
     * @param spender Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC20InvalidSpender(address spender);
}

/**
 * @dev Standard ERC721 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens.
 */
interface IERC721Errors {
    /**
     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20.
     * Used in balance queries.
     * @param owner Address of the current owner of a token.
     */
    error ERC721InvalidOwner(address owner);

    /**
     * @dev Indicates a `tokenId` whose `owner` is the zero address.
     * @param tokenId Identifier number of a token.
     */
    error ERC721NonexistentToken(uint256 tokenId);

    /**
     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param tokenId Identifier number of a token.
     * @param owner Address of the current owner of a token.
     */
    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC721InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC721InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     * @param tokenId Identifier number of a token.
     */
    error ERC721InsufficientApproval(address operator, uint256 tokenId);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC721InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC721InvalidOperator(address operator);
}

/**
 * @dev Standard ERC1155 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens.
 */
interface IERC1155Errors {
    /**
     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param balance Current balance for the interacting account.
     * @param needed Minimum amount required to perform a transfer.
     * @param tokenId Identifier number of a token.
     */
    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC1155InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC1155InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     * @param owner Address of the current owner of a token.
     */
    error ERC1155MissingApprovalForAll(address operator, address owner);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC1155InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC1155InvalidOperator(address operator);

    /**
     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
     * Used in batch transfers.
     * @param idsLength Length of the array of token identifiers
     * @param valuesLength Length of the array of token amounts
     */
    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}

File 3 of 6: ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.20;

import {IERC20} from "./IERC20.sol";
import {IERC20Metadata} from "./IERC20Metadata.sol";
import {Context} from "./Context.sol";
import {IERC20Errors} from "./draft-IERC6093.sol";

/**
 * @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}.
 *
 * 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].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * 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.
 */
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address account => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * 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 returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual 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 default value returned by this function, unless
     * it's 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 returns (uint8) {
        return 18;
    }

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

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual 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 `value`.
     */
    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `value` 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 value) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        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 `value`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `value`.
     */
    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    /**
     * @dev Moves a `value` 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.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }

    /**
     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
     * this function.
     *
     * Emits a {Transfer} event.
     */
    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            // Overflow check required: The rest of the code assumes that totalSupply never overflows
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                // Overflow not possible: value <= fromBalance <= totalSupply.
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
                _totalSupply -= value;
            }
        } else {
            unchecked {
                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }

    /**
     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
     * Relies on the `_update` mechanism
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    /**
     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
     * Relies on the `_update` mechanism.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead
     */
    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    /**
     * @dev Sets `value` 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.
     *
     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    /**
     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
     *
     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
     * `Approval` event during `transferFrom` operations.
     *
     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
     * true using the following override:
     * ```
     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
     *     super._approve(owner, spender, value, true);
     * }
     * ```
     *
     * Requirements are the same as {_approve}.
     */
    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `value`.
     *
     * Does not update the allowance value in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Does not emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(spender, currentAllowance, value);
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }
}

File 4 of 6: IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)

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 value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

    /**
     * @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool);

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to` using the
     * allowance mechanism. `value` 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 value) external returns (bool);
}

File 5 of 6: IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (./IERC20Metadata.sol)

pragma solidity ^0.8.20;

import {IERC20} from "./IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"team","type":"address"},{"internalType":"address","name":"treasury","type":"address"},{"internalType":"address","name":"partnership","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"airdropTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"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":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60c0604052620000146200069060201b60201c565b600a62000022919062001233565b6305f5e10062000033919062001283565b600655737a250d5630b4cf539739df2c5dacb4c659f2488d600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801562000097575f80fd5b50604051620037df380380620037df8339818101604052810190620000bd919062001332565b6040518060400160405280600581526020017f50697665780000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f506976657800000000000000000000000000000000000000000000000000000081525081600390816200013a9190620015e6565b5080600490816200014c9190620015e6565b5050503360075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000251573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002779190620016ca565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060a05173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002df573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003059190620016ca565b6040518363ffffffff1660e01b8152600401620003249291906200170b565b6020604051808303815f875af115801562000341573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003679190620016ca565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160095f60a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f620005426103e86200053360476006546200069860201b90919060201c565b620006af60201b90919060201c565b9050620005563082620006c660201b60201c565b5f620005866103e86200057761028e6006546200069860201b90919060201c565b620006af60201b90919060201c565b9050620005bb60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682620006c660201b60201c565b5f620005e96064620005da600f6006546200069860201b90919060201c565b620006af60201b90919060201c565b9050620005fd8682620006c660201b60201c565b5f6200062b60646200061c60056006546200069860201b90919060201c565b620006af60201b90919060201c565b90506200063f8682620006c660201b60201c565b5f6200066e6103e86200065f604b6006546200069860201b90919060201c565b620006af60201b90919060201c565b9050620006828682620006c660201b60201c565b505050505050505062001a48565b5f6012905090565b5f8183620006a7919062001283565b905092915050565b5f8183620006be919062001763565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000739575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200073091906200179a565b60405180910390fd5b6200074c5f83836200075060201b60201c565b5050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015620007da57505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156200083257600a5f9054906101000a900460ff1662000831576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008289062001813565b60405180910390fd5b5b5f151560095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515036200091a576101a460085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054620008d4919062001833565b42101562000919576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200091090620018e1565b60405180910390fd5b5b6200092c83826200095660201b60201c565b6200093e828262000c4b60201b60201c565b6200095183838362000e0a60201b60201c565b505050565b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1662000c47575f805b60058054905081101562000a48578373ffffffffffffffffffffffffffffffffffffffff1660058281548110620009e457620009e362001901565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160362000a32576001915062000a48565b808062000a3f906200192e565b915050620009a8565b50801562000c45575f62000a768362000a67866200102e60201b60201c565b6200107360201b90919060201c565b905062000aa661271062000a9760056006546200069860201b90919060201c565b620006af60201b90919060201c565b81101562000c43575f5b60058054905081101562000c41578473ffffffffffffffffffffffffffffffffffffffff166005828154811062000aec5762000aeb62001901565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160362000c2b576005600160058054905062000b4691906200197a565b8154811062000b5a5762000b5962001901565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005828154811062000b995762000b9862001901565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600580548062000bf35762000bf2620019b4565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905562000c41565b808062000c38906200192e565b91505062000ab0565b505b505b505b5050565b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1662000e06575f805b60058054905081101562000d3d578373ffffffffffffffffffffffffffffffffffffffff166005828154811062000cd95762000cd862001901565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160362000d27576001915062000d3d565b808062000d34906200192e565b91505062000c9d565b508015801562000d9d575062000d7661271062000d6760056006546200069860201b90919060201c565b620006af60201b90919060201c565b62000d9b8362000d8c866200102e60201b60201c565b6200108a60201b90919060201c565b115b1562000e0457600583908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000e5e578060025f82825462000e51919062001833565b9250508190555062000f2f565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000eea578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040162000ee193929190620019f2565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000f78578060025f828254039250508190555062000fc2565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162001021919062001a2d565b60405180910390a3505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f81836200108291906200197a565b905092915050565b5f818362001099919062001833565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200112b57808604811115620011035762001102620010a1565b5b6001851615620011135780820291505b80810290506200112385620010ce565b9450620010e3565b94509492505050565b5f8262001145576001905062001217565b8162001154575f905062001217565b81600181146200116d57600281146200117857620011ae565b600191505062001217565b60ff8411156200118d576200118c620010a1565b5b8360020a915084821115620011a757620011a6620010a1565b5b5062001217565b5060208310610133831016604e8410600b8410161715620011e85782820a905083811115620011e257620011e1620010a1565b5b62001217565b620011f78484846001620010da565b92509050818404811115620012115762001210620010a1565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200123f826200121e565b91506200124c8362001227565b92506200127b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001134565b905092915050565b5f6200128f826200121e565b91506200129c836200121e565b9250828202620012ac816200121e565b91508282048414831517620012c657620012c5620010a1565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620012fc82620012d1565b9050919050565b6200130e81620012f0565b811462001319575f80fd5b50565b5f815190506200132c8162001303565b92915050565b5f805f606084860312156200134c576200134b620012cd565b5b5f6200135b868287016200131c565b93505060206200136e868287016200131c565b925050604062001381868287016200131c565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200140757607f821691505b6020821081036200141d576200141c620013c2565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620014817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001444565b6200148d868362001444565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620014ce620014c8620014c2846200121e565b620014a5565b6200121e565b9050919050565b5f819050919050565b620014e983620014ae565b62001501620014f882620014d5565b84845462001450565b825550505050565b5f90565b6200151762001509565b62001524818484620014de565b505050565b5b818110156200154b576200153f5f826200150d565b6001810190506200152a565b5050565b601f8211156200159a57620015648162001423565b6200156f8462001435565b810160208510156200157f578190505b620015976200158e8562001435565b83018262001529565b50505b505050565b5f82821c905092915050565b5f620015bc5f19846008026200159f565b1980831691505092915050565b5f620015d68383620015ab565b9150826002028217905092915050565b620015f1826200138b565b67ffffffffffffffff8111156200160d576200160c62001395565b5b620016198254620013ef565b620016268282856200154f565b5f60209050601f8311600181146200165c575f841562001647578287015190505b620016538582620015c9565b865550620016c2565b601f1984166200166c8662001423565b5f5b8281101562001695578489015182556001820191506020850194506020810190506200166e565b86831015620016b55784890151620016b1601f891682620015ab565b8355505b6001600288020188555050505b505050505050565b5f60208284031215620016e257620016e1620012cd565b5b5f620016f1848285016200131c565b91505092915050565b6200170581620012f0565b82525050565b5f604082019050620017205f830185620016fa565b6200172f6020830184620016fa565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200176f826200121e565b91506200177c836200121e565b9250826200178f576200178e62001736565b5b828204905092915050565b5f602082019050620017af5f830184620016fa565b92915050565b5f82825260208201905092915050565b7f54726164696e67206973206e6f742061637469766500000000000000000000005f82015250565b5f620017fb601583620017b5565b91506200180882620017c5565b602082019050919050565b5f6020820190508181035f8301526200182c81620017ed565b9050919050565b5f6200183f826200121e565b91506200184c836200121e565b9250828201905080821115620018675762001866620010a1565b5b92915050565b7f5472616e73666572206c6f636b656420666f722037206d696e757465732061665f8201527f7465722061697264726f70000000000000000000000000000000000000000000602082015250565b5f620018c9602b83620017b5565b9150620018d6826200186d565b604082019050919050565b5f6020820190508181035f830152620018fa81620018bb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6200193a826200121e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200196f576200196e620010a1565b5b600182019050919050565b5f62001986826200121e565b915062001993836200121e565b9250828203905081811115620019ae57620019ad620010a1565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b620019ec816200121e565b82525050565b5f60608201905062001a075f830186620016fa565b62001a166020830185620019e1565b62001a256040830184620019e1565b949350505050565b5f60208201905062001a425f830184620019e1565b92915050565b60805160a051611d7b62001a645f395f50505f5050611d7b5ff3fe608060405234801561000f575f80fd5b50600436106100e8575f3560e01c806370a082311161008a57806395d89b411161006457806395d89b4114610226578063a9059cbb14610244578063bbc0c74214610274578063dd62ed3e14610292576100e8565b806370a08231146101ce5780638da5cb5b146101fe57806391152c5c1461021c576100e8565b806323b872dd116100c657806323b872dd14610158578063293230b814610188578063313ce567146101925780635fe8e7cc146101b0576100e8565b806306fdde03146100ec578063095ea7b31461010a57806318160ddd1461013a575b5f80fd5b6100f46102c2565b60405161010191906114d4565b60405180910390f35b610124600480360381019061011f9190611585565b610352565b60405161013191906115dd565b60405180910390f35b610142610374565b60405161014f9190611605565b60405180910390f35b610172600480360381019061016d919061161e565b61037d565b60405161017f91906115dd565b60405180910390f35b6101906103ab565b005b61019a61043c565b6040516101a79190611689565b60405180910390f35b6101b8610444565b6040516101c59190611759565b60405180910390f35b6101e860048036038101906101e39190611779565b6104cf565b6040516101f59190611605565b60405180910390f35b610206610514565b60405161021391906117b3565b60405180910390f35b61022461053c565b005b61022e6106de565b60405161023b91906114d4565b60405180910390f35b61025e60048036038101906102599190611585565b61076e565b60405161026b91906115dd565b60405180910390f35b61027c610790565b60405161028991906115dd565b60405180910390f35b6102ac60048036038101906102a791906117cc565b6107a2565b6040516102b99190611605565b60405180910390f35b6060600380546102d190611837565b80601f01602080910402602001604051908101604052809291908181526020018280546102fd90611837565b80156103485780601f1061031f57610100808354040283529160200191610348565b820191905f5260205f20905b81548152906001019060200180831161032b57829003601f168201915b5050505050905090565b5f8061035c610824565b905061036981858561082b565b600191505092915050565b5f600254905090565b5f80610387610824565b905061039485828561083d565b61039f8585856108cf565b60019150509392505050565b6103b3610514565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610420576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610417906118b1565b60405180910390fd5b6001600a5f6101000a81548160ff021916908315150217905550565b5f6012905090565b606060058054806020026020016040519081016040528092919081815260200182805480156104c557602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161047c575b5050505050905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610544610514565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a8906118b1565b60405180910390fd5b5f6105ba61043c565b600a6105c69190611a2b565b6117026105d39190611a75565b90505f5b6005805490508110156106da575f600582815481106105f9576105f8611ab6565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060095f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561067857506106c7565b4260085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506106c53082856108cf565b505b80806106d290611ae3565b9150506105d7565b5050565b6060600480546106ed90611837565b80601f016020809104026020016040519081016040528092919081815260200182805461071990611837565b80156107645780601f1061073b57610100808354040283529160200191610764565b820191905f5260205f20905b81548152906001019060200180831161074757829003601f168201915b5050505050905090565b5f80610778610824565b90506107858185856108cf565b600191505092915050565b600a5f9054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b61083883838360016109bf565b505050565b5f61084884846107a2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108c957818110156108ba578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016108b193929190611b2a565b60405180910390fd5b6108c884848484035f6109bf565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361093f575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161093691906117b3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109af575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016109a691906117b3565b60405180910390fd5b6109ba838383610b8e565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610a2f575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610a2691906117b3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a9f575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610a9691906117b3565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610b88578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b7f9190611605565b60405180910390a35b50505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610c1757505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610c6b57600a5f9054906101000a900460ff16610c6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6190611ba9565b60405180910390fd5b5b5f151560095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503610d4d576101a460085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d0a9190611bc7565b421015610d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4390611c6a565b60405180910390fd5b5b610d578382610d71565b610d618282611038565b610d6c8383836111dd565b505050565b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611034575f805b600580549050811015610e59578373ffffffffffffffffffffffffffffffffffffffff1660058281548110610dfa57610df9611ab6565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610e465760019150610e59565b8080610e5190611ae3565b915050610dc2565b508015611032575f610e7c83610e6e866104cf565b6113f690919063ffffffff16565b9050610ea8612710610e9a600560065461140b90919063ffffffff16565b61142090919063ffffffff16565b811015611030575f5b60058054905081101561102e578473ffffffffffffffffffffffffffffffffffffffff1660058281548110610ee957610ee8611ab6565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361101b5760056001600580549050610f409190611c88565b81548110610f5157610f50611ab6565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110610f8d57610f8c611ab6565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005805480610fe457610fe3611cbb565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561102e565b808061102690611ae3565b915050610eb1565b505b505b505b5050565b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166111d9575f805b600580549050811015611120578373ffffffffffffffffffffffffffffffffffffffff16600582815481106110c1576110c0611ab6565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361110d5760019150611120565b808061111890611ae3565b915050611089565b50801580156111715750611154612710611146600560065461140b90919063ffffffff16565b61142090919063ffffffff16565b61116f83611161866104cf565b61143590919063ffffffff16565b115b156111d757600583908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361122d578060025f8282546112219190611bc7565b925050819055506112fb565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156112b6578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016112ad93929190611b2a565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611342578060025f828254039250508190555061138c565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113e99190611605565b60405180910390a3505050565b5f81836114039190611c88565b905092915050565b5f81836114189190611a75565b905092915050565b5f818361142d9190611d15565b905092915050565b5f81836114429190611bc7565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611481578082015181840152602081019050611466565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6114a68261144a565b6114b08185611454565b93506114c0818560208601611464565b6114c98161148c565b840191505092915050565b5f6020820190508181035f8301526114ec818461149c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611521826114f8565b9050919050565b61153181611517565b811461153b575f80fd5b50565b5f8135905061154c81611528565b92915050565b5f819050919050565b61156481611552565b811461156e575f80fd5b50565b5f8135905061157f8161155b565b92915050565b5f806040838503121561159b5761159a6114f4565b5b5f6115a88582860161153e565b92505060206115b985828601611571565b9150509250929050565b5f8115159050919050565b6115d7816115c3565b82525050565b5f6020820190506115f05f8301846115ce565b92915050565b6115ff81611552565b82525050565b5f6020820190506116185f8301846115f6565b92915050565b5f805f60608486031215611635576116346114f4565b5b5f6116428682870161153e565b93505060206116538682870161153e565b925050604061166486828701611571565b9150509250925092565b5f60ff82169050919050565b6116838161166e565b82525050565b5f60208201905061169c5f83018461167a565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6116d481611517565b82525050565b5f6116e583836116cb565b60208301905092915050565b5f602082019050919050565b5f611707826116a2565b61171181856116ac565b935061171c836116bc565b805f5b8381101561174c57815161173388826116da565b975061173e836116f1565b92505060018101905061171f565b5085935050505092915050565b5f6020820190508181035f83015261177181846116fd565b905092915050565b5f6020828403121561178e5761178d6114f4565b5b5f61179b8482850161153e565b91505092915050565b6117ad81611517565b82525050565b5f6020820190506117c65f8301846117a4565b92915050565b5f80604083850312156117e2576117e16114f4565b5b5f6117ef8582860161153e565b92505060206118008582860161153e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061184e57607f821691505b6020821081036118615761186061180a565b5b50919050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f61189b601783611454565b91506118a682611867565b602082019050919050565b5f6020820190508181035f8301526118c88161188f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156119515780860481111561192d5761192c6118cf565b5b600185161561193c5780820291505b808102905061194a856118fc565b9450611911565b94509492505050565b5f826119695760019050611a24565b81611976575f9050611a24565b816001811461198c5760028114611996576119c5565b6001915050611a24565b60ff8411156119a8576119a76118cf565b5b8360020a9150848211156119bf576119be6118cf565b5b50611a24565b5060208310610133831016604e8410600b84101617156119fa5782820a9050838111156119f5576119f46118cf565b5b611a24565b611a078484846001611908565b92509050818404811115611a1e57611a1d6118cf565b5b81810290505b9392505050565b5f611a3582611552565b9150611a408361166e565b9250611a6d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461195a565b905092915050565b5f611a7f82611552565b9150611a8a83611552565b9250828202611a9881611552565b91508282048414831517611aaf57611aae6118cf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f611aed82611552565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b1f57611b1e6118cf565b5b600182019050919050565b5f606082019050611b3d5f8301866117a4565b611b4a60208301856115f6565b611b5760408301846115f6565b949350505050565b7f54726164696e67206973206e6f742061637469766500000000000000000000005f82015250565b5f611b93601583611454565b9150611b9e82611b5f565b602082019050919050565b5f6020820190508181035f830152611bc081611b87565b9050919050565b5f611bd182611552565b9150611bdc83611552565b9250828201905080821115611bf457611bf36118cf565b5b92915050565b7f5472616e73666572206c6f636b656420666f722037206d696e757465732061665f8201527f7465722061697264726f70000000000000000000000000000000000000000000602082015250565b5f611c54602b83611454565b9150611c5f82611bfa565b604082019050919050565b5f6020820190508181035f830152611c8181611c48565b9050919050565b5f611c9282611552565b9150611c9d83611552565b9250828203905081811115611cb557611cb46118cf565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611d1f82611552565b9150611d2a83611552565b925082611d3a57611d39611ce8565b5b82820490509291505056fea264697066735822122090485a2e37b5f429cb2fa1a9e04e77e5edf558d0c183379bc7da6670ba717c9a64736f6c63430008140033000000000000000000000000ec91634e39681fbd55768d3b93825cbed0713e17000000000000000000000000ec91634e39681fbd55768d3b93825cbed0713e17000000000000000000000000a80cc7c0f2675bb759160b1fd16c4718c2dba8bf

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106100e8575f3560e01c806370a082311161008a57806395d89b411161006457806395d89b4114610226578063a9059cbb14610244578063bbc0c74214610274578063dd62ed3e14610292576100e8565b806370a08231146101ce5780638da5cb5b146101fe57806391152c5c1461021c576100e8565b806323b872dd116100c657806323b872dd14610158578063293230b814610188578063313ce567146101925780635fe8e7cc146101b0576100e8565b806306fdde03146100ec578063095ea7b31461010a57806318160ddd1461013a575b5f80fd5b6100f46102c2565b60405161010191906114d4565b60405180910390f35b610124600480360381019061011f9190611585565b610352565b60405161013191906115dd565b60405180910390f35b610142610374565b60405161014f9190611605565b60405180910390f35b610172600480360381019061016d919061161e565b61037d565b60405161017f91906115dd565b60405180910390f35b6101906103ab565b005b61019a61043c565b6040516101a79190611689565b60405180910390f35b6101b8610444565b6040516101c59190611759565b60405180910390f35b6101e860048036038101906101e39190611779565b6104cf565b6040516101f59190611605565b60405180910390f35b610206610514565b60405161021391906117b3565b60405180910390f35b61022461053c565b005b61022e6106de565b60405161023b91906114d4565b60405180910390f35b61025e60048036038101906102599190611585565b61076e565b60405161026b91906115dd565b60405180910390f35b61027c610790565b60405161028991906115dd565b60405180910390f35b6102ac60048036038101906102a791906117cc565b6107a2565b6040516102b99190611605565b60405180910390f35b6060600380546102d190611837565b80601f01602080910402602001604051908101604052809291908181526020018280546102fd90611837565b80156103485780601f1061031f57610100808354040283529160200191610348565b820191905f5260205f20905b81548152906001019060200180831161032b57829003601f168201915b5050505050905090565b5f8061035c610824565b905061036981858561082b565b600191505092915050565b5f600254905090565b5f80610387610824565b905061039485828561083d565b61039f8585856108cf565b60019150509392505050565b6103b3610514565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610420576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610417906118b1565b60405180910390fd5b6001600a5f6101000a81548160ff021916908315150217905550565b5f6012905090565b606060058054806020026020016040519081016040528092919081815260200182805480156104c557602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161047c575b5050505050905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610544610514565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a8906118b1565b60405180910390fd5b5f6105ba61043c565b600a6105c69190611a2b565b6117026105d39190611a75565b90505f5b6005805490508110156106da575f600582815481106105f9576105f8611ab6565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060095f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561067857506106c7565b4260085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506106c53082856108cf565b505b80806106d290611ae3565b9150506105d7565b5050565b6060600480546106ed90611837565b80601f016020809104026020016040519081016040528092919081815260200182805461071990611837565b80156107645780601f1061073b57610100808354040283529160200191610764565b820191905f5260205f20905b81548152906001019060200180831161074757829003601f168201915b5050505050905090565b5f80610778610824565b90506107858185856108cf565b600191505092915050565b600a5f9054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b61083883838360016109bf565b505050565b5f61084884846107a2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108c957818110156108ba578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016108b193929190611b2a565b60405180910390fd5b6108c884848484035f6109bf565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361093f575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161093691906117b3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109af575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016109a691906117b3565b60405180910390fd5b6109ba838383610b8e565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610a2f575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610a2691906117b3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a9f575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610a9691906117b3565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610b88578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b7f9190611605565b60405180910390a35b50505050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610c1757505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610c6b57600a5f9054906101000a900460ff16610c6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6190611ba9565b60405180910390fd5b5b5f151560095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503610d4d576101a460085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d0a9190611bc7565b421015610d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4390611c6a565b60405180910390fd5b5b610d578382610d71565b610d618282611038565b610d6c8383836111dd565b505050565b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611034575f805b600580549050811015610e59578373ffffffffffffffffffffffffffffffffffffffff1660058281548110610dfa57610df9611ab6565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610e465760019150610e59565b8080610e5190611ae3565b915050610dc2565b508015611032575f610e7c83610e6e866104cf565b6113f690919063ffffffff16565b9050610ea8612710610e9a600560065461140b90919063ffffffff16565b61142090919063ffffffff16565b811015611030575f5b60058054905081101561102e578473ffffffffffffffffffffffffffffffffffffffff1660058281548110610ee957610ee8611ab6565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361101b5760056001600580549050610f409190611c88565b81548110610f5157610f50611ab6565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660058281548110610f8d57610f8c611ab6565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005805480610fe457610fe3611cbb565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561102e565b808061102690611ae3565b915050610eb1565b505b505b505b5050565b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166111d9575f805b600580549050811015611120578373ffffffffffffffffffffffffffffffffffffffff16600582815481106110c1576110c0611ab6565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361110d5760019150611120565b808061111890611ae3565b915050611089565b50801580156111715750611154612710611146600560065461140b90919063ffffffff16565b61142090919063ffffffff16565b61116f83611161866104cf565b61143590919063ffffffff16565b115b156111d757600583908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361122d578060025f8282546112219190611bc7565b925050819055506112fb565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156112b6578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016112ad93929190611b2a565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611342578060025f828254039250508190555061138c565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113e99190611605565b60405180910390a3505050565b5f81836114039190611c88565b905092915050565b5f81836114189190611a75565b905092915050565b5f818361142d9190611d15565b905092915050565b5f81836114429190611bc7565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611481578082015181840152602081019050611466565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6114a68261144a565b6114b08185611454565b93506114c0818560208601611464565b6114c98161148c565b840191505092915050565b5f6020820190508181035f8301526114ec818461149c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611521826114f8565b9050919050565b61153181611517565b811461153b575f80fd5b50565b5f8135905061154c81611528565b92915050565b5f819050919050565b61156481611552565b811461156e575f80fd5b50565b5f8135905061157f8161155b565b92915050565b5f806040838503121561159b5761159a6114f4565b5b5f6115a88582860161153e565b92505060206115b985828601611571565b9150509250929050565b5f8115159050919050565b6115d7816115c3565b82525050565b5f6020820190506115f05f8301846115ce565b92915050565b6115ff81611552565b82525050565b5f6020820190506116185f8301846115f6565b92915050565b5f805f60608486031215611635576116346114f4565b5b5f6116428682870161153e565b93505060206116538682870161153e565b925050604061166486828701611571565b9150509250925092565b5f60ff82169050919050565b6116838161166e565b82525050565b5f60208201905061169c5f83018461167a565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6116d481611517565b82525050565b5f6116e583836116cb565b60208301905092915050565b5f602082019050919050565b5f611707826116a2565b61171181856116ac565b935061171c836116bc565b805f5b8381101561174c57815161173388826116da565b975061173e836116f1565b92505060018101905061171f565b5085935050505092915050565b5f6020820190508181035f83015261177181846116fd565b905092915050565b5f6020828403121561178e5761178d6114f4565b5b5f61179b8482850161153e565b91505092915050565b6117ad81611517565b82525050565b5f6020820190506117c65f8301846117a4565b92915050565b5f80604083850312156117e2576117e16114f4565b5b5f6117ef8582860161153e565b92505060206118008582860161153e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061184e57607f821691505b6020821081036118615761186061180a565b5b50919050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f61189b601783611454565b91506118a682611867565b602082019050919050565b5f6020820190508181035f8301526118c88161188f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156119515780860481111561192d5761192c6118cf565b5b600185161561193c5780820291505b808102905061194a856118fc565b9450611911565b94509492505050565b5f826119695760019050611a24565b81611976575f9050611a24565b816001811461198c5760028114611996576119c5565b6001915050611a24565b60ff8411156119a8576119a76118cf565b5b8360020a9150848211156119bf576119be6118cf565b5b50611a24565b5060208310610133831016604e8410600b84101617156119fa5782820a9050838111156119f5576119f46118cf565b5b611a24565b611a078484846001611908565b92509050818404811115611a1e57611a1d6118cf565b5b81810290505b9392505050565b5f611a3582611552565b9150611a408361166e565b9250611a6d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461195a565b905092915050565b5f611a7f82611552565b9150611a8a83611552565b9250828202611a9881611552565b91508282048414831517611aaf57611aae6118cf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f611aed82611552565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b1f57611b1e6118cf565b5b600182019050919050565b5f606082019050611b3d5f8301866117a4565b611b4a60208301856115f6565b611b5760408301846115f6565b949350505050565b7f54726164696e67206973206e6f742061637469766500000000000000000000005f82015250565b5f611b93601583611454565b9150611b9e82611b5f565b602082019050919050565b5f6020820190508181035f830152611bc081611b87565b9050919050565b5f611bd182611552565b9150611bdc83611552565b9250828201905080821115611bf457611bf36118cf565b5b92915050565b7f5472616e73666572206c6f636b656420666f722037206d696e757465732061665f8201527f7465722061697264726f70000000000000000000000000000000000000000000602082015250565b5f611c54602b83611454565b9150611c5f82611bfa565b604082019050919050565b5f6020820190508181035f830152611c8181611c48565b9050919050565b5f611c9282611552565b9150611c9d83611552565b9250828203905081811115611cb557611cb46118cf565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611d1f82611552565b9150611d2a83611552565b925082611d3a57611d39611ce8565b5b82820490509291505056fea264697066735822122090485a2e37b5f429cb2fa1a9e04e77e5edf558d0c183379bc7da6670ba717c9a64736f6c63430008140033

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

000000000000000000000000ec91634e39681fbd55768d3b93825cbed0713e17000000000000000000000000ec91634e39681fbd55768d3b93825cbed0713e17000000000000000000000000a80cc7c0f2675bb759160b1fd16c4718c2dba8bf

-----Decoded View---------------
Arg [0] : team (address): 0xeC91634E39681FbD55768d3B93825cbEd0713E17
Arg [1] : treasury (address): 0xeC91634E39681FbD55768d3B93825cbEd0713E17
Arg [2] : partnership (address): 0xA80Cc7c0f2675BB759160b1FD16c4718C2dba8bf

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000ec91634e39681fbd55768d3b93825cbed0713e17
Arg [1] : 000000000000000000000000ec91634e39681fbd55768d3b93825cbed0713e17
Arg [2] : 000000000000000000000000a80cc7c0f2675bb759160b1fd16c4718c2dba8bf


Deployed Bytecode Sourcemap

830:4721:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2038:89:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4257:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3108:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5003:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3461:82:4;;;:::i;:::-;;2966::1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5017:95:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3263:116:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2816:79:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5120:428;;;:::i;:::-;;2240:93:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3574:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1225:25:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3810:140:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2038:89;2083:13;2115:5;2108:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2038:89;:::o;4257:186::-;4330:4;4346:13;4362:12;:10;:12::i;:::-;4346:28;;4384:31;4393:5;4400:7;4409:5;4384:8;:31::i;:::-;4432:4;4425:11;;;4257:186;;;;:::o;3108:97::-;3160:7;3186:12;;3179:19;;3108:97;:::o;5003:244::-;5090:4;5106:15;5124:12;:10;:12::i;:::-;5106:30;;5146:37;5162:4;5168:7;5177:5;5146:15;:37::i;:::-;5193:26;5203:4;5209:2;5213:5;5193:9;:26::i;:::-;5236:4;5229:11;;;5003:244;;;;;:::o;3461:82:4:-;2753:7;:5;:7::i;:::-;2739:21;;:10;:21;;;2731:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3531:4:::1;3515:13;;:20;;;;;;;;;;;;;;;;;;3461:82::o:0;2966::1:-;3015:5;3039:2;3032:9;;2966:82;:::o;5017:95:4:-;5060:16;5096:8;5089:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5017:95;:::o;3263:116:1:-;3328:7;3354:9;:18;3364:7;3354:18;;;;;;;;;;;;;;;;3347:25;;3263:116;;;:::o;2816:79:4:-;2854:7;2881:6;;;;;;;;;;;2874:13;;2816:79;:::o;5120:428::-;2753:7;:5;:7::i;:::-;2739:21;;:10;:21;;;2731:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;5175:21:::1;5212:10;:8;:10::i;:::-;5206:2;:16;;;;:::i;:::-;5199:4;:23;;;;:::i;:::-;5175:47;;5240:9;5235:306;5259:8;:15;;;;5255:1;:19;5235:306;;;5296:14;5313:8;5322:1;5313:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5296:28;;5345:9;:17;5355:6;5345:17;;;;;;;;;;;;;;;;;;;;;;;;;5341:66;;;5383:8;;;5341:66;5452:15;5423:18;:26;5442:6;5423:26;;;;;;;;;;;;;;;:44;;;;5482:47;5500:4;5507:6;5515:13;5482:9;:47::i;:::-;5281:260;5235:306;5276:3;;;;;:::i;:::-;;;;5235:306;;;;5164:384;5120:428::o:0;2240:93:1:-;2287:13;2319:7;2312:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2240:93;:::o;3574:178::-;3643:4;3659:13;3675:12;:10;:12::i;:::-;3659:28;;3697:27;3707:5;3714:2;3718:5;3697:9;:27::i;:::-;3741:4;3734:11;;;3574:178;;;;:::o;1225:25:4:-;;;;;;;;;;;;;:::o;3810:140:1:-;3890:7;3916:11;:18;3928:5;3916:18;;;;;;;;;;;;;;;:27;3935:7;3916:27;;;;;;;;;;;;;;;;3909:34;;3810:140;;;;:::o;656:96:0:-;709:7;735:10;728:17;;656:96;:::o;8953:128:1:-;9037:37;9046:5;9053:7;9062:5;9069:4;9037:8;:37::i;:::-;8953:128;;;:::o;10627:477::-;10726:24;10753:25;10763:5;10770:7;10753:9;:25::i;:::-;10726:52;;10812:17;10792:16;:37;10788:310;;10868:5;10849:16;:24;10845:130;;;10927:7;10936:16;10954:5;10900:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;10845:130;11016:57;11025:5;11032:7;11060:5;11041:16;:24;11067:5;11016:8;:57::i;:::-;10788:310;10716:388;10627:477;;;:::o;5620:300::-;5719:1;5703:18;;:4;:18;;;5699:86;;5771:1;5744:30;;;;;;;;;;;:::i;:::-;;;;;;;;5699:86;5812:1;5798:16;;:2;:16;;;5794:86;;5866:1;5837:32;;;;;;;;;;;:::i;:::-;;;;;;;;5794:86;5889:24;5897:4;5903:2;5907:5;5889:7;:24::i;:::-;5620:300;;;:::o;9913:432::-;10042:1;10025:19;;:5;:19;;;10021:89;;10096:1;10067:32;;;;;;;;;;;:::i;:::-;;;;;;;;10021:89;10142:1;10123:21;;:7;:21;;;10119:90;;10195:1;10167:31;;;;;;;;;;;:::i;:::-;;;;;;;;10119:90;10248:5;10218:11;:18;10230:5;10218:18;;;;;;;;;;;;;;;:27;10237:7;10218:27;;;;;;;;;;;;;;;:35;;;;10267:9;10263:76;;;10313:7;10297:31;;10306:5;10297:31;;;10322:5;10297:31;;;;;;:::i;:::-;;;;;;;;10263:76;9913:432;;;;:::o;3551:603:4:-;3692:6;;;;;;;;;;;3684:14;;:4;:14;;;;:36;;;;;3718:1;3702:18;;:4;:18;;;;3684:36;3680:116;;;3745:13;;;;;;;;;;;3737:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;3680:116;3831:5;3812:24;;:9;:15;3822:4;3812:15;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;3808:217;;3925:9;3898:18;:24;3917:4;3898:24;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;3879:15;:55;;3853:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;3808:217;4037:31;4056:4;4062:5;4037:18;:31::i;:::-;4079:24;4093:2;4097:5;4079:13;:24::i;:::-;4116:30;4130:4;4136:2;4140:5;4116:13;:30::i;:::-;3551:603;;;:::o;4162:847::-;4246:9;:18;4256:7;4246:18;;;;;;;;;;;;;;;;;;;;;;;;;4281:7;4242:57;4309:18;4351:9;4346:179;4370:8;:15;;;;4366:1;:19;4346:179;;;4426:7;4411:22;;:8;4420:1;4411:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:22;;;4407:107;;4470:4;4454:20;;4493:5;;4407:107;4387:3;;;;;:::i;:::-;;;;4346:179;;;;4541:13;4537:465;;;4571:12;4586:30;4609:6;4586:18;4596:7;4586:9;:18::i;:::-;:22;;:30;;;;:::i;:::-;4571:45;;4642:30;4666:5;4642:19;4659:1;4642:12;;:16;;:19;;;;:::i;:::-;:23;;:30;;;;:::i;:::-;4635:4;:37;4631:360;;;4698:9;4693:283;4717:8;:15;;;;4713:1;:19;4693:283;;;4781:7;4766:22;;:8;4775:1;4766:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:22;;;4762:195;;4831:8;4858:1;4840:8;:15;;;;:19;;;;:::i;:::-;4831:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4817:8;4826:1;4817:11;;;;;;;;:::i;:::-;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;4887:8;:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4928:5;;4762:195;4734:3;;;;;:::i;:::-;;;;4693:283;;;;4631:360;4556:446;4537:465;4231:778;4162:847;;;:::o;2903:550::-;2982:9;:18;2992:7;2982:18;;;;;;;;;;;;;;;;;;;;;;;;;3017:7;2978:57;3045:18;3087:9;3082:179;3106:8;:15;;;;3102:1;:19;3082:179;;;3162:7;3147:22;;:8;3156:1;3147:11;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:22;;;3143:107;;3206:4;3190:20;;3229:5;;3143:107;3123:3;;;;;:::i;:::-;;;;3082:179;;;;3292:13;3291:14;:94;;;;;3355:30;3379:5;3355:19;3372:1;3355:12;;:16;;:19;;;;:::i;:::-;:23;;:30;;;;:::i;:::-;3322;3345:6;3322:18;3332:7;3322:9;:18::i;:::-;:22;;:30;;;;:::i;:::-;:63;3291:94;3273:173;;;3412:8;3426:7;3412:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3273:173;2967:486;2903:550;;;:::o;6235:1107:1:-;6340:1;6324:18;;:4;:18;;;6320:540;;6476:5;6460:12;;:21;;;;;;;:::i;:::-;;;;;;;;6320:540;;;6512:19;6534:9;:15;6544:4;6534:15;;;;;;;;;;;;;;;;6512:37;;6581:5;6567:11;:19;6563:115;;;6638:4;6644:11;6657:5;6613:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;6563:115;6830:5;6816:11;:19;6798:9;:15;6808:4;6798:15;;;;;;;;;;;;;;;:37;;;;6498:362;6320:540;6888:1;6874:16;;:2;:16;;;6870:425;;7053:5;7037:12;;:21;;;;;;;;;;;6870:425;;;7265:5;7248:9;:13;7258:2;7248:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;6870:425;7325:2;7310:25;;7319:4;7310:25;;;7329:5;7310:25;;;;;;:::i;:::-;;;;;;;;6235:1107;;;:::o;216:98:4:-;274:7;305:1;301;:5;;;;:::i;:::-;294:12;;216:98;;;;:::o;322:::-;380:7;411:1;407;:5;;;;:::i;:::-;400:12;;322:98;;;;:::o;428:::-;486:7;517:1;513;:5;;;;:::i;:::-;506:12;;428:98;;;;:::o;110:::-;168:7;199:1;195;:5;;;;:::i;:::-;188:12;;110:98;;;;:::o;7:99:6:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:114::-;4920:6;4954:5;4948:12;4938:22;;4853:114;;;:::o;4973:184::-;5072:11;5106:6;5101:3;5094:19;5146:4;5141:3;5137:14;5122:29;;4973:184;;;;:::o;5163:132::-;5230:4;5253:3;5245:11;;5283:4;5278:3;5274:14;5266:22;;5163:132;;;:::o;5301:108::-;5378:24;5396:5;5378:24;:::i;:::-;5373:3;5366:37;5301:108;;:::o;5415:179::-;5484:10;5505:46;5547:3;5539:6;5505:46;:::i;:::-;5583:4;5578:3;5574:14;5560:28;;5415:179;;;;:::o;5600:113::-;5670:4;5702;5697:3;5693:14;5685:22;;5600:113;;;:::o;5749:732::-;5868:3;5897:54;5945:5;5897:54;:::i;:::-;5967:86;6046:6;6041:3;5967:86;:::i;:::-;5960:93;;6077:56;6127:5;6077:56;:::i;:::-;6156:7;6187:1;6172:284;6197:6;6194:1;6191:13;6172:284;;;6273:6;6267:13;6300:63;6359:3;6344:13;6300:63;:::i;:::-;6293:70;;6386:60;6439:6;6386:60;:::i;:::-;6376:70;;6232:224;6219:1;6216;6212:9;6207:14;;6172:284;;;6176:14;6472:3;6465:10;;5873:608;;;5749:732;;;;:::o;6487:373::-;6630:4;6668:2;6657:9;6653:18;6645:26;;6717:9;6711:4;6707:20;6703:1;6692:9;6688:17;6681:47;6745:108;6848:4;6839:6;6745:108;:::i;:::-;6737:116;;6487:373;;;;:::o;6866:329::-;6925:6;6974:2;6962:9;6953:7;6949:23;6945:32;6942:119;;;6980:79;;:::i;:::-;6942:119;7100:1;7125:53;7170:7;7161:6;7150:9;7146:22;7125:53;:::i;:::-;7115:63;;7071:117;6866:329;;;;:::o;7201:118::-;7288:24;7306:5;7288:24;:::i;:::-;7283:3;7276:37;7201:118;;:::o;7325:222::-;7418:4;7456:2;7445:9;7441:18;7433:26;;7469:71;7537:1;7526:9;7522:17;7513:6;7469:71;:::i;:::-;7325:222;;;;:::o;7553:474::-;7621:6;7629;7678:2;7666:9;7657:7;7653:23;7649:32;7646:119;;;7684:79;;:::i;:::-;7646:119;7804:1;7829:53;7874:7;7865:6;7854:9;7850:22;7829:53;:::i;:::-;7819:63;;7775:117;7931:2;7957:53;8002:7;7993:6;7982:9;7978:22;7957:53;:::i;:::-;7947:63;;7902:118;7553:474;;;;;:::o;8033:180::-;8081:77;8078:1;8071:88;8178:4;8175:1;8168:15;8202:4;8199:1;8192:15;8219:320;8263:6;8300:1;8294:4;8290:12;8280:22;;8347:1;8341:4;8337:12;8368:18;8358:81;;8424:4;8416:6;8412:17;8402:27;;8358:81;8486:2;8478:6;8475:14;8455:18;8452:38;8449:84;;8505:18;;:::i;:::-;8449:84;8270:269;8219:320;;;:::o;8545:173::-;8685:25;8681:1;8673:6;8669:14;8662:49;8545:173;:::o;8724:366::-;8866:3;8887:67;8951:2;8946:3;8887:67;:::i;:::-;8880:74;;8963:93;9052:3;8963:93;:::i;:::-;9081:2;9076:3;9072:12;9065:19;;8724:366;;;:::o;9096:419::-;9262:4;9300:2;9289:9;9285:18;9277:26;;9349:9;9343:4;9339:20;9335:1;9324:9;9320:17;9313:47;9377:131;9503:4;9377:131;:::i;:::-;9369:139;;9096:419;;;:::o;9521:180::-;9569:77;9566:1;9559:88;9666:4;9663:1;9656:15;9690:4;9687:1;9680:15;9707:102;9749:8;9796:5;9793:1;9789:13;9768:34;;9707:102;;;:::o;9815:848::-;9876:5;9883:4;9907:6;9898:15;;9931:5;9922:14;;9945:712;9966:1;9956:8;9953:15;9945:712;;;10061:4;10056:3;10052:14;10046:4;10043:24;10040:50;;;10070:18;;:::i;:::-;10040:50;10120:1;10110:8;10106:16;10103:451;;;10535:4;10528:5;10524:16;10515:25;;10103:451;10585:4;10579;10575:15;10567:23;;10615:32;10638:8;10615:32;:::i;:::-;10603:44;;9945:712;;;9815:848;;;;;;;:::o;10669:1073::-;10723:5;10914:8;10904:40;;10935:1;10926:10;;10937:5;;10904:40;10963:4;10953:36;;10980:1;10971:10;;10982:5;;10953:36;11049:4;11097:1;11092:27;;;;11133:1;11128:191;;;;11042:277;;11092:27;11110:1;11101:10;;11112:5;;;11128:191;11173:3;11163:8;11160:17;11157:43;;;11180:18;;:::i;:::-;11157:43;11229:8;11226:1;11222:16;11213:25;;11264:3;11257:5;11254:14;11251:40;;;11271:18;;:::i;:::-;11251:40;11304:5;;;11042:277;;11428:2;11418:8;11415:16;11409:3;11403:4;11400:13;11396:36;11378:2;11368:8;11365:16;11360:2;11354:4;11351:12;11347:35;11331:111;11328:246;;;11484:8;11478:4;11474:19;11465:28;;11519:3;11512:5;11509:14;11506:40;;;11526:18;;:::i;:::-;11506:40;11559:5;;11328:246;11599:42;11637:3;11627:8;11621:4;11618:1;11599:42;:::i;:::-;11584:57;;;;11673:4;11668:3;11664:14;11657:5;11654:25;11651:51;;;11682:18;;:::i;:::-;11651:51;11731:4;11724:5;11720:16;11711:25;;10669:1073;;;;;;:::o;11748:281::-;11806:5;11830:23;11848:4;11830:23;:::i;:::-;11822:31;;11874:25;11890:8;11874:25;:::i;:::-;11862:37;;11918:104;11955:66;11945:8;11939:4;11918:104;:::i;:::-;11909:113;;11748:281;;;;:::o;12035:410::-;12075:7;12098:20;12116:1;12098:20;:::i;:::-;12093:25;;12132:20;12150:1;12132:20;:::i;:::-;12127:25;;12187:1;12184;12180:9;12209:30;12227:11;12209:30;:::i;:::-;12198:41;;12388:1;12379:7;12375:15;12372:1;12369:22;12349:1;12342:9;12322:83;12299:139;;12418:18;;:::i;:::-;12299:139;12083:362;12035:410;;;;:::o;12451:180::-;12499:77;12496:1;12489:88;12596:4;12593:1;12586:15;12620:4;12617:1;12610:15;12637:233;12676:3;12699:24;12717:5;12699:24;:::i;:::-;12690:33;;12745:66;12738:5;12735:77;12732:103;;12815:18;;:::i;:::-;12732:103;12862:1;12855:5;12851:13;12844:20;;12637:233;;;:::o;12876:442::-;13025:4;13063:2;13052:9;13048:18;13040:26;;13076:71;13144:1;13133:9;13129:17;13120:6;13076:71;:::i;:::-;13157:72;13225:2;13214:9;13210:18;13201:6;13157:72;:::i;:::-;13239;13307:2;13296:9;13292:18;13283:6;13239:72;:::i;:::-;12876:442;;;;;;:::o;13324:171::-;13464:23;13460:1;13452:6;13448:14;13441:47;13324:171;:::o;13501:366::-;13643:3;13664:67;13728:2;13723:3;13664:67;:::i;:::-;13657:74;;13740:93;13829:3;13740:93;:::i;:::-;13858:2;13853:3;13849:12;13842:19;;13501:366;;;:::o;13873:419::-;14039:4;14077:2;14066:9;14062:18;14054:26;;14126:9;14120:4;14116:20;14112:1;14101:9;14097:17;14090:47;14154:131;14280:4;14154:131;:::i;:::-;14146:139;;13873:419;;;:::o;14298:191::-;14338:3;14357:20;14375:1;14357:20;:::i;:::-;14352:25;;14391:20;14409:1;14391:20;:::i;:::-;14386:25;;14434:1;14431;14427:9;14420:16;;14455:3;14452:1;14449:10;14446:36;;;14462:18;;:::i;:::-;14446:36;14298:191;;;;:::o;14495:230::-;14635:34;14631:1;14623:6;14619:14;14612:58;14704:13;14699:2;14691:6;14687:15;14680:38;14495:230;:::o;14731:366::-;14873:3;14894:67;14958:2;14953:3;14894:67;:::i;:::-;14887:74;;14970:93;15059:3;14970:93;:::i;:::-;15088:2;15083:3;15079:12;15072:19;;14731:366;;;:::o;15103:419::-;15269:4;15307:2;15296:9;15292:18;15284:26;;15356:9;15350:4;15346:20;15342:1;15331:9;15327:17;15320:47;15384:131;15510:4;15384:131;:::i;:::-;15376:139;;15103:419;;;:::o;15528:194::-;15568:4;15588:20;15606:1;15588:20;:::i;:::-;15583:25;;15622:20;15640:1;15622:20;:::i;:::-;15617:25;;15666:1;15663;15659:9;15651:17;;15690:1;15684:4;15681:11;15678:37;;;15695:18;;:::i;:::-;15678:37;15528:194;;;;:::o;15728:180::-;15776:77;15773:1;15766:88;15873:4;15870:1;15863:15;15897:4;15894:1;15887:15;15914:180;15962:77;15959:1;15952:88;16059:4;16056:1;16049:15;16083:4;16080:1;16073:15;16100:185;16140:1;16157:20;16175:1;16157:20;:::i;:::-;16152:25;;16191:20;16209:1;16191:20;:::i;:::-;16186:25;;16230:1;16220:35;;16235:18;;:::i;:::-;16220:35;16277:1;16274;16270:9;16265:14;;16100:185;;;;:::o

Swarm Source

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