ETH Price: $2,905.59 (-1.11%)
Gas: 0.17 Gwei
 

Overview

Max Total Supply

630,000,000 CHT

Holders

18

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
Chuckle

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-06-24
*/

/*
  Website: https://chuckle-hat.com
  GitHub: https://github.com/chucklehat 
  X: https://x.com/token_333
*/
pragma solidity 0.8.19;

// SPDX-License-Identifier: MIT

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

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

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

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

/**
 * @title SafeMathInt
 * @dev Math operations for int256 with overflow safety checks.
 */
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;

    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

/**
 * @title SafeMathUint
 * @dev Math operations with safety checks that revert on error
 */
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}

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

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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


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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

        _balances[account] = _balances[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

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

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

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


contract Chuckle is Context, ERC20, Ownable {
    using SafeMath for uint256;

    struct airDropWallets {
        uint256 amount;
        uint256 unlockTime;
    }

    mapping(address =>  airDropWallets) public airDropWalletsData;

    constructor() ERC20("Chuckle Hat", "CHT"){

        _mint(0x794cA21Ff4b0F1205cf44bAa4429B397B3a2ded0, 630000000 * (10**18));
      
    }
    
    receive() external payable {}

    function airDrop (address[] calldata recipients, uint256[] calldata amount, uint256 _unlockTime) public onlyOwner{

        for (uint256 i = 0; i < recipients.length; i++){

            IERC20(address(this)).transferFrom(msg.sender, recipients[i], amount[i] * (10**18));
             airDropWalletsData[recipients[i]].amount = amount[i] * (10**18);
             airDropWalletsData[recipients[i]].unlockTime = block.timestamp.add(_unlockTime * 86400);

        }
    }

    /// @dev It will send all ETH to dev which are sended accidentally
    function recoverETH() external onlyOwner {
    
        uint256 ETHbalance = address(this).balance;
        (bool success, ) = payable(owner()).call{value: ETHbalance}("");
        require(success);
        
    }
    
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(this), "You cannot send tokens to the contract address!");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        } 
                if(block.timestamp <= airDropWalletsData[from].unlockTime && airDropWalletsData[from].amount > 0){
                  require(amount <= (balanceOf(from).sub(airDropWalletsData[from].amount)));
                }         

        super._transfer(from, to, amount);

        
    }

}

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"},{"internalType":"uint256","name":"_unlockTime","type":"uint256"}],"name":"airDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"airDropWalletsData","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"unlockTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"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":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506040518060400160405280600b81526020016a10da1d58dadb194812185d60aa1b8152506040518060400160405280600381526020016210d21560ea1b815250816003908162000063919062000314565b50600462000072828262000314565b5050506200008f62000089620000c160201b60201c565b620000c5565b620000bb73794ca21ff4b0f1205cf44baa4429b397b3a2ded06b02091fb06eec50ca3600000062000117565b62000402565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620001735760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b60025462000182908262000204565b6002556001600160a01b038216600090815260208190526040902054620001aa908262000204565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b600080620002138385620003e0565b905083811015620002675760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200016a565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200029b57607f821691505b602082108103620002bc57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001ff57600081815260208120601f850160051c81016020861015620002eb5750805b601f850160051c820191505b818110156200030c57828155600101620002f7565b505050505050565b81516001600160401b0381111562000330576200033062000270565b620003488162000341845462000286565b84620002c2565b602080601f831160018114620003805760008415620003675750858301515b600019600386901b1c1916600185901b1785556200030c565b600085815260208120601f198616915b82811015620003b15788860151825594840194600190910190840162000390565b5085821015620003d05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200026a57634e487b7160e01b600052601160045260246000fd5b61106880620004126000396000f3fe6080604052600436106100ec5760003560e01c806370a082311161008a57806395d89b411161005957806395d89b41146102a1578063a9059cbb146102b6578063dd62ed3e146102d6578063f2fde38b1461031c57600080fd5b806370a08231146101e5578063715018a61461021b5780637e002d2a146102305780638da5cb5b1461027957600080fd5b80630a3db14f116100c65780630a3db14f1461016a57806318160ddd1461018a57806323b872dd146101a9578063313ce567146101c957600080fd5b80630614117a146100f857806306fdde031461010f578063095ea7b31461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b5061010d61033c565b005b34801561011b57600080fd5b506101246103e5565b6040516101319190610cae565b60405180910390f35b34801561014657600080fd5b5061015a610155366004610d18565b610477565b6040519015158152602001610131565b34801561017657600080fd5b5061010d610185366004610d8e565b61048e565b34801561019657600080fd5b506002545b604051908152602001610131565b3480156101b557600080fd5b5061015a6101c4366004610e02565b610680565b3480156101d557600080fd5b5060405160128152602001610131565b3480156101f157600080fd5b5061019b610200366004610e3e565b6001600160a01b031660009081526020819052604090205490565b34801561022757600080fd5b5061010d6106e9565b34801561023c57600080fd5b5061026461024b366004610e3e565b6006602052600090815260409020805460019091015482565b60408051928352602083019190915201610131565b34801561028557600080fd5b506005546040516001600160a01b039091168152602001610131565b3480156102ad57600080fd5b5061012461071f565b3480156102c257600080fd5b5061015a6102d1366004610d18565b61072e565b3480156102e257600080fd5b5061019b6102f1366004610e59565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561032857600080fd5b5061010d610337366004610e3e565b61073b565b6005546001600160a01b0316331461036f5760405162461bcd60e51b815260040161036690610e8c565b60405180910390fd5b4760006103846005546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d80600081146103ce576040519150601f19603f3d011682016040523d82523d6000602084013e6103d3565b606091505b50509050806103e157600080fd5b5050565b6060600380546103f490610ec1565b80601f016020809104026020016040519081016040528092919081815260200182805461042090610ec1565b801561046d5780601f106104425761010080835404028352916020019161046d565b820191906000526020600020905b81548152906001019060200180831161045057829003601f168201915b5050505050905090565b60006104843384846107d6565b5060015b92915050565b6005546001600160a01b031633146104b85760405162461bcd60e51b815260040161036690610e8c565b60005b8481101561067857306323b872dd338888858181106104dc576104dc610efb565b90506020020160208101906104f19190610e3e565b87878681811061050357610503610efb565b90506020020135670de0b6b3a764000061051d9190610f27565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610571573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105959190610f3e565b508383828181106105a8576105a8610efb565b90506020020135670de0b6b3a76400006105c29190610f27565b600660008888858181106105d8576105d8610efb565b90506020020160208101906105ed9190610e3e565b6001600160a01b0316815260208101919091526040016000205561061e6106178362015180610f27565b42906108fb565b6006600088888581811061063457610634610efb565b90506020020160208101906106499190610e3e565b6001600160a01b031681526020810191909152604001600020600101558061067081610f60565b9150506104bb565b505050505050565b600061068d848484610961565b6106df84336106da8560405180606001604052806028815260200161100b602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190610a9b565b6107d6565b5060019392505050565b6005546001600160a01b031633146107135760405162461bcd60e51b815260040161036690610e8c565b61071d6000610ad5565b565b6060600480546103f490610ec1565b6000610484338484610961565b6005546001600160a01b031633146107655760405162461bcd60e51b815260040161036690610e8c565b6001600160a01b0381166107ca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610366565b6107d381610ad5565b50565b6001600160a01b0383166108385760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610366565b6001600160a01b0382166108995760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610366565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000806109088385610f79565b90508381101561095a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610366565b9392505050565b6001600160a01b0383166109875760405162461bcd60e51b815260040161036690610f8c565b306001600160a01b038316036109f75760405162461bcd60e51b815260206004820152602f60248201527f596f752063616e6e6f742073656e6420746f6b656e7320746f2074686520636f60448201526e6e747261637420616464726573732160881b6064820152608401610366565b80600003610a1057610a0b83836000610b27565b505050565b6001600160a01b0383166000908152600660205260409020600101544211801590610a5257506001600160a01b03831660009081526006602052604090205415155b15610a90576001600160a01b0383166000908152600660209081526040808320549183905290912054610a8491610c6c565b811115610a9057600080fd5b610a0b838383610b27565b60008184841115610abf5760405162461bcd60e51b81526004016103669190610cae565b506000610acc8486610fd1565b95945050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316610b4d5760405162461bcd60e51b815260040161036690610f8c565b6001600160a01b038216610baf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610366565b610bec81604051806060016040528060268152602001610fe5602691396001600160a01b0386166000908152602081905260409020549190610a9b565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610c1b90826108fb565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016108ee565b600061095a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a9b565b600060208083528351808285015260005b81811015610cdb57858101830151858201604001528201610cbf565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d1357600080fd5b919050565b60008060408385031215610d2b57600080fd5b610d3483610cfc565b946020939093013593505050565b60008083601f840112610d5457600080fd5b50813567ffffffffffffffff811115610d6c57600080fd5b6020830191508360208260051b8501011115610d8757600080fd5b9250929050565b600080600080600060608688031215610da657600080fd5b853567ffffffffffffffff80821115610dbe57600080fd5b610dca89838a01610d42565b90975095506020880135915080821115610de357600080fd5b50610df088828901610d42565b96999598509660400135949350505050565b600080600060608486031215610e1757600080fd5b610e2084610cfc565b9250610e2e60208501610cfc565b9150604084013590509250925092565b600060208284031215610e5057600080fd5b61095a82610cfc565b60008060408385031215610e6c57600080fd5b610e7583610cfc565b9150610e8360208401610cfc565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680610ed557607f821691505b602082108103610ef557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761048857610488610f11565b600060208284031215610f5057600080fd5b8151801515811461095a57600080fd5b600060018201610f7257610f72610f11565b5060010190565b8082018082111561048857610488610f11565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b8181038181111561048857610488610f1156fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220839986defea81e7369f28d6b34712e5bda45294a665a19c2706e704ca80c078764736f6c63430008130033

