POL Price: $0.307562 (+2.15%)
Gas: 30 GWei
 

Overview

Max Total Supply

49,992,249,605.741878470431622613 HENS

Holders

14

Total Transfers

-

Market

Price

$0.00 @ 0.000000 POL

Onchain Market Cap

$0.00

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

Contract Source Code Verified (Exact Match)

Contract Name:
HensHouseToken

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2023-11-08
*/

// File: @openzeppelin/contracts/utils/Context.sol


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

pragma solidity ^0.8.0;

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

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


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

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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;


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

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

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

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol


// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

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

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

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

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

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

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

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

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

// File: sss.sol


pragma solidity ^0.8.0;



contract HensHouseToken is ERC20, Ownable {
    uint256 private constant _totalSupply = 50000000000 * 10**18; // 50 billion tokens with 18 decimal places
    uint256 private constant _burnRate = 5; // 0.005% burn rate
    address private mainAccount;

    constructor() ERC20("HensHouseToken", "HENS") {
        _mint(msg.sender, _totalSupply);
        mainAccount = msg.sender;
    }

    // Transfer function with automatic burning and sending to the main account
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        uint256 burnAmount = (amount * _burnRate) / 10000;
        uint256 sendToMainAmount = (amount * _burnRate) / 10000;
        uint256 sendAmount = amount - burnAmount - sendToMainAmount;

        // Ensure sender has enough balance to make the transfer
        require(balanceOf(msg.sender) >= amount, "Insufficient balance");

        // Burn tokens
        _burn(msg.sender, burnAmount);

        // Send tokens to the main account
        _transfer(msg.sender, mainAccount, sendToMainAmount);

        // Transfer remaining tokens
        _transfer(msg.sender, recipient, sendAmount);

        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600e81526020017f48656e73486f757365546f6b656e0000000000000000000000000000000000008152506040518060400160405280600481526020017f48454e53000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000969291906200037d565b508060049080519060200190620000af9291906200037d565b505050620000d2620000c66200013760201b60201c565b6200013f60201b60201c565b620000f0336ba18f07d736b90be5500000006200020560201b60201c565b33600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005cb565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000278576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200026f9062000480565b60405180910390fd5b6200028c600083836200037360201b60201c565b8060026000828254620002a09190620004d0565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003539190620004a2565b60405180910390a36200036f600083836200037860201b60201c565b5050565b505050565b505050565b8280546200038b9062000537565b90600052602060002090601f016020900481019282620003af5760008555620003fb565b82601f10620003ca57805160ff1916838001178555620003fb565b82800160010185558215620003fb579182015b82811115620003fa578251825591602001919060010190620003dd565b5b5090506200040a91906200040e565b5090565b5b80821115620004295760008160009055506001016200040f565b5090565b60006200043c601f83620004bf565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6200047a816200052d565b82525050565b600060208201905081810360008301526200049b816200042d565b9050919050565b6000602082019050620004b960008301846200046f565b92915050565b600082825260208201905092915050565b6000620004dd826200052d565b9150620004ea836200052d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200052257620005216200056d565b5b828201905092915050565b6000819050919050565b600060028204905060018216806200055057607f821691505b602082108114156200056757620005666200059c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b611a8880620005db6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063715018a61161008c578063a457c2d711610066578063a457c2d71461024f578063a9059cbb1461027f578063dd62ed3e146102af578063f2fde38b146102df576100ea565b8063715018a6146102095780638da5cb5b1461021357806395d89b4114610231576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806370a08231146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f76102fb565b60405161010491906115c3565b60405180910390f35b61012760048036038101906101229190611086565b61038d565b60405161013491906115a8565b60405180910390f35b6101456103b0565b6040516101529190611765565b60405180910390f35b61017560048036038101906101709190611037565b6103ba565b60405161018291906115a8565b60405180910390f35b6101936103e9565b6040516101a09190611780565b60405180910390f35b6101c360048036038101906101be9190611086565b6103f2565b6040516101d091906115a8565b60405180910390f35b6101f360048036038101906101ee9190610fd2565b610429565b6040516102009190611765565b60405180910390f35b610211610471565b005b61021b610485565b604051610228919061158d565b60405180910390f35b6102396104af565b60405161024691906115c3565b60405180910390f35b61026960048036038101906102649190611086565b610541565b60405161027691906115a8565b60405180910390f35b61029960048036038101906102949190611086565b6105b8565b6040516102a691906115a8565b60405180910390f35b6102c960048036038101906102c49190610ffb565b6106aa565b6040516102d69190611765565b60405180910390f35b6102f960048036038101906102f49190610fd2565b610731565b005b60606003805461030a90611954565b80601f016020809104026020016040519081016040528092919081815260200182805461033690611954565b80156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b5050505050905090565b6000806103986107b5565b90506103a58185856107bd565b600191505092915050565b6000600254905090565b6000806103c56107b5565b90506103d2858285610988565b6103dd858585610a14565b60019150509392505050565b60006012905090565b6000806103fd6107b5565b905061041e81858561040f85896106aa565b61041991906117b7565b6107bd565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610479610c8c565b6104836000610d0a565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546104be90611954565b80601f01602080910402602001604051908101604052809291908181526020018280546104ea90611954565b80156105375780601f1061050c57610100808354040283529160200191610537565b820191906000526020600020905b81548152906001019060200180831161051a57829003601f168201915b5050505050905090565b60008061054c6107b5565b9050600061055a82866106aa565b90508381101561059f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059690611745565b60405180910390fd5b6105ac82868684036107bd565b60019250505092915050565b6000806127106005846105cb919061183e565b6105d5919061180d565b905060006127106005856105e9919061183e565b6105f3919061180d565b905060008183866106049190611898565b61060e9190611898565b90508461061a33610429565b101561065b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610652906116a5565b60405180910390fd5b6106653384610dd0565b61069233600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610a14565b61069d338783610a14565b6001935050505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610739610c8c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090611625565b60405180910390fd5b6107b281610d0a565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561082d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082490611725565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561089d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089490611645565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161097b9190611765565b60405180910390a3505050565b600061099484846106aa565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a0e5781811015610a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f790611665565b60405180910390fd5b610a0d84848484036107bd565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7b90611705565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aeb906115e5565b60405180910390fd5b610aff838383610f9e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c90611685565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c739190611765565b60405180910390a3610c86848484610fa3565b50505050565b610c946107b5565b73ffffffffffffffffffffffffffffffffffffffff16610cb2610485565b73ffffffffffffffffffffffffffffffffffffffff1614610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff906116c5565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e37906116e5565b60405180910390fd5b610e4c82600083610f9e565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec990611605565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f859190611765565b60405180910390a3610f9983600084610fa3565b505050565b505050565b505050565b600081359050610fb781611a24565b92915050565b600081359050610fcc81611a3b565b92915050565b600060208284031215610fe457600080fd5b6000610ff284828501610fa8565b91505092915050565b6000806040838503121561100e57600080fd5b600061101c85828601610fa8565b925050602061102d85828601610fa8565b9150509250929050565b60008060006060848603121561104c57600080fd5b600061105a86828701610fa8565b935050602061106b86828701610fa8565b925050604061107c86828701610fbd565b9150509250925092565b6000806040838503121561109957600080fd5b60006110a785828601610fa8565b92505060206110b885828601610fbd565b9150509250929050565b6110cb816118cc565b82525050565b6110da816118de565b82525050565b60006110eb8261179b565b6110f581856117a6565b9350611105818560208601611921565b61110e81611a13565b840191505092915050565b60006111266023836117a6565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061118c6022836117a6565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006111f26026836117a6565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006112586022836117a6565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006112be601d836117a6565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b60006112fe6026836117a6565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113646014836117a6565b91507f496e73756666696369656e742062616c616e63650000000000000000000000006000830152602082019050919050565b60006113a46020836117a6565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006113e46021836117a6565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061144a6025836117a6565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114b06024836117a6565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006115166025836117a6565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6115788161190a565b82525050565b61158781611914565b82525050565b60006020820190506115a260008301846110c2565b92915050565b60006020820190506115bd60008301846110d1565b92915050565b600060208201905081810360008301526115dd81846110e0565b905092915050565b600060208201905081810360008301526115fe81611119565b9050919050565b6000602082019050818103600083015261161e8161117f565b9050919050565b6000602082019050818103600083015261163e816111e5565b9050919050565b6000602082019050818103600083015261165e8161124b565b9050919050565b6000602082019050818103600083015261167e816112b1565b9050919050565b6000602082019050818103600083015261169e816112f1565b9050919050565b600060208201905081810360008301526116be81611357565b9050919050565b600060208201905081810360008301526116de81611397565b9050919050565b600060208201905081810360008301526116fe816113d7565b9050919050565b6000602082019050818103600083015261171e8161143d565b9050919050565b6000602082019050818103600083015261173e816114a3565b9050919050565b6000602082019050818103600083015261175e81611509565b9050919050565b600060208201905061177a600083018461156f565b92915050565b6000602082019050611795600083018461157e565b92915050565b600081519050919050565b600082825260208201905092915050565b60006117c28261190a565b91506117cd8361190a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561180257611801611986565b5b828201905092915050565b60006118188261190a565b91506118238361190a565b925082611833576118326119b5565b5b828204905092915050565b60006118498261190a565b91506118548361190a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561188d5761188c611986565b5b828202905092915050565b60006118a38261190a565b91506118ae8361190a565b9250828210156118c1576118c0611986565b5b828203905092915050565b60006118d7826118ea565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561193f578082015181840152602081019050611924565b8381111561194e576000848401525b50505050565b6000600282049050600182168061196c57607f821691505b602082108114156119805761197f6119e4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611a2d816118cc565b8114611a3857600080fd5b50565b611a448161190a565b8114611a4f57600080fd5b5056fea264697066735822122093572c645b1ef873ca565187822482512fc8144e317f5c66d47deea54528583964736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063715018a61161008c578063a457c2d711610066578063a457c2d71461024f578063a9059cbb1461027f578063dd62ed3e146102af578063f2fde38b146102df576100ea565b8063715018a6146102095780638da5cb5b1461021357806395d89b4114610231576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806370a08231146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f76102fb565b60405161010491906115c3565b60405180910390f35b61012760048036038101906101229190611086565b61038d565b60405161013491906115a8565b60405180910390f35b6101456103b0565b6040516101529190611765565b60405180910390f35b61017560048036038101906101709190611037565b6103ba565b60405161018291906115a8565b60405180910390f35b6101936103e9565b6040516101a09190611780565b60405180910390f35b6101c360048036038101906101be9190611086565b6103f2565b6040516101d091906115a8565b60405180910390f35b6101f360048036038101906101ee9190610fd2565b610429565b6040516102009190611765565b60405180910390f35b610211610471565b005b61021b610485565b604051610228919061158d565b60405180910390f35b6102396104af565b60405161024691906115c3565b60405180910390f35b61026960048036038101906102649190611086565b610541565b60405161027691906115a8565b60405180910390f35b61029960048036038101906102949190611086565b6105b8565b6040516102a691906115a8565b60405180910390f35b6102c960048036038101906102c49190610ffb565b6106aa565b6040516102d69190611765565b60405180910390f35b6102f960048036038101906102f49190610fd2565b610731565b005b60606003805461030a90611954565b80601f016020809104026020016040519081016040528092919081815260200182805461033690611954565b80156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b5050505050905090565b6000806103986107b5565b90506103a58185856107bd565b600191505092915050565b6000600254905090565b6000806103c56107b5565b90506103d2858285610988565b6103dd858585610a14565b60019150509392505050565b60006012905090565b6000806103fd6107b5565b905061041e81858561040f85896106aa565b61041991906117b7565b6107bd565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610479610c8c565b6104836000610d0a565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546104be90611954565b80601f01602080910402602001604051908101604052809291908181526020018280546104ea90611954565b80156105375780601f1061050c57610100808354040283529160200191610537565b820191906000526020600020905b81548152906001019060200180831161051a57829003601f168201915b5050505050905090565b60008061054c6107b5565b9050600061055a82866106aa565b90508381101561059f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059690611745565b60405180910390fd5b6105ac82868684036107bd565b60019250505092915050565b6000806127106005846105cb919061183e565b6105d5919061180d565b905060006127106005856105e9919061183e565b6105f3919061180d565b905060008183866106049190611898565b61060e9190611898565b90508461061a33610429565b101561065b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610652906116a5565b60405180910390fd5b6106653384610dd0565b61069233600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610a14565b61069d338783610a14565b6001935050505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610739610c8c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090611625565b60405180910390fd5b6107b281610d0a565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561082d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082490611725565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561089d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089490611645565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161097b9190611765565b60405180910390a3505050565b600061099484846106aa565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a0e5781811015610a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f790611665565b60405180910390fd5b610a0d84848484036107bd565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7b90611705565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aeb906115e5565b60405180910390fd5b610aff838383610f9e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c90611685565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c739190611765565b60405180910390a3610c86848484610fa3565b50505050565b610c946107b5565b73ffffffffffffffffffffffffffffffffffffffff16610cb2610485565b73ffffffffffffffffffffffffffffffffffffffff1614610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff906116c5565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e37906116e5565b60405180910390fd5b610e4c82600083610f9e565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec990611605565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f859190611765565b60405180910390a3610f9983600084610fa3565b505050565b505050565b505050565b600081359050610fb781611a24565b92915050565b600081359050610fcc81611a3b565b92915050565b600060208284031215610fe457600080fd5b6000610ff284828501610fa8565b91505092915050565b6000806040838503121561100e57600080fd5b600061101c85828601610fa8565b925050602061102d85828601610fa8565b9150509250929050565b60008060006060848603121561104c57600080fd5b600061105a86828701610fa8565b935050602061106b86828701610fa8565b925050604061107c86828701610fbd565b9150509250925092565b6000806040838503121561109957600080fd5b60006110a785828601610fa8565b92505060206110b885828601610fbd565b9150509250929050565b6110cb816118cc565b82525050565b6110da816118de565b82525050565b60006110eb8261179b565b6110f581856117a6565b9350611105818560208601611921565b61110e81611a13565b840191505092915050565b60006111266023836117a6565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061118c6022836117a6565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006111f26026836117a6565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006112586022836117a6565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006112be601d836117a6565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b60006112fe6026836117a6565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113646014836117a6565b91507f496e73756666696369656e742062616c616e63650000000000000000000000006000830152602082019050919050565b60006113a46020836117a6565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006113e46021836117a6565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061144a6025836117a6565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114b06024836117a6565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006115166025836117a6565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6115788161190a565b82525050565b61158781611914565b82525050565b60006020820190506115a260008301846110c2565b92915050565b60006020820190506115bd60008301846110d1565b92915050565b600060208201905081810360008301526115dd81846110e0565b905092915050565b600060208201905081810360008301526115fe81611119565b9050919050565b6000602082019050818103600083015261161e8161117f565b9050919050565b6000602082019050818103600083015261163e816111e5565b9050919050565b6000602082019050818103600083015261165e8161124b565b9050919050565b6000602082019050818103600083015261167e816112b1565b9050919050565b6000602082019050818103600083015261169e816112f1565b9050919050565b600060208201905081810360008301526116be81611357565b9050919050565b600060208201905081810360008301526116de81611397565b9050919050565b600060208201905081810360008301526116fe816113d7565b9050919050565b6000602082019050818103600083015261171e8161143d565b9050919050565b6000602082019050818103600083015261173e816114a3565b9050919050565b6000602082019050818103600083015261175e81611509565b9050919050565b600060208201905061177a600083018461156f565b92915050565b6000602082019050611795600083018461157e565b92915050565b600081519050919050565b600082825260208201905092915050565b60006117c28261190a565b91506117cd8361190a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561180257611801611986565b5b828201905092915050565b60006118188261190a565b91506118238361190a565b925082611833576118326119b5565b5b828204905092915050565b60006118498261190a565b91506118548361190a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561188d5761188c611986565b5b828202905092915050565b60006118a38261190a565b91506118ae8361190a565b9250828210156118c1576118c0611986565b5b828203905092915050565b60006118d7826118ea565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561193f578082015181840152602081019050611924565b8381111561194e576000848401525b50505050565b6000600282049050600182168061196c57607f821691505b602082108114156119805761197f6119e4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611a2d816118cc565b8114611a3857600080fd5b50565b611a448161190a565b8114611a4f57600080fd5b5056fea264697066735822122093572c645b1ef873ca565187822482512fc8144e317f5c66d47deea54528583964736f6c63430008000033

Deployed Bytecode Sourcemap

20585:1209:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9344:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11695:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10464:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12476:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10306:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13180:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10635:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2769:103;;;:::i;:::-;;2128:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9563:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13921:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21066:725;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11224:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3027:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9344:100;9398:13;9431:5;9424:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9344:100;:::o;11695:201::-;11778:4;11795:13;11811:12;:10;:12::i;:::-;11795:28;;11834:32;11843:5;11850:7;11859:6;11834:8;:32::i;:::-;11884:4;11877:11;;;11695:201;;;;:::o;10464:108::-;10525:7;10552:12;;10545:19;;10464:108;:::o;12476:295::-;12607:4;12624:15;12642:12;:10;:12::i;:::-;12624:30;;12665:38;12681:4;12687:7;12696:6;12665:15;:38::i;:::-;12714:27;12724:4;12730:2;12734:6;12714:9;:27::i;:::-;12759:4;12752:11;;;12476:295;;;;;:::o;10306:93::-;10364:5;10389:2;10382:9;;10306:93;:::o;13180:238::-;13268:4;13285:13;13301:12;:10;:12::i;:::-;13285:28;;13324:64;13333:5;13340:7;13377:10;13349:25;13359:5;13366:7;13349:9;:25::i;:::-;:38;;;;:::i;:::-;13324:8;:64::i;:::-;13406:4;13399:11;;;13180:238;;;;:::o;10635:127::-;10709:7;10736:9;:18;10746:7;10736:18;;;;;;;;;;;;;;;;10729:25;;10635:127;;;:::o;2769:103::-;2014:13;:11;:13::i;:::-;2834:30:::1;2861:1;2834:18;:30::i;:::-;2769:103::o:0;2128:87::-;2174:7;2201:6;;;;;;;;;;;2194:13;;2128:87;:::o;9563:104::-;9619:13;9652:7;9645:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9563:104;:::o;13921:436::-;14014:4;14031:13;14047:12;:10;:12::i;:::-;14031:28;;14070:24;14097:25;14107:5;14114:7;14097:9;:25::i;:::-;14070:52;;14161:15;14141:16;:35;;14133:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14254:60;14263:5;14270:7;14298:15;14279:16;:34;14254:8;:60::i;:::-;14345:4;14338:11;;;;13921:436;;;;:::o;21066:725::-;21144:4;21161:18;21205:5;20782:1;21183:6;:18;;;;:::i;:::-;21182:28;;;;:::i;:::-;21161:49;;21221:24;21271:5;20782:1;21249:6;:18;;;;:::i;:::-;21248:28;;;;:::i;:::-;21221:55;;21287:18;21330:16;21317:10;21308:6;:19;;;;:::i;:::-;:38;;;;:::i;:::-;21287:59;;21458:6;21433:21;21443:10;21433:9;:21::i;:::-;:31;;21425:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21526:29;21532:10;21544;21526:5;:29::i;:::-;21612:52;21622:10;21634:11;;;;;;;;;;;21647:16;21612:9;:52::i;:::-;21715:44;21725:10;21737:9;21748:10;21715:9;:44::i;:::-;21779:4;21772:11;;;;;21066:725;;;;:::o;11224:151::-;11313:7;11340:11;:18;11352:5;11340:18;;;;;;;;;;;;;;;:27;11359:7;11340:27;;;;;;;;;;;;;;;;11333:34;;11224:151;;;;:::o;3027:201::-;2014:13;:11;:13::i;:::-;3136:1:::1;3116:22;;:8;:22;;;;3108:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3192:28;3211:8;3192:18;:28::i;:::-;3027:201:::0;:::o;679:98::-;732:7;759:10;752:17;;679:98;:::o;17948:380::-;18101:1;18084:19;;:5;:19;;;;18076:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18182:1;18163:21;;:7;:21;;;;18155:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18266:6;18236:11;:18;18248:5;18236:18;;;;;;;;;;;;;;;:27;18255:7;18236:27;;;;;;;;;;;;;;;:36;;;;18304:7;18288:32;;18297:5;18288:32;;;18313:6;18288:32;;;;;;:::i;:::-;;;;;;;;17948:380;;;:::o;18619:453::-;18754:24;18781:25;18791:5;18798:7;18781:9;:25::i;:::-;18754:52;;18841:17;18821:16;:37;18817:248;;18903:6;18883:16;:26;;18875:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18987:51;18996:5;19003:7;19031:6;19012:16;:25;18987:8;:51::i;:::-;18817:248;18619:453;;;;:::o;14827:840::-;14974:1;14958:18;;:4;:18;;;;14950:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15051:1;15037:16;;:2;:16;;;;15029:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15106:38;15127:4;15133:2;15137:6;15106:20;:38::i;:::-;15157:19;15179:9;:15;15189:4;15179:15;;;;;;;;;;;;;;;;15157:37;;15228:6;15213:11;:21;;15205:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15345:6;15331:11;:20;15313:9;:15;15323:4;15313:15;;;;;;;;;;;;;;;:38;;;;15548:6;15531:9;:13;15541:2;15531:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15598:2;15583:26;;15592:4;15583:26;;;15602:6;15583:26;;;;;;:::i;:::-;;;;;;;;15622:37;15642:4;15648:2;15652:6;15622:19;:37::i;:::-;14827:840;;;;:::o;2293:132::-;2368:12;:10;:12::i;:::-;2357:23;;:7;:5;:7::i;:::-;:23;;;2349:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2293:132::o;3388:191::-;3462:16;3481:6;;;;;;;;;;;3462:25;;3507:8;3498:6;;:17;;;;;;;;;;;;;;;;;;3562:8;3531:40;;3552:8;3531:40;;;;;;;;;;;;3388:191;;:::o;16835:675::-;16938:1;16919:21;;:7;:21;;;;16911:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16991:49;17012:7;17029:1;17033:6;16991:20;:49::i;:::-;17053:22;17078:9;:18;17088:7;17078:18;;;;;;;;;;;;;;;;17053:43;;17133:6;17115:14;:24;;17107:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17252:6;17235:14;:23;17214:9;:18;17224:7;17214:18;;;;;;;;;;;;;;;:44;;;;17369:6;17353:12;;:22;;;;;;;;;;;17430:1;17404:37;;17413:7;17404:37;;;17434:6;17404:37;;;;;;:::i;:::-;;;;;;;;17454:48;17474:7;17491:1;17495:6;17454:19;:48::i;:::-;16835:675;;;:::o;19672:125::-;;;;:::o;20401:124::-;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;;;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;;;;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;;;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:118::-;2036:24;2054:5;2036:24;:::i;:::-;2031:3;2024:37;2014:53;;:::o;2073:109::-;2154:21;2169:5;2154:21;:::i;:::-;2149:3;2142:34;2132:50;;:::o;2188:364::-;;2304:39;2337:5;2304:39;:::i;:::-;2359:71;2423:6;2418:3;2359:71;:::i;:::-;2352:78;;2439:52;2484:6;2479:3;2472:4;2465:5;2461:16;2439:52;:::i;:::-;2516:29;2538:6;2516:29;:::i;:::-;2511:3;2507:39;2500:46;;2280:272;;;;;:::o;2558:367::-;;2721:67;2785:2;2780:3;2721:67;:::i;:::-;2714:74;;2818:34;2814:1;2809:3;2805:11;2798:55;2884:5;2879:2;2874:3;2870:12;2863:27;2916:2;2911:3;2907:12;2900:19;;2704:221;;;:::o;2931:366::-;;3094:67;3158:2;3153:3;3094:67;:::i;:::-;3087:74;;3191:34;3187:1;3182:3;3178:11;3171:55;3257:4;3252:2;3247:3;3243:12;3236:26;3288:2;3283:3;3279:12;3272:19;;3077:220;;;:::o;3303:370::-;;3466:67;3530:2;3525:3;3466:67;:::i;:::-;3459:74;;3563:34;3559:1;3554:3;3550:11;3543:55;3629:8;3624:2;3619:3;3615:12;3608:30;3664:2;3659:3;3655:12;3648:19;;3449:224;;;:::o;3679:366::-;;3842:67;3906:2;3901:3;3842:67;:::i;:::-;3835:74;;3939:34;3935:1;3930:3;3926:11;3919:55;4005:4;4000:2;3995:3;3991:12;3984:26;4036:2;4031:3;4027:12;4020:19;;3825:220;;;:::o;4051:327::-;;4214:67;4278:2;4273:3;4214:67;:::i;:::-;4207:74;;4311:31;4307:1;4302:3;4298:11;4291:52;4369:2;4364:3;4360:12;4353:19;;4197:181;;;:::o;4384:370::-;;4547:67;4611:2;4606:3;4547:67;:::i;:::-;4540:74;;4644:34;4640:1;4635:3;4631:11;4624:55;4710:8;4705:2;4700:3;4696:12;4689:30;4745:2;4740:3;4736:12;4729:19;;4530:224;;;:::o;4760:318::-;;4923:67;4987:2;4982:3;4923:67;:::i;:::-;4916:74;;5020:22;5016:1;5011:3;5007:11;5000:43;5069:2;5064:3;5060:12;5053:19;;4906:172;;;:::o;5084:330::-;;5247:67;5311:2;5306:3;5247:67;:::i;:::-;5240:74;;5344:34;5340:1;5335:3;5331:11;5324:55;5405:2;5400:3;5396:12;5389:19;;5230:184;;;:::o;5420:365::-;;5583:67;5647:2;5642:3;5583:67;:::i;:::-;5576:74;;5680:34;5676:1;5671:3;5667:11;5660:55;5746:3;5741:2;5736:3;5732:12;5725:25;5776:2;5771:3;5767:12;5760:19;;5566:219;;;:::o;5791:369::-;;5954:67;6018:2;6013:3;5954:67;:::i;:::-;5947:74;;6051:34;6047:1;6042:3;6038:11;6031:55;6117:7;6112:2;6107:3;6103:12;6096:29;6151:2;6146:3;6142:12;6135:19;;5937:223;;;:::o;6166:368::-;;6329:67;6393:2;6388:3;6329:67;:::i;:::-;6322:74;;6426:34;6422:1;6417:3;6413:11;6406:55;6492:6;6487:2;6482:3;6478:12;6471:28;6525:2;6520:3;6516:12;6509:19;;6312:222;;;:::o;6540:369::-;;6703:67;6767:2;6762:3;6703:67;:::i;:::-;6696:74;;6800:34;6796:1;6791:3;6787:11;6780:55;6866:7;6861:2;6856:3;6852:12;6845:29;6900:2;6895:3;6891:12;6884:19;;6686:223;;;:::o;6915:118::-;7002:24;7020:5;7002:24;:::i;:::-;6997:3;6990:37;6980:53;;:::o;7039:112::-;7122:22;7138:5;7122:22;:::i;:::-;7117:3;7110:35;7100:51;;:::o;7157:222::-;;7288:2;7277:9;7273:18;7265:26;;7301:71;7369:1;7358:9;7354:17;7345:6;7301:71;:::i;:::-;7255:124;;;;:::o;7385:210::-;;7510:2;7499:9;7495:18;7487:26;;7523:65;7585:1;7574:9;7570:17;7561:6;7523:65;:::i;:::-;7477:118;;;;:::o;7601:313::-;;7752:2;7741:9;7737:18;7729:26;;7801:9;7795:4;7791:20;7787:1;7776:9;7772:17;7765:47;7829:78;7902:4;7893:6;7829:78;:::i;:::-;7821:86;;7719:195;;;;:::o;7920:419::-;;8124:2;8113:9;8109:18;8101:26;;8173:9;8167:4;8163:20;8159:1;8148:9;8144:17;8137:47;8201:131;8327:4;8201:131;:::i;:::-;8193:139;;8091:248;;;:::o;8345:419::-;;8549:2;8538:9;8534:18;8526:26;;8598:9;8592:4;8588:20;8584:1;8573:9;8569:17;8562:47;8626:131;8752:4;8626:131;:::i;:::-;8618:139;;8516:248;;;:::o;8770:419::-;;8974:2;8963:9;8959:18;8951:26;;9023:9;9017:4;9013:20;9009:1;8998:9;8994:17;8987:47;9051:131;9177:4;9051:131;:::i;:::-;9043:139;;8941:248;;;:::o;9195:419::-;;9399:2;9388:9;9384:18;9376:26;;9448:9;9442:4;9438:20;9434:1;9423:9;9419:17;9412:47;9476:131;9602:4;9476:131;:::i;:::-;9468:139;;9366:248;;;:::o;9620:419::-;;9824:2;9813:9;9809:18;9801:26;;9873:9;9867:4;9863:20;9859:1;9848:9;9844:17;9837:47;9901:131;10027:4;9901:131;:::i;:::-;9893:139;;9791:248;;;:::o;10045:419::-;;10249:2;10238:9;10234:18;10226:26;;10298:9;10292:4;10288:20;10284:1;10273:9;10269:17;10262:47;10326:131;10452:4;10326:131;:::i;:::-;10318:139;;10216:248;;;:::o;10470:419::-;;10674:2;10663:9;10659:18;10651:26;;10723:9;10717:4;10713:20;10709:1;10698:9;10694:17;10687:47;10751:131;10877:4;10751:131;:::i;:::-;10743:139;;10641:248;;;:::o;10895:419::-;;11099:2;11088:9;11084:18;11076:26;;11148:9;11142:4;11138:20;11134:1;11123:9;11119:17;11112:47;11176:131;11302:4;11176:131;:::i;:::-;11168:139;;11066:248;;;:::o;11320:419::-;;11524:2;11513:9;11509:18;11501:26;;11573:9;11567:4;11563:20;11559:1;11548:9;11544:17;11537:47;11601:131;11727:4;11601:131;:::i;:::-;11593:139;;11491:248;;;:::o;11745:419::-;;11949:2;11938:9;11934:18;11926:26;;11998:9;11992:4;11988:20;11984:1;11973:9;11969:17;11962:47;12026:131;12152:4;12026:131;:::i;:::-;12018:139;;11916:248;;;:::o;12170:419::-;;12374:2;12363:9;12359:18;12351:26;;12423:9;12417:4;12413:20;12409:1;12398:9;12394:17;12387:47;12451:131;12577:4;12451:131;:::i;:::-;12443:139;;12341:248;;;:::o;12595:419::-;;12799:2;12788:9;12784:18;12776:26;;12848:9;12842:4;12838:20;12834:1;12823:9;12819:17;12812:47;12876:131;13002:4;12876:131;:::i;:::-;12868:139;;12766:248;;;:::o;13020:222::-;;13151:2;13140:9;13136:18;13128:26;;13164:71;13232:1;13221:9;13217:17;13208:6;13164:71;:::i;:::-;13118:124;;;;:::o;13248:214::-;;13375:2;13364:9;13360:18;13352:26;;13388:67;13452:1;13441:9;13437:17;13428:6;13388:67;:::i;:::-;13342:120;;;;:::o;13468:99::-;;13554:5;13548:12;13538:22;;13527:40;;;:::o;13573:169::-;;13691:6;13686:3;13679:19;13731:4;13726:3;13722:14;13707:29;;13669:73;;;;:::o;13748:305::-;;13807:20;13825:1;13807:20;:::i;:::-;13802:25;;13841:20;13859:1;13841:20;:::i;:::-;13836:25;;13995:1;13927:66;13923:74;13920:1;13917:81;13914:2;;;14001:18;;:::i;:::-;13914:2;14045:1;14042;14038:9;14031:16;;13792:261;;;;:::o;14059:185::-;;14116:20;14134:1;14116:20;:::i;:::-;14111:25;;14150:20;14168:1;14150:20;:::i;:::-;14145:25;;14189:1;14179:2;;14194:18;;:::i;:::-;14179:2;14236:1;14233;14229:9;14224:14;;14101:143;;;;:::o;14250:348::-;;14313:20;14331:1;14313:20;:::i;:::-;14308:25;;14347:20;14365:1;14347:20;:::i;:::-;14342:25;;14535:1;14467:66;14463:74;14460:1;14457:81;14452:1;14445:9;14438:17;14434:105;14431:2;;;14542:18;;:::i;:::-;14431:2;14590:1;14587;14583:9;14572:20;;14298:300;;;;:::o;14604:191::-;;14664:20;14682:1;14664:20;:::i;:::-;14659:25;;14698:20;14716:1;14698:20;:::i;:::-;14693:25;;14737:1;14734;14731:8;14728:2;;;14742:18;;:::i;:::-;14728:2;14787:1;14784;14780:9;14772:17;;14649:146;;;;:::o;14801:96::-;;14867:24;14885:5;14867:24;:::i;:::-;14856:35;;14846:51;;;:::o;14903:90::-;;14980:5;14973:13;14966:21;14955:32;;14945:48;;;:::o;14999:126::-;;15076:42;15069:5;15065:54;15054:65;;15044:81;;;:::o;15131:77::-;;15197:5;15186:16;;15176:32;;;:::o;15214:86::-;;15289:4;15282:5;15278:16;15267:27;;15257:43;;;:::o;15306:307::-;15374:1;15384:113;15398:6;15395:1;15392:13;15384:113;;;15483:1;15478:3;15474:11;15468:18;15464:1;15459:3;15455:11;15448:39;15420:2;15417:1;15413:10;15408:15;;15384:113;;;15515:6;15512:1;15509:13;15506:2;;;15595:1;15586:6;15581:3;15577:16;15570:27;15506:2;15355:258;;;;:::o;15619:320::-;;15700:1;15694:4;15690:12;15680:22;;15747:1;15741:4;15737:12;15768:18;15758:2;;15824:4;15816:6;15812:17;15802:27;;15758:2;15886;15878:6;15875:14;15855:18;15852:38;15849:2;;;15905:18;;:::i;:::-;15849:2;15670:269;;;;:::o;15945:180::-;15993:77;15990:1;15983:88;16090:4;16087:1;16080:15;16114:4;16111:1;16104:15;16131:180;16179:77;16176:1;16169:88;16276:4;16273:1;16266:15;16300:4;16297:1;16290:15;16317:180;16365:77;16362:1;16355:88;16462:4;16459:1;16452:15;16486:4;16483:1;16476:15;16503:102;;16595:2;16591:7;16586:2;16579:5;16575:14;16571:28;16561:38;;16551:54;;;:::o;16611:122::-;16684:24;16702:5;16684:24;:::i;:::-;16677:5;16674:35;16664:2;;16723:1;16720;16713:12;16664:2;16654:79;:::o;16739:122::-;16812:24;16830:5;16812:24;:::i;:::-;16805:5;16802:35;16792:2;;16851:1;16848;16841:12;16792:2;16782:79;:::o

Swarm Source

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