Deployed Bytecode

0x6080604052600436106100ec5760003560e01c806370a082311161008a57806395d89b411161005957806395d89b41146102a1578063a9059cbb146102b6578063dd62ed3e146102d6578063f2fde38b1461031c57600080fd5b806370a08231146101e5578063715018a61461021b5780637e002d2a146102305780638da5cb5b1461027957600080fd5b80630a3db14f116100c65780630a3db14f1461016a57806318160ddd1461018a57806323b872dd146101a9578063313ce567146101c957600080fd5b80630614117a146100f857806306fdde031461010f578063095ea7b31461013a57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b5061010d61033c565b005b34801561011b57600080fd5b506101246103e5565b6040516101319190610cae565b60405180910390f35b34801561014657600080fd5b5061015a610155366004610d18565b610477565b6040519015158152602001610131565b34801561017657600080fd5b5061010d610185366004610d8e565b61048e565b34801561019657600080fd5b506002545b604051908152602001610131565b3480156101b557600080fd5b5061015a6101c4366004610e02565b610680565b3480156101d557600080fd5b5060405160128152602001610131565b3480156101f157600080fd5b5061019b610200366004610e3e565b6001600160a01b031660009081526020819052604090205490565b34801561022757600080fd5b5061010d6106e9565b34801561023c57600080fd5b5061026461024b366004610e3e565b6006602052600090815260409020805460019091015482565b60408051928352602083019190915201610131565b34801561028557600080fd5b506005546040516001600160a01b039091168152602001610131565b3480156102ad57600080fd5b5061012461071f565b3480156102c257600080fd5b5061015a6102d1366004610d18565b61072e565b3480156102e257600080fd5b5061019b6102f1366004610e59565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561032857600080fd5b5061010d610337366004610e3e565b61073b565b6005546001600160a01b0316331461036f5760405162461bcd60e51b815260040161036690610e8c565b60405180910390fd5b4760006103846005546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d80600081146103ce576040519150601f19603f3d011682016040523d82523d6000602084013e6103d3565b606091505b50509050806103e157600080fd5b5050565b6060600380546103f490610ec1565b80601f016020809104026020016040519081016040528092919081815260200182805461042090610ec1565b801561046d5780601f106104425761010080835404028352916020019161046d565b820191906000526020600020905b81548152906001019060200180831161045057829003601f168201915b5050505050905090565b60006104843384846107d6565b5060015b92915050565b6005546001600160a01b031633146104b85760405162461bcd60e51b815260040161036690610e8c565b60005b8481101561067857306323b872dd338888858181106104dc576104dc610efb565b90506020020160208101906104f19190610e3e565b87878681811061050357610503610efb565b90506020020135670de0b6b3a764000061051d9190610f27565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610571573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105959190610f3e565b508383828181106105a8576105a8610efb565b90506020020135670de0b6b3a76400006105c29190610f27565b600660008888858181106105d8576105d8610efb565b90506020020160208101906105ed9190610e3e565b6001600160a01b0316815260208101919091526040016000205561061e6106178362015180610f27565b42906108fb565b6006600088888581811061063457610634610efb565b90506020020160208101906106499190610e3e565b6001600160a01b031681526020810191909152604001600020600101558061067081610f60565b9150506104bb565b505050505050565b600061068d848484610961565b6106df84336106da8560405180606001604052806028815260200161100b602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190610a9b565b6107d6565b5060019392505050565b6005546001600160a01b031633146107135760405162461bcd60e51b815260040161036690610e8c565b61071d6000610ad5565b565b6060600480546103f490610ec1565b6000610484338484610961565b6005546001600160a01b031633146107655760405162461bcd60e51b815260040161036690610e8c565b6001600160a01b0381166107ca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610366565b6107d381610ad5565b50565b6001600160a01b0383166108385760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610366565b6001600160a01b0382166108995760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610366565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000806109088385610f79565b90508381101561095a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610366565b9392505050565b6001600160a01b0383166109875760405162461bcd60e51b815260040161036690610f8c565b306001600160a01b038316036109f75760405162461bcd60e51b815260206004820152602f60248201527f596f752063616e6e6f742073656e6420746f6b656e7320746f2074686520636f60448201526e6e747261637420616464726573732160881b6064820152608401610366565b80600003610a1057610a0b83836000610b27565b505050565b6001600160a01b0383166000908152600660205260409020600101544211801590610a5257506001600160a01b03831660009081526006602052604090205415155b15610a90576001600160a01b0383166000908152600660209081526040808320549183905290912054610a8491610c6c565b811115610a9057600080fd5b610a0b838383610b27565b60008184841115610abf5760405162461bcd60e51b81526004016103669190610cae565b506000610acc8486610fd1565b95945050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316610b4d5760405162461bcd60e51b815260040161036690610f8c565b6001600160a01b038216610baf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610366565b610bec81604051806060016040528060268152602001610fe5602691396001600160a01b0386166000908152602081905260409020549190610a9b565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610c1b90826108fb565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016108ee565b600061095a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a9b565b600060208083528351808285015260005b81811015610cdb57858101830151858201604001528201610cbf565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d1357600080fd5b919050565b60008060408385031215610d2b57600080fd5b610d3483610cfc565b946020939093013593505050565b60008083601f840112610d5457600080fd5b50813567ffffffffffffffff811115610d6c57600080fd5b6020830191508360208260051b8501011115610d8757600080fd5b9250929050565b600080600080600060608688031215610da657600080fd5b853567ffffffffffffffff80821115610dbe57600080fd5b610dca89838a01610d42565b90975095506020880135915080821115610de357600080fd5b50610df088828901610d42565b96999598509660400135949350505050565b600080600060608486031215610e1757600080fd5b610e2084610cfc565b9250610e2e60208501610cfc565b9150604084013590509250925092565b600060208284031215610e5057600080fd5b61095a82610cfc565b60008060408385031215610e6c57600080fd5b610e7583610cfc565b9150610e8360208401610cfc565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680610ed557607f821691505b602082108103610ef557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761048857610488610f11565b600060208284031215610f5057600080fd5b8151801515811461095a57600080fd5b600060018201610f7257610f72610f11565b5060010190565b8082018082111561048857610488610f11565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b8181038181111561048857610488610f1156fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220839986defea81e7369f28d6b34712e5bda45294a665a19c2706e704ca80c078764736f6c63430008130033

Deployed Bytecode Sourcemap

12894:1922:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13888:219;;;;;;;;;;;;;:::i;:::-;;5330:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7638:210;;;;;;;;;;-1:-1:-1;7638:210:0;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;7638:210:0;1004:187:1;13332:476:0;;;;;;;;;;-1:-1:-1;13332:476:0;;;;;:::i;:::-;;:::i;6450:108::-;;;;;;;;;;-1:-1:-1;6538:12:0;;6450:108;;;2560:25:1;;;2548:2;2533:18;6450:108:0;2414:177:1;8330:454:0;;;;;;;;;;-1:-1:-1;8330:454:0;;;;;:::i;:::-;;:::i;6292:93::-;;;;;;;;;;-1:-1:-1;6292:93:0;;6375:2;3071:36:1;;3059:2;3044:18;6292:93:0;2929:184:1;6621:177:0;;;;;;;;;;-1:-1:-1;6621:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;6772:18:0;6740:7;6772:18;;;;;;;;;;;;6621:177;1738:94;;;;;;;;;;;;;:::i;13072:61::-;;;;;;;;;;-1:-1:-1;13072:61:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;3483:25:1;;;3539:2;3524:18;;3517:34;;;;3456:18;13072:61:0;3309:248:1;1515:87:0;;;;;;;;;;-1:-1:-1;1588:6:0;;1515:87;;-1:-1:-1;;;;;1588:6:0;;;3708:51:1;;3696:2;3681:18;1515:87:0;3562:203:1;5549:104:0;;;;;;;;;;;;;:::i;7011:216::-;;;;;;;;;;-1:-1:-1;7011:216:0;;;;;:::i;:::-;;:::i;7290:201::-;;;;;;;;;;-1:-1:-1;7290:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;7456:18:0;;;7424:7;7456:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7290:201;1840:192;;;;;;;;;;-1:-1:-1;1840:192:0;;;;;:::i;:::-;;:::i;13888:219::-;1588:6;;-1:-1:-1;;;;;1588:6:0;1016:10;1650:23;1642:68;;;;-1:-1:-1;;;1642:68:0;;;;;;;:::i;:::-;;;;;;;;;13967:21:::1;13946:18;14026:7;1588:6:::0;;-1:-1:-1;;;;;1588:6:0;;1515:87;14026:7:::1;-1:-1:-1::0;;;;;14018:21:0::1;14047:10;14018:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13999:63;;;14081:7;14073:16;;;::::0;::::1;;13929:178;;13888:219::o:0;5330:100::-;5384:13;5417:5;5410:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5330:100;:::o;7638:210::-;7757:4;7779:39;1016:10;7802:7;7811:6;7779:8;:39::i;:::-;-1:-1:-1;7836:4:0;7638:210;;;;;:::o;13332:476::-;1588:6;;-1:-1:-1;;;;;1588:6:0;1016:10;1650:23;1642:68;;;;-1:-1:-1;;;1642:68:0;;;;;;;:::i;:::-;13463:9:::1;13458:343;13478:21:::0;;::::1;13458:343;;;13537:4;13522:34;13557:10;13569::::0;;13580:1;13569:13;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;13584:6;;13591:1;13584:9;;;;;;;:::i;:::-;;;;;;;13597:6;13584:20;;;;:::i;:::-;13522:83;::::0;-1:-1:-1;;;;;;13522:83:0::1;::::0;;;;;;-1:-1:-1;;;;;5686:15:1;;;13522:83:0::1;::::0;::::1;5668:34:1::0;5738:15;;;;5718:18;;;5711:43;5770:18;;;5763:34;5603:18;;13522:83:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13664:6;;13671:1;13664:9;;;;;;;:::i;:::-;;;;;;;13677:6;13664:20;;;;:::i;:::-;13621:18;:33;13640:10;;13651:1;13640:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13621:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13621:33:0;:63;13747:40:::1;13767:19;:11:::0;13781:5:::1;13767:19;:::i;:::-;13747:15;::::0;:19:::1;:40::i;:::-;13700:18;:33;13719:10;;13730:1;13719:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13700:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13700:33:0;:44:::1;;:87:::0;13501:3;::::1;::::0;::::1;:::i;:::-;;;;13458:343;;;;13332:476:::0;;;;;:::o;8330:454::-;8470:4;8487:36;8497:6;8505:9;8516:6;8487:9;:36::i;:::-;8534:220;8557:6;1016:10;8605:138;8661:6;8605:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8605:19:0;;;;;;:11;:19;;;;;;;;1016:10;8605:33;;;;;;;;;;:37;:138::i;:::-;8534:8;:220::i;:::-;-1:-1:-1;8772:4:0;8330:454;;;;;:::o;1738:94::-;1588:6;;-1:-1:-1;;;;;1588:6:0;1016:10;1650:23;1642:68;;;;-1:-1:-1;;;1642:68:0;;;;;;;:::i;:::-;1803:21:::1;1821:1;1803:9;:21::i;:::-;1738:94::o:0;5549:104::-;5605:13;5638:7;5631:14;;;;;:::i;7011:216::-;7133:4;7155:42;1016:10;7179:9;7190:6;7155:9;:42::i;1840:192::-;1588:6;;-1:-1:-1;;;;;1588:6:0;1016:10;1650:23;1642:68;;;;-1:-1:-1;;;1642:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1929:22:0;::::1;1921:73;;;::::0;-1:-1:-1;;;1921:73:0;;6432:2:1;1921:73:0::1;::::0;::::1;6414:21:1::0;6471:2;6451:18;;;6444:30;6510:34;6490:18;;;6483:62;-1:-1:-1;;;6561:18:1;;;6554:36;6607:19;;1921:73:0::1;6230:402:1::0;1921:73:0::1;2005:19;2015:8;2005:9;:19::i;:::-;1840:192:::0;:::o;11777:380::-;-1:-1:-1;;;;;11913:19:0;;11905:68;;;;-1:-1:-1;;;11905:68:0;;6839:2:1;11905:68:0;;;6821:21:1;6878:2;6858:18;;;6851:30;6917:34;6897:18;;;6890:62;-1:-1:-1;;;6968:18:1;;;6961:34;7012:19;;11905:68:0;6637:400:1;11905:68:0;-1:-1:-1;;;;;11992:21:0;;11984:68;;;;-1:-1:-1;;;11984:68:0;;7244:2:1;11984:68:0;;;7226:21:1;7283:2;7263:18;;;7256:30;7322:34;7302:18;;;7295:62;-1:-1:-1;;;7373:18:1;;;7366:32;7415:19;;11984:68:0;7042:398:1;11984:68:0;-1:-1:-1;;;;;12065:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12117:32;;2560:25:1;;;12117:32:0;;2533:18:1;12117:32:0;;;;;;;;11777:380;;;:::o;15083:181::-;15141:7;;15173:5;15177:1;15173;:5;:::i;:::-;15161:17;;15202:1;15197;:6;;15189:46;;;;-1:-1:-1;;;15189:46:0;;7777:2:1;15189:46:0;;;7759:21:1;7816:2;7796:18;;;7789:30;7855:29;7835:18;;;7828:57;7902:18;;15189:46:0;7575:351:1;15189:46:0;15255:1;15083:181;-1:-1:-1;;;15083:181:0:o;14119:692::-;-1:-1:-1;;;;;14251:18:0;;14243:68;;;;-1:-1:-1;;;14243:68:0;;;;;;;:::i;:::-;14344:4;-1:-1:-1;;;;;14330:19:0;;;14322:79;;;;-1:-1:-1;;;14322:79:0;;8539:2:1;14322:79:0;;;8521:21:1;8578:2;8558:18;;;8551:30;8617:34;8597:18;;;8590:62;-1:-1:-1;;;8668:18:1;;;8661:45;8723:19;;14322:79:0;8337:411:1;14322:79:0;14418:6;14428:1;14418:11;14414:93;;14446:28;14462:4;14468:2;14472:1;14446:15;:28::i;:::-;14119:692;;;:::o;14414:93::-;-1:-1:-1;;;;;14548:24:0;;;;;;:18;:24;;;;;:35;;;14529:15;:54;;;;:93;;-1:-1:-1;;;;;;14587:24:0;;14621:1;14587:24;;;:18;:24;;;;;:31;:35;;14529:93;14526:211;;;-1:-1:-1;;;;;14683:24:0;;;;;;:18;:24;;;;;;;;:31;6772:18;;;;;;;;14663:52;;:19;:52::i;:::-;14652:6;:64;;14644:73;;;;;;14758:33;14774:4;14780:2;14784:6;14758:15;:33::i;15986:192::-;16072:7;16108:12;16100:6;;;;16092:29;;;;-1:-1:-1;;;16092:29:0;;;;;;;;:::i;:::-;-1:-1:-1;16132:9:0;16144:5;16148:1;16144;:5;:::i;:::-;16132:17;15986:192;-1:-1:-1;;;;;15986:192:0:o;2040:173::-;2115:6;;;-1:-1:-1;;;;;2132:17:0;;;-1:-1:-1;;;;;;2132:17:0;;;;;;;2165:40;;2115:6;;;2132:17;2115:6;;2165:40;;2096:16;;2165:40;2085:128;2040:173;:::o;9276:610::-;-1:-1:-1;;;;;9416:20:0;;9408:70;;;;-1:-1:-1;;;9408:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9497:23:0;;9489:71;;;;-1:-1:-1;;;9489:71:0;;9088:2:1;9489:71:0;;;9070:21:1;9127:2;9107:18;;;9100:30;9166:34;9146:18;;;9139:62;-1:-1:-1;;;9217:18:1;;;9210:33;9260:19;;9489:71:0;8886:399:1;9489:71:0;9653:108;9689:6;9653:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9653:17:0;;:9;:17;;;;;;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;9633:17:0;;;:9;:17;;;;;;;;;;;:128;;;;9795:20;;;;;;;:32;;9820:6;9795:24;:32::i;:::-;-1:-1:-1;;;;;9772:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;9843:35;2560:25:1;;;9772:20:0;;9843:35;;;;;;2533:18:1;9843:35:0;2414:177:1;15547:136:0;15605:7;15632:43;15636:1;15639;15632:43;;;;;;;;;;;;;;;;;:3;:43::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1196:367::-;1259:8;1269:6;1323:3;1316:4;1308:6;1304:17;1300:27;1290:55;;1341:1;1338;1331:12;1290:55;-1:-1:-1;1364:20:1;;1407:18;1396:30;;1393:50;;;1439:1;1436;1429:12;1393:50;1476:4;1468:6;1464:17;1452:29;;1536:3;1529:4;1519:6;1516:1;1512:14;1504:6;1500:27;1496:38;1493:47;1490:67;;;1553:1;1550;1543:12;1490:67;1196:367;;;;;:::o;1568:841::-;1699:6;1707;1715;1723;1731;1784:2;1772:9;1763:7;1759:23;1755:32;1752:52;;;1800:1;1797;1790:12;1752:52;1840:9;1827:23;1869:18;1910:2;1902:6;1899:14;1896:34;;;1926:1;1923;1916:12;1896:34;1965:70;2027:7;2018:6;2007:9;2003:22;1965:70;:::i;:::-;2054:8;;-1:-1:-1;1939:96:1;-1:-1:-1;2142:2:1;2127:18;;2114:32;;-1:-1:-1;2158:16:1;;;2155:36;;;2187:1;2184;2177:12;2155:36;;2226:72;2290:7;2279:8;2268:9;2264:24;2226:72;:::i;:::-;1568:841;;;;-1:-1:-1;2317:8:1;2399:2;2384:18;2371:32;;1568:841;-1:-1:-1;;;;1568:841:1:o;2596:328::-;2673:6;2681;2689;2742:2;2730:9;2721:7;2717:23;2713:32;2710:52;;;2758:1;2755;2748:12;2710:52;2781:29;2800:9;2781:29;:::i;:::-;2771:39;;2829:38;2863:2;2852:9;2848:18;2829:38;:::i;:::-;2819:48;;2914:2;2903:9;2899:18;2886:32;2876:42;;2596:328;;;;;:::o;3118:186::-;3177:6;3230:2;3218:9;3209:7;3205:23;3201:32;3198:52;;;3246:1;3243;3236:12;3198:52;3269:29;3288:9;3269:29;:::i;3770:260::-;3838:6;3846;3899:2;3887:9;3878:7;3874:23;3870:32;3867:52;;;3915:1;3912;3905:12;3867:52;3938:29;3957:9;3938:29;:::i;:::-;3928:39;;3986:38;4020:2;4009:9;4005:18;3986:38;:::i;:::-;3976:48;;3770:260;;;;;:::o;4035:356::-;4237:2;4219:21;;;4256:18;;;4249:30;4315:34;4310:2;4295:18;;4288:62;4382:2;4367:18;;4035:356::o;4606:380::-;4685:1;4681:12;;;;4728;;;4749:61;;4803:4;4795:6;4791:17;4781:27;;4749:61;4856:2;4848:6;4845:14;4825:18;4822:38;4819:161;;4902:10;4897:3;4893:20;4890:1;4883:31;4937:4;4934:1;4927:15;4965:4;4962:1;4955:15;4819:161;;4606:380;;;:::o;4991:127::-;5052:10;5047:3;5043:20;5040:1;5033:31;5083:4;5080:1;5073:15;5107:4;5104:1;5097:15;5123:127;5184:10;5179:3;5175:20;5172:1;5165:31;5215:4;5212:1;5205:15;5239:4;5236:1;5229:15;5255:168;5328:9;;;5359;;5376:15;;;5370:22;;5356:37;5346:71;;5397:18;;:::i;5808:277::-;5875:6;5928:2;5916:9;5907:7;5903:23;5899:32;5896:52;;;5944:1;5941;5934:12;5896:52;5976:9;5970:16;6029:5;6022:13;6015:21;6008:5;6005:32;5995:60;;6051:1;6048;6041:12;6090:135;6129:3;6150:17;;;6147:43;;6170:18;;:::i;:::-;-1:-1:-1;6217:1:1;6206:13;;6090:135::o;7445:125::-;7510:9;;;7531:10;;;7528:36;;;7544:18;;:::i;7931:401::-;8133:2;8115:21;;;8172:2;8152:18;;;8145:30;8211:34;8206:2;8191:18;;8184:62;-1:-1:-1;;;8277:2:1;8262:18;;8255:35;8322:3;8307:19;;7931:401::o;8753:128::-;8820:9;;;8841:11;;;8838:37;;;8855:18;;:::i

Swarm Source

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