ETH Price: $2,963.07 (+3.42%)
Gas: 1 Gwei

Token

LK99 (LK99)
 

Overview

Max Total Supply

99,000,000,000,000 LK99

Holders

189

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
20,241,567,190.174757071641510338 LK99

Value
$0.00
0x97d6f05beabc35b7a5f882957baa007e3c9b323a
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:
LK99

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-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.7.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 anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _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: @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol


// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)

pragma solidity ^0.8.0;



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

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

// File: contracts/lk99.sol



pragma solidity ^0.8.0;




contract LK99 is ERC20, ERC20Burnable, Ownable {
    mapping(uint256 => Proposal) private _proposals;

    struct Proposal {
        string description;
        uint256 voteCount;
    }

    uint256 private _nextProposalId = 1;

    constructor() ERC20("LK99", "LK99") {
        _mint(msg.sender, 99000000000000 * (10 ** uint256(decimals())));
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal override {
        super._beforeTokenTransfer(from, to, amount);
    }

    function createProposal(string calldata description) public onlyOwner returns (uint256) {
        _proposals[_nextProposalId] = Proposal(description, 0);
        return _nextProposalId++;
    }

    function vote(uint256 proposalId) public {
        require(keccak256(abi.encodePacked(_proposals[proposalId].description)) != keccak256(abi.encodePacked("")), "ERC20: proposal does not exist");
        _proposals[proposalId].voteCount += balanceOf(msg.sender);
    }

    function getProposal(uint256 proposalId) public view returns (string memory description, uint256 voteCount) {
        require(keccak256(abi.encodePacked(_proposals[proposalId].description)) != keccak256(abi.encodePacked("")), "ERC20: proposal does not exist");
        return (_proposals[proposalId].description, _proposals[proposalId].voteCount);
    }
}

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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"description","type":"string"}],"name":"createProposal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","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":"uint256","name":"proposalId","type":"uint256"}],"name":"getProposal","outputs":[{"internalType":"string","name":"description","type":"string"},{"internalType":"uint256","name":"voteCount","type":"uint256"}],"stateMutability":"view","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":"to","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"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260016007553480156200001657600080fd5b506040518060400160405280600481526020017f4c4b3939000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4c4b3939000000000000000000000000000000000000000000000000000000008152508160039081620000949190620005f9565b508060049081620000a69190620005f9565b505050620000c9620000bd6200011460201b60201c565b6200011c60201b60201c565b6200010e33620000de620001e260201b60201c565b60ff16600a620000ef919062000863565b655a0a3bd53000620001029190620008b4565b620001eb60201b60201c565b620009eb565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200025d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002549062000960565b60405180910390fd5b62000271600083836200035860201b60201c565b806002600082825462000285919062000982565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003389190620009ce565b60405180910390a362000354600083836200037560201b60201c565b5050565b620003708383836200037a60201b62000b001760201c565b505050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200040157607f821691505b602082108103620004175762000416620003b9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000442565b6200048d868362000442565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004da620004d4620004ce84620004a5565b620004af565b620004a5565b9050919050565b6000819050919050565b620004f683620004b9565b6200050e6200050582620004e1565b8484546200044f565b825550505050565b600090565b6200052562000516565b62000532818484620004eb565b505050565b5b818110156200055a576200054e6000826200051b565b60018101905062000538565b5050565b601f821115620005a95762000573816200041d565b6200057e8462000432565b810160208510156200058e578190505b620005a66200059d8562000432565b83018262000537565b50505b505050565b600082821c905092915050565b6000620005ce60001984600802620005ae565b1980831691505092915050565b6000620005e98383620005bb565b9150826002028217905092915050565b62000604826200037f565b67ffffffffffffffff81111562000620576200061f6200038a565b5b6200062c8254620003e8565b620006398282856200055e565b600060209050601f8311600181146200067157600084156200065c578287015190505b620006688582620005db565b865550620006d8565b601f19841662000681866200041d565b60005b82811015620006ab5784890151825560018201915060208501945060208101905062000684565b86831015620006cb5784890151620006c7601f891682620005bb565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200076e57808604811115620007465762000745620006e0565b5b6001851615620007565780820291505b808102905062000766856200070f565b945062000726565b94509492505050565b6000826200078957600190506200085c565b816200079957600090506200085c565b8160018114620007b25760028114620007bd57620007f3565b60019150506200085c565b60ff841115620007d257620007d1620006e0565b5b8360020a915084821115620007ec57620007eb620006e0565b5b506200085c565b5060208310610133831016604e8410600b84101617156200082d5782820a905083811115620008275762000826620006e0565b5b6200085c565b6200083c84848460016200071c565b92509050818404811115620008565762000855620006e0565b5b81810290505b9392505050565b60006200087082620004a5565b91506200087d83620004a5565b9250620008ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000777565b905092915050565b6000620008c182620004a5565b9150620008ce83620004a5565b9250828202620008de81620004a5565b91508282048414831517620008f857620008f7620006e0565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000948601f83620008ff565b9150620009558262000910565b602082019050919050565b600060208201905081810360008301526200097b8162000939565b9050919050565b60006200098f82620004a5565b91506200099c83620004a5565b9250828201905080821115620009b757620009b6620006e0565b5b92915050565b620009c881620004a5565b82525050565b6000602082019050620009e56000830184620009bd565b92915050565b61225280620009fb6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063a457c2d711610071578063a457c2d71461030a578063a9059cbb1461033a578063c7f758a81461036a578063dd62ed3e1461039b578063f2fde38b146103cb57610121565b806370a0823114610278578063715018a6146102a857806379cc6790146102b25780638da5cb5b146102ce57806395d89b41146102ec57610121565b806323b872dd116100f457806323b872dd146101ae578063313ce567146101de57806339509351146101fc57806342966c681461022c57806349c2a1a61461024857610121565b80630121b93f1461012657806306fdde0314610142578063095ea7b31461016057806318160ddd14610190575b600080fd5b610140600480360381019061013b919061133e565b6103e7565b005b61014a6104c0565b60405161015791906113fb565b60405180910390f35b61017a6004803603810190610175919061147b565b610552565b60405161018791906114d6565b60405180910390f35b610198610575565b6040516101a59190611500565b60405180910390f35b6101c860048036038101906101c3919061151b565b61057f565b6040516101d591906114d6565b60405180910390f35b6101e66105ae565b6040516101f3919061158a565b60405180910390f35b6102166004803603810190610211919061147b565b6105b7565b60405161022391906114d6565b60405180910390f35b6102466004803603810190610241919061133e565b6105ee565b005b610262600480360381019061025d919061160a565b610602565b60405161026f9190611500565b60405180910390f35b610292600480360381019061028d9190611657565b6106bd565b60405161029f9190611500565b60405180910390f35b6102b0610705565b005b6102cc60048036038101906102c7919061147b565b610719565b005b6102d6610739565b6040516102e39190611693565b60405180910390f35b6102f4610763565b60405161030191906113fb565b60405180910390f35b610324600480360381019061031f919061147b565b6107f5565b60405161033191906114d6565b60405180910390f35b610354600480360381019061034f919061147b565b61086c565b60405161036191906114d6565b60405180910390f35b610384600480360381019061037f919061133e565b61088f565b6040516103929291906116ae565b60405180910390f35b6103b560048036038101906103b091906116de565b6109f6565b6040516103c29190611500565b60405180910390f35b6103e560048036038101906103e09190611657565b610a7d565b005b6040516020016103f69061174f565b6040516020818303038152906040528051906020012060066000838152602001908152602001600020600001604051602001610432919061185c565b6040516020818303038152906040528051906020012003610488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047f906118bf565b60405180910390fd5b610491336106bd565b6006600083815260200190815260200160002060010160008282546104b6919061190e565b9250508190555050565b6060600380546104cf90611793565b80601f01602080910402602001604051908101604052809291908181526020018280546104fb90611793565b80156105485780601f1061051d57610100808354040283529160200191610548565b820191906000526020600020905b81548152906001019060200180831161052b57829003601f168201915b5050505050905090565b60008061055d610b05565b905061056a818585610b0d565b600191505092915050565b6000600254905090565b60008061058a610b05565b9050610597858285610cd6565b6105a2858585610d62565b60019150509392505050565b60006012905090565b6000806105c2610b05565b90506105e38185856105d485896109f6565b6105de919061190e565b610b0d565b600191505092915050565b6105ff6105f9610b05565b82610fd8565b50565b600061060c6111a5565b604051806040016040528084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152602001600081525060066000600754815260200190815260200160002060008201518160000190816106909190611b08565b5060208201518160010155905050600760008154809291906106b190611bda565b91905055905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61070d6111a5565b6107176000611223565b565b61072b82610725610b05565b83610cd6565b6107358282610fd8565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461077290611793565b80601f016020809104026020016040519081016040528092919081815260200182805461079e90611793565b80156107eb5780601f106107c0576101008083540402835291602001916107eb565b820191906000526020600020905b8154815290600101906020018083116107ce57829003601f168201915b5050505050905090565b600080610800610b05565b9050600061080e82866109f6565b905083811015610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a90611c94565b60405180910390fd5b6108608286868403610b0d565b60019250505092915050565b600080610877610b05565b9050610884818585610d62565b600191505092915050565b606060006040516020016108a29061174f565b60405160208183030381529060405280519060200120600660008581526020019081526020016000206000016040516020016108de919061185c565b6040516020818303038152906040528051906020012003610934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092b906118bf565b60405180910390fd5b60066000848152602001908152602001600020600001600660008581526020019081526020016000206001015481805461096d90611793565b80601f016020809104026020016040519081016040528092919081815260200182805461099990611793565b80156109e65780601f106109bb576101008083540402835291602001916109e6565b820191906000526020600020905b8154815290600101906020018083116109c957829003601f168201915b5050505050915091509150915091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a856111a5565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aeb90611d26565b60405180910390fd5b610afd81611223565b50565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7390611db8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be290611e4a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cc99190611500565b60405180910390a3505050565b6000610ce284846109f6565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610d5c5781811015610d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4590611eb6565b60405180910390fd5b610d5b8484848403610b0d565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc890611f48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3790611fda565b60405180910390fd5b610e4b8383836112e9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec89061206c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fbf9190611500565b60405180910390a3610fd28484846112f9565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103e906120fe565b60405180910390fd5b611053826000836112e9565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090612190565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161118c9190611500565b60405180910390a36111a0836000846112f9565b505050565b6111ad610b05565b73ffffffffffffffffffffffffffffffffffffffff166111cb610739565b73ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611218906121fc565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6112f4838383610b00565b505050565b505050565b600080fd5b600080fd5b6000819050919050565b61131b81611308565b811461132657600080fd5b50565b60008135905061133881611312565b92915050565b600060208284031215611354576113536112fe565b5b600061136284828501611329565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156113a557808201518184015260208101905061138a565b60008484015250505050565b6000601f19601f8301169050919050565b60006113cd8261136b565b6113d78185611376565b93506113e7818560208601611387565b6113f0816113b1565b840191505092915050565b6000602082019050818103600083015261141581846113c2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114488261141d565b9050919050565b6114588161143d565b811461146357600080fd5b50565b6000813590506114758161144f565b92915050565b60008060408385031215611492576114916112fe565b5b60006114a085828601611466565b92505060206114b185828601611329565b9150509250929050565b60008115159050919050565b6114d0816114bb565b82525050565b60006020820190506114eb60008301846114c7565b92915050565b6114fa81611308565b82525050565b600060208201905061151560008301846114f1565b92915050565b600080600060608486031215611534576115336112fe565b5b600061154286828701611466565b935050602061155386828701611466565b925050604061156486828701611329565b9150509250925092565b600060ff82169050919050565b6115848161156e565b82525050565b600060208201905061159f600083018461157b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126115ca576115c96115a5565b5b8235905067ffffffffffffffff8111156115e7576115e66115aa565b5b602083019150836001820283011115611603576116026115af565b5b9250929050565b60008060208385031215611621576116206112fe565b5b600083013567ffffffffffffffff81111561163f5761163e611303565b5b61164b858286016115b4565b92509250509250929050565b60006020828403121561166d5761166c6112fe565b5b600061167b84828501611466565b91505092915050565b61168d8161143d565b82525050565b60006020820190506116a86000830184611684565b92915050565b600060408201905081810360008301526116c881856113c2565b90506116d760208301846114f1565b9392505050565b600080604083850312156116f5576116f46112fe565b5b600061170385828601611466565b925050602061171485828601611466565b9150509250929050565b600081905092915050565b50565b600061173960008361171e565b915061174482611729565b600082019050919050565b600061175a8261172c565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806117ab57607f821691505b6020821081036117be576117bd611764565b5b50919050565b60008190508160005260206000209050919050565b600081546117e681611793565b6117f0818661171e565b9450600182166000811461180b576001811461182057611853565b60ff1983168652811515820286019350611853565b611829856117c4565b60005b8381101561184b5781548189015260018201915060208101905061182c565b838801955050505b50505092915050565b600061186882846117d9565b915081905092915050565b7f45524332303a2070726f706f73616c20646f6573206e6f742065786973740000600082015250565b60006118a9601e83611376565b91506118b482611873565b602082019050919050565b600060208201905081810360008301526118d88161189c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061191982611308565b915061192483611308565b925082820190508082111561193c5761193b6118df565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020601f8301049050919050565b600082821b905092915050565b6000600883026119be7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611981565b6119c88683611981565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611a05611a006119fb84611308565b6119e0565b611308565b9050919050565b6000819050919050565b611a1f836119ea565b611a33611a2b82611a0c565b84845461198e565b825550505050565b600090565b611a48611a3b565b611a53818484611a16565b505050565b5b81811015611a7757611a6c600082611a40565b600181019050611a59565b5050565b601f821115611abc57611a8d816117c4565b611a9684611971565b81016020851015611aa5578190505b611ab9611ab185611971565b830182611a58565b50505b505050565b600082821c905092915050565b6000611adf60001984600802611ac1565b1980831691505092915050565b6000611af88383611ace565b9150826002028217905092915050565b611b118261136b565b67ffffffffffffffff811115611b2a57611b29611942565b5b611b348254611793565b611b3f828285611a7b565b600060209050601f831160018114611b725760008415611b60578287015190505b611b6a8582611aec565b865550611bd2565b601f198416611b80866117c4565b60005b82811015611ba857848901518255600182019150602085019450602081019050611b83565b86831015611bc55784890151611bc1601f891682611ace565b8355505b6001600288020188555050505b505050505050565b6000611be582611308565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c1757611c166118df565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611c7e602583611376565b9150611c8982611c22565b604082019050919050565b60006020820190508181036000830152611cad81611c71565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611d10602683611376565b9150611d1b82611cb4565b604082019050919050565b60006020820190508181036000830152611d3f81611d03565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611da2602483611376565b9150611dad82611d46565b604082019050919050565b60006020820190508181036000830152611dd181611d95565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e34602283611376565b9150611e3f82611dd8565b604082019050919050565b60006020820190508181036000830152611e6381611e27565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611ea0601d83611376565b9150611eab82611e6a565b602082019050919050565b60006020820190508181036000830152611ecf81611e93565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611f32602583611376565b9150611f3d82611ed6565b604082019050919050565b60006020820190508181036000830152611f6181611f25565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611fc4602383611376565b9150611fcf82611f68565b604082019050919050565b60006020820190508181036000830152611ff381611fb7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612056602683611376565b915061206182611ffa565b604082019050919050565b6000602082019050818103600083015261208581612049565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006120e8602183611376565b91506120f38261208c565b604082019050919050565b60006020820190508181036000830152612117816120db565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061217a602283611376565b91506121858261211e565b604082019050919050565b600060208201905081810360008301526121a98161216d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006121e6602083611376565b91506121f1826121b0565b602082019050919050565b60006020820190508181036000830152612215816121d9565b905091905056fea2646970667358221220ee74b126911d68a63f41d0896ecd76ad2ef51ff33c3938f5396b9c993a80eecf64736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063a457c2d711610071578063a457c2d71461030a578063a9059cbb1461033a578063c7f758a81461036a578063dd62ed3e1461039b578063f2fde38b146103cb57610121565b806370a0823114610278578063715018a6146102a857806379cc6790146102b25780638da5cb5b146102ce57806395d89b41146102ec57610121565b806323b872dd116100f457806323b872dd146101ae578063313ce567146101de57806339509351146101fc57806342966c681461022c57806349c2a1a61461024857610121565b80630121b93f1461012657806306fdde0314610142578063095ea7b31461016057806318160ddd14610190575b600080fd5b610140600480360381019061013b919061133e565b6103e7565b005b61014a6104c0565b60405161015791906113fb565b60405180910390f35b61017a6004803603810190610175919061147b565b610552565b60405161018791906114d6565b60405180910390f35b610198610575565b6040516101a59190611500565b60405180910390f35b6101c860048036038101906101c3919061151b565b61057f565b6040516101d591906114d6565b60405180910390f35b6101e66105ae565b6040516101f3919061158a565b60405180910390f35b6102166004803603810190610211919061147b565b6105b7565b60405161022391906114d6565b60405180910390f35b6102466004803603810190610241919061133e565b6105ee565b005b610262600480360381019061025d919061160a565b610602565b60405161026f9190611500565b60405180910390f35b610292600480360381019061028d9190611657565b6106bd565b60405161029f9190611500565b60405180910390f35b6102b0610705565b005b6102cc60048036038101906102c7919061147b565b610719565b005b6102d6610739565b6040516102e39190611693565b60405180910390f35b6102f4610763565b60405161030191906113fb565b60405180910390f35b610324600480360381019061031f919061147b565b6107f5565b60405161033191906114d6565b60405180910390f35b610354600480360381019061034f919061147b565b61086c565b60405161036191906114d6565b60405180910390f35b610384600480360381019061037f919061133e565b61088f565b6040516103929291906116ae565b60405180910390f35b6103b560048036038101906103b091906116de565b6109f6565b6040516103c29190611500565b60405180910390f35b6103e560048036038101906103e09190611657565b610a7d565b005b6040516020016103f69061174f565b6040516020818303038152906040528051906020012060066000838152602001908152602001600020600001604051602001610432919061185c565b6040516020818303038152906040528051906020012003610488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047f906118bf565b60405180910390fd5b610491336106bd565b6006600083815260200190815260200160002060010160008282546104b6919061190e565b9250508190555050565b6060600380546104cf90611793565b80601f01602080910402602001604051908101604052809291908181526020018280546104fb90611793565b80156105485780601f1061051d57610100808354040283529160200191610548565b820191906000526020600020905b81548152906001019060200180831161052b57829003601f168201915b5050505050905090565b60008061055d610b05565b905061056a818585610b0d565b600191505092915050565b6000600254905090565b60008061058a610b05565b9050610597858285610cd6565b6105a2858585610d62565b60019150509392505050565b60006012905090565b6000806105c2610b05565b90506105e38185856105d485896109f6565b6105de919061190e565b610b0d565b600191505092915050565b6105ff6105f9610b05565b82610fd8565b50565b600061060c6111a5565b604051806040016040528084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152602001600081525060066000600754815260200190815260200160002060008201518160000190816106909190611b08565b5060208201518160010155905050600760008154809291906106b190611bda565b91905055905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61070d6111a5565b6107176000611223565b565b61072b82610725610b05565b83610cd6565b6107358282610fd8565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461077290611793565b80601f016020809104026020016040519081016040528092919081815260200182805461079e90611793565b80156107eb5780601f106107c0576101008083540402835291602001916107eb565b820191906000526020600020905b8154815290600101906020018083116107ce57829003601f168201915b5050505050905090565b600080610800610b05565b9050600061080e82866109f6565b905083811015610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a90611c94565b60405180910390fd5b6108608286868403610b0d565b60019250505092915050565b600080610877610b05565b9050610884818585610d62565b600191505092915050565b606060006040516020016108a29061174f565b60405160208183030381529060405280519060200120600660008581526020019081526020016000206000016040516020016108de919061185c565b6040516020818303038152906040528051906020012003610934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092b906118bf565b60405180910390fd5b60066000848152602001908152602001600020600001600660008581526020019081526020016000206001015481805461096d90611793565b80601f016020809104026020016040519081016040528092919081815260200182805461099990611793565b80156109e65780601f106109bb576101008083540402835291602001916109e6565b820191906000526020600020905b8154815290600101906020018083116109c957829003601f168201915b5050505050915091509150915091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a856111a5565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aeb90611d26565b60405180910390fd5b610afd81611223565b50565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7390611db8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be290611e4a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cc99190611500565b60405180910390a3505050565b6000610ce284846109f6565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610d5c5781811015610d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4590611eb6565b60405180910390fd5b610d5b8484848403610b0d565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc890611f48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3790611fda565b60405180910390fd5b610e4b8383836112e9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec89061206c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fbf9190611500565b60405180910390a3610fd28484846112f9565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103e906120fe565b60405180910390fd5b611053826000836112e9565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090612190565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161118c9190611500565b60405180910390a36111a0836000846112f9565b505050565b6111ad610b05565b73ffffffffffffffffffffffffffffffffffffffff166111cb610739565b73ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611218906121fc565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6112f4838383610b00565b505050565b505050565b600080fd5b600080fd5b6000819050919050565b61131b81611308565b811461132657600080fd5b50565b60008135905061133881611312565b92915050565b600060208284031215611354576113536112fe565b5b600061136284828501611329565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156113a557808201518184015260208101905061138a565b60008484015250505050565b6000601f19601f8301169050919050565b60006113cd8261136b565b6113d78185611376565b93506113e7818560208601611387565b6113f0816113b1565b840191505092915050565b6000602082019050818103600083015261141581846113c2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114488261141d565b9050919050565b6114588161143d565b811461146357600080fd5b50565b6000813590506114758161144f565b92915050565b60008060408385031215611492576114916112fe565b5b60006114a085828601611466565b92505060206114b185828601611329565b9150509250929050565b60008115159050919050565b6114d0816114bb565b82525050565b60006020820190506114eb60008301846114c7565b92915050565b6114fa81611308565b82525050565b600060208201905061151560008301846114f1565b92915050565b600080600060608486031215611534576115336112fe565b5b600061154286828701611466565b935050602061155386828701611466565b925050604061156486828701611329565b9150509250925092565b600060ff82169050919050565b6115848161156e565b82525050565b600060208201905061159f600083018461157b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126115ca576115c96115a5565b5b8235905067ffffffffffffffff8111156115e7576115e66115aa565b5b602083019150836001820283011115611603576116026115af565b5b9250929050565b60008060208385031215611621576116206112fe565b5b600083013567ffffffffffffffff81111561163f5761163e611303565b5b61164b858286016115b4565b92509250509250929050565b60006020828403121561166d5761166c6112fe565b5b600061167b84828501611466565b91505092915050565b61168d8161143d565b82525050565b60006020820190506116a86000830184611684565b92915050565b600060408201905081810360008301526116c881856113c2565b90506116d760208301846114f1565b9392505050565b600080604083850312156116f5576116f46112fe565b5b600061170385828601611466565b925050602061171485828601611466565b9150509250929050565b600081905092915050565b50565b600061173960008361171e565b915061174482611729565b600082019050919050565b600061175a8261172c565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806117ab57607f821691505b6020821081036117be576117bd611764565b5b50919050565b60008190508160005260206000209050919050565b600081546117e681611793565b6117f0818661171e565b9450600182166000811461180b576001811461182057611853565b60ff1983168652811515820286019350611853565b611829856117c4565b60005b8381101561184b5781548189015260018201915060208101905061182c565b838801955050505b50505092915050565b600061186882846117d9565b915081905092915050565b7f45524332303a2070726f706f73616c20646f6573206e6f742065786973740000600082015250565b60006118a9601e83611376565b91506118b482611873565b602082019050919050565b600060208201905081810360008301526118d88161189c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061191982611308565b915061192483611308565b925082820190508082111561193c5761193b6118df565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020601f8301049050919050565b600082821b905092915050565b6000600883026119be7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611981565b6119c88683611981565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611a05611a006119fb84611308565b6119e0565b611308565b9050919050565b6000819050919050565b611a1f836119ea565b611a33611a2b82611a0c565b84845461198e565b825550505050565b600090565b611a48611a3b565b611a53818484611a16565b505050565b5b81811015611a7757611a6c600082611a40565b600181019050611a59565b5050565b601f821115611abc57611a8d816117c4565b611a9684611971565b81016020851015611aa5578190505b611ab9611ab185611971565b830182611a58565b50505b505050565b600082821c905092915050565b6000611adf60001984600802611ac1565b1980831691505092915050565b6000611af88383611ace565b9150826002028217905092915050565b611b118261136b565b67ffffffffffffffff811115611b2a57611b29611942565b5b611b348254611793565b611b3f828285611a7b565b600060209050601f831160018114611b725760008415611b60578287015190505b611b6a8582611aec565b865550611bd2565b601f198416611b80866117c4565b60005b82811015611ba857848901518255600182019150602085019450602081019050611b83565b86831015611bc55784890151611bc1601f891682611ace565b8355505b6001600288020188555050505b505050505050565b6000611be582611308565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c1757611c166118df565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611c7e602583611376565b9150611c8982611c22565b604082019050919050565b60006020820190508181036000830152611cad81611c71565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611d10602683611376565b9150611d1b82611cb4565b604082019050919050565b60006020820190508181036000830152611d3f81611d03565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611da2602483611376565b9150611dad82611d46565b604082019050919050565b60006020820190508181036000830152611dd181611d95565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e34602283611376565b9150611e3f82611dd8565b604082019050919050565b60006020820190508181036000830152611e6381611e27565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611ea0601d83611376565b9150611eab82611e6a565b602082019050919050565b60006020820190508181036000830152611ecf81611e93565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611f32602583611376565b9150611f3d82611ed6565b604082019050919050565b60006020820190508181036000830152611f6181611f25565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611fc4602383611376565b9150611fcf82611f68565b604082019050919050565b60006020820190508181036000830152611ff381611fb7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612056602683611376565b915061206182611ffa565b604082019050919050565b6000602082019050818103600083015261208581612049565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006120e8602183611376565b91506120f38261208c565b604082019050919050565b60006020820190508181036000830152612117816120db565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061217a602283611376565b91506121858261211e565b604082019050919050565b600060208201905081810360008301526121a98161216d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006121e6602083611376565b91506121f1826121b0565b602082019050919050565b60006020820190508181036000830152612215816121d9565b905091905056fea2646970667358221220ee74b126911d68a63f41d0896ecd76ad2ef51ff33c3938f5396b9c993a80eecf64736f6c63430008120033

Deployed Bytecode Sourcemap

21771:1370:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22505:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9351:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11702:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10471:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12483:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10313:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13187:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21122:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22301:196;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10642:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2776:103;;;:::i;:::-;;21532:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2128:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9570:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13928:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10975:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22782:356;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;11231:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3034:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22505:269;22642:20;;;;;;;:::i;:::-;;;;;;;;;;;;;22632:31;;;;;;22592:10;:22;22603:10;22592:22;;;;;;;;;;;:34;;22575:52;;;;;;;;:::i;:::-;;;;;;;;;;;;;22565:63;;;;;;:98;22557:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;22745:21;22755:10;22745:9;:21::i;:::-;22709:10;:22;22720:10;22709:22;;;;;;;;;;;:32;;;:57;;;;;;;:::i;:::-;;;;;;;;22505:269;:::o;9351:100::-;9405:13;9438:5;9431:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9351:100;:::o;11702:201::-;11785:4;11802:13;11818:12;:10;:12::i;:::-;11802:28;;11841:32;11850:5;11857:7;11866:6;11841:8;:32::i;:::-;11891:4;11884:11;;;11702:201;;;;:::o;10471:108::-;10532:7;10559:12;;10552:19;;10471:108;:::o;12483:295::-;12614:4;12631:15;12649:12;:10;:12::i;:::-;12631:30;;12672:38;12688:4;12694:7;12703:6;12672:15;:38::i;:::-;12721:27;12731:4;12737:2;12741:6;12721:9;:27::i;:::-;12766:4;12759:11;;;12483:295;;;;;:::o;10313:93::-;10371:5;10396:2;10389:9;;10313:93;:::o;13187:238::-;13275:4;13292:13;13308:12;:10;:12::i;:::-;13292:28;;13331:64;13340:5;13347:7;13384:10;13356:25;13366:5;13373:7;13356:9;:25::i;:::-;:38;;;;:::i;:::-;13331:8;:64::i;:::-;13413:4;13406:11;;;13187:238;;;;:::o;21122:91::-;21178:27;21184:12;:10;:12::i;:::-;21198:6;21178:5;:27::i;:::-;21122:91;:::o;22301:196::-;22380:7;2014:13;:11;:13::i;:::-;22430:24:::1;;;;;;;;22439:11;;22430:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22452:1;22430:24;;::::0;22400:10:::1;:27;22411:15;;22400:27;;;;;;;;;;;:54;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22472:15;;:17;;;;;;;;;:::i;:::-;;;;;22465:24;;22301:196:::0;;;;:::o;10642:127::-;10716:7;10743:9;:18;10753:7;10743:18;;;;;;;;;;;;;;;;10736:25;;10642:127;;;:::o;2776:103::-;2014:13;:11;:13::i;:::-;2841:30:::1;2868:1;2841:18;:30::i;:::-;2776:103::o:0;21532:164::-;21609:46;21625:7;21634:12;:10;:12::i;:::-;21648:6;21609:15;:46::i;:::-;21666:22;21672:7;21681:6;21666:5;:22::i;:::-;21532:164;;:::o;2128:87::-;2174:7;2201:6;;;;;;;;;;;2194:13;;2128:87;:::o;9570:104::-;9626:13;9659:7;9652:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9570:104;:::o;13928:436::-;14021:4;14038:13;14054:12;:10;:12::i;:::-;14038:28;;14077:24;14104:25;14114:5;14121:7;14104:9;:25::i;:::-;14077:52;;14168:15;14148:16;:35;;14140:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14261:60;14270:5;14277:7;14305:15;14286:16;:34;14261:8;:60::i;:::-;14352:4;14345:11;;;;13928:436;;;;:::o;10975:193::-;11054:4;11071:13;11087:12;:10;:12::i;:::-;11071:28;;11110;11120:5;11127:2;11131:6;11110:9;:28::i;:::-;11156:4;11149:11;;;10975:193;;;;:::o;22782:356::-;22844:25;22871:17;22986:20;;;;;;;:::i;:::-;;;;;;;;;;;;;22976:31;;;;;;22936:10;:22;22947:10;22936:22;;;;;;;;;;;:34;;22919:52;;;;;;;;:::i;:::-;;;;;;;;;;;;;22909:63;;;;;;:98;22901:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;23061:10;:22;23072:10;23061:22;;;;;;;;;;;:34;;23097:10;:22;23108:10;23097:22;;;;;;;;;;;:32;;;23053:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22782:356;;;:::o;11231:151::-;11320:7;11347:11;:18;11359:5;11347:18;;;;;;;;;;;;;;;:27;11366:7;11347:27;;;;;;;;;;;;;;;;11340:34;;11231:151;;;;:::o;3034:201::-;2014:13;:11;:13::i;:::-;3143:1:::1;3123:22;;:8;:22;;::::0;3115:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3199:28;3218:8;3199:18;:28::i;:::-;3034:201:::0;:::o;19679:125::-;;;;:::o;679:98::-;732:7;759:10;752:17;;679:98;:::o;17955:380::-;18108:1;18091:19;;:5;:19;;;18083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18189:1;18170:21;;:7;:21;;;18162:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18273:6;18243:11;:18;18255:5;18243:18;;;;;;;;;;;;;;;:27;18262:7;18243:27;;;;;;;;;;;;;;;:36;;;;18311:7;18295:32;;18304:5;18295:32;;;18320:6;18295:32;;;;;;:::i;:::-;;;;;;;;17955:380;;;:::o;18626:453::-;18761:24;18788:25;18798:5;18805:7;18788:9;:25::i;:::-;18761:52;;18848:17;18828:16;:37;18824:248;;18910:6;18890:16;:26;;18882:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18994:51;19003:5;19010:7;19038:6;19019:16;:25;18994:8;:51::i;:::-;18824:248;18750:329;18626:453;;;:::o;14834:840::-;14981:1;14965:18;;:4;:18;;;14957:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15058:1;15044:16;;:2;:16;;;15036:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15113:38;15134:4;15140:2;15144:6;15113:20;:38::i;:::-;15164:19;15186:9;:15;15196:4;15186:15;;;;;;;;;;;;;;;;15164:37;;15235:6;15220:11;:21;;15212:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15352:6;15338:11;:20;15320:9;:15;15330:4;15320:15;;;;;;;;;;;;;;;:38;;;;15555:6;15538:9;:13;15548:2;15538:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15605:2;15590:26;;15599:4;15590:26;;;15609:6;15590:26;;;;;;:::i;:::-;;;;;;;;15629:37;15649:4;15655:2;15659:6;15629:19;:37::i;:::-;14946:728;14834:840;;;:::o;16842:675::-;16945:1;16926:21;;:7;:21;;;16918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16998:49;17019:7;17036:1;17040:6;16998:20;:49::i;:::-;17060:22;17085:9;:18;17095:7;17085:18;;;;;;;;;;;;;;;;17060:43;;17140:6;17122:14;:24;;17114:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17259:6;17242:14;:23;17221:9;:18;17231:7;17221:18;;;;;;;;;;;;;;;:44;;;;17376:6;17360:12;;:22;;;;;;;;;;;17437:1;17411:37;;17420:7;17411:37;;;17441:6;17411:37;;;;;;:::i;:::-;;;;;;;;17461:48;17481:7;17498:1;17502:6;17461:19;:48::i;:::-;16907:610;16842:675;;:::o;2293:132::-;2368:12;:10;:12::i;:::-;2357:23;;:7;:5;:7::i;:::-;:23;;;2349:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2293:132::o;3395:191::-;3469:16;3488:6;;;;;;;;;;;3469:25;;3514:8;3505:6;;:17;;;;;;;;;;;;;;;;;;3569:8;3538:40;;3559:8;3538:40;;;;;;;;;;;;3458:128;3395:191;:::o;22140:153::-;22241:44;22268:4;22274:2;22278:6;22241:26;:44::i;:::-;22140:153;;;:::o;20408:124::-;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:246::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1495:1;1490:3;1486:11;1480:18;1476:1;1471:3;1467:11;1460:39;1432:2;1429:1;1425:10;1420:15;;1396:113;;;1543:1;1534:6;1529:3;1525:16;1518:27;1367:184;1305:246;;;:::o;1557:102::-;1598:6;1649:2;1645:7;1640:2;1633:5;1629:14;1625:28;1615:38;;1557:102;;;:::o;1665:377::-;1753:3;1781:39;1814:5;1781:39;:::i;:::-;1836:71;1900:6;1895:3;1836:71;:::i;:::-;1829:78;;1916:65;1974:6;1969:3;1962:4;1955:5;1951:16;1916:65;:::i;:::-;2006:29;2028:6;2006:29;:::i;:::-;2001:3;1997:39;1990:46;;1757:285;1665:377;;;;:::o;2048:313::-;2161:4;2199:2;2188:9;2184:18;2176:26;;2248:9;2242:4;2238:20;2234:1;2223:9;2219:17;2212:47;2276:78;2349:4;2340:6;2276:78;:::i;:::-;2268:86;;2048:313;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:117::-;5297:1;5294;5287:12;5311:117;5420:1;5417;5410:12;5434:117;5543:1;5540;5533:12;5571:553;5629:8;5639:6;5689:3;5682:4;5674:6;5670:17;5666:27;5656:122;;5697:79;;:::i;:::-;5656:122;5810:6;5797:20;5787:30;;5840:18;5832:6;5829:30;5826:117;;;5862:79;;:::i;:::-;5826:117;5976:4;5968:6;5964:17;5952:29;;6030:3;6022:4;6014:6;6010:17;6000:8;5996:32;5993:41;5990:128;;;6037:79;;:::i;:::-;5990:128;5571:553;;;;;:::o;6130:529::-;6201:6;6209;6258:2;6246:9;6237:7;6233:23;6229:32;6226:119;;;6264:79;;:::i;:::-;6226:119;6412:1;6401:9;6397:17;6384:31;6442:18;6434:6;6431:30;6428:117;;;6464:79;;:::i;:::-;6428:117;6577:65;6634:7;6625:6;6614:9;6610:22;6577:65;:::i;:::-;6559:83;;;;6355:297;6130:529;;;;;:::o;6665:329::-;6724:6;6773:2;6761:9;6752:7;6748:23;6744:32;6741:119;;;6779:79;;:::i;:::-;6741:119;6899:1;6924:53;6969:7;6960:6;6949:9;6945:22;6924:53;:::i;:::-;6914:63;;6870:117;6665:329;;;;:::o;7000:118::-;7087:24;7105:5;7087:24;:::i;:::-;7082:3;7075:37;7000:118;;:::o;7124:222::-;7217:4;7255:2;7244:9;7240:18;7232:26;;7268:71;7336:1;7325:9;7321:17;7312:6;7268:71;:::i;:::-;7124:222;;;;:::o;7352:423::-;7493:4;7531:2;7520:9;7516:18;7508:26;;7580:9;7574:4;7570:20;7566:1;7555:9;7551:17;7544:47;7608:78;7681:4;7672:6;7608:78;:::i;:::-;7600:86;;7696:72;7764:2;7753:9;7749:18;7740:6;7696:72;:::i;:::-;7352:423;;;;;:::o;7781:474::-;7849:6;7857;7906:2;7894:9;7885:7;7881:23;7877:32;7874:119;;;7912:79;;:::i;:::-;7874:119;8032:1;8057:53;8102:7;8093:6;8082:9;8078:22;8057:53;:::i;:::-;8047:63;;8003:117;8159:2;8185:53;8230:7;8221:6;8210:9;8206:22;8185:53;:::i;:::-;8175:63;;8130:118;7781:474;;;;;:::o;8261:148::-;8363:11;8400:3;8385:18;;8261:148;;;;:::o;8415:114::-;;:::o;8535:400::-;8695:3;8716:84;8798:1;8793:3;8716:84;:::i;:::-;8709:91;;8809:93;8898:3;8809:93;:::i;:::-;8927:1;8922:3;8918:11;8911:18;;8535:400;;;:::o;8941:381::-;9126:3;9148:148;9292:3;9148:148;:::i;:::-;9141:155;;9313:3;9306:10;;8941:381;;;:::o;9328:180::-;9376:77;9373:1;9366:88;9473:4;9470:1;9463:15;9497:4;9494:1;9487:15;9514:320;9558:6;9595:1;9589:4;9585:12;9575:22;;9642:1;9636:4;9632:12;9663:18;9653:81;;9719:4;9711:6;9707:17;9697:27;;9653:81;9781:2;9773:6;9770:14;9750:18;9747:38;9744:84;;9800:18;;:::i;:::-;9744:84;9565:269;9514:320;;;:::o;9840:141::-;9889:4;9912:3;9904:11;;9935:3;9932:1;9925:14;9969:4;9966:1;9956:18;9948:26;;9840:141;;;:::o;10011:874::-;10114:3;10151:5;10145:12;10180:36;10206:9;10180:36;:::i;:::-;10232:89;10314:6;10309:3;10232:89;:::i;:::-;10225:96;;10352:1;10341:9;10337:17;10368:1;10363:166;;;;10543:1;10538:341;;;;10330:549;;10363:166;10447:4;10443:9;10432;10428:25;10423:3;10416:38;10509:6;10502:14;10495:22;10487:6;10483:35;10478:3;10474:45;10467:52;;10363:166;;10538:341;10605:38;10637:5;10605:38;:::i;:::-;10665:1;10679:154;10693:6;10690:1;10687:13;10679:154;;;10767:7;10761:14;10757:1;10752:3;10748:11;10741:35;10817:1;10808:7;10804:15;10793:26;;10715:4;10712:1;10708:12;10703:17;;10679:154;;;10862:6;10857:3;10853:16;10846:23;;10545:334;;10330:549;;10118:767;;10011:874;;;;:::o;10891:269::-;11020:3;11042:92;11130:3;11121:6;11042:92;:::i;:::-;11035:99;;11151:3;11144:10;;10891:269;;;;:::o;11166:180::-;11306:32;11302:1;11294:6;11290:14;11283:56;11166:180;:::o;11352:366::-;11494:3;11515:67;11579:2;11574:3;11515:67;:::i;:::-;11508:74;;11591:93;11680:3;11591:93;:::i;:::-;11709:2;11704:3;11700:12;11693:19;;11352:366;;;:::o;11724:419::-;11890:4;11928:2;11917:9;11913:18;11905:26;;11977:9;11971:4;11967:20;11963:1;11952:9;11948:17;11941:47;12005:131;12131:4;12005:131;:::i;:::-;11997:139;;11724:419;;;:::o;12149:180::-;12197:77;12194:1;12187:88;12294:4;12291:1;12284:15;12318:4;12315:1;12308:15;12335:191;12375:3;12394:20;12412:1;12394:20;:::i;:::-;12389:25;;12428:20;12446:1;12428:20;:::i;:::-;12423:25;;12471:1;12468;12464:9;12457:16;;12492:3;12489:1;12486:10;12483:36;;;12499:18;;:::i;:::-;12483:36;12335:191;;;;:::o;12532:180::-;12580:77;12577:1;12570:88;12677:4;12674:1;12667:15;12701:4;12698:1;12691:15;12718:93;12755:6;12802:2;12797;12790:5;12786:14;12782:23;12772:33;;12718:93;;;:::o;12817:107::-;12861:8;12911:5;12905:4;12901:16;12880:37;;12817:107;;;;:::o;12930:393::-;12999:6;13049:1;13037:10;13033:18;13072:97;13102:66;13091:9;13072:97;:::i;:::-;13190:39;13220:8;13209:9;13190:39;:::i;:::-;13178:51;;13262:4;13258:9;13251:5;13247:21;13238:30;;13311:4;13301:8;13297:19;13290:5;13287:30;13277:40;;13006:317;;12930:393;;;;;:::o;13329:60::-;13357:3;13378:5;13371:12;;13329:60;;;:::o;13395:142::-;13445:9;13478:53;13496:34;13505:24;13523:5;13505:24;:::i;:::-;13496:34;:::i;:::-;13478:53;:::i;:::-;13465:66;;13395:142;;;:::o;13543:75::-;13586:3;13607:5;13600:12;;13543:75;;;:::o;13624:269::-;13734:39;13765:7;13734:39;:::i;:::-;13795:91;13844:41;13868:16;13844:41;:::i;:::-;13836:6;13829:4;13823:11;13795:91;:::i;:::-;13789:4;13782:105;13700:193;13624:269;;;:::o;13899:73::-;13944:3;13899:73;:::o;13978:189::-;14055:32;;:::i;:::-;14096:65;14154:6;14146;14140:4;14096:65;:::i;:::-;14031:136;13978:189;;:::o;14173:186::-;14233:120;14250:3;14243:5;14240:14;14233:120;;;14304:39;14341:1;14334:5;14304:39;:::i;:::-;14277:1;14270:5;14266:13;14257:22;;14233:120;;;14173:186;;:::o;14365:543::-;14466:2;14461:3;14458:11;14455:446;;;14500:38;14532:5;14500:38;:::i;:::-;14584:29;14602:10;14584:29;:::i;:::-;14574:8;14570:44;14767:2;14755:10;14752:18;14749:49;;;14788:8;14773:23;;14749:49;14811:80;14867:22;14885:3;14867:22;:::i;:::-;14857:8;14853:37;14840:11;14811:80;:::i;:::-;14470:431;;14455:446;14365:543;;;:::o;14914:117::-;14968:8;15018:5;15012:4;15008:16;14987:37;;14914:117;;;;:::o;15037:169::-;15081:6;15114:51;15162:1;15158:6;15150:5;15147:1;15143:13;15114:51;:::i;:::-;15110:56;15195:4;15189;15185:15;15175:25;;15088:118;15037:169;;;;:::o;15211:295::-;15287:4;15433:29;15458:3;15452:4;15433:29;:::i;:::-;15425:37;;15495:3;15492:1;15488:11;15482:4;15479:21;15471:29;;15211:295;;;;:::o;15511:1395::-;15628:37;15661:3;15628:37;:::i;:::-;15730:18;15722:6;15719:30;15716:56;;;15752:18;;:::i;:::-;15716:56;15796:38;15828:4;15822:11;15796:38;:::i;:::-;15881:67;15941:6;15933;15927:4;15881:67;:::i;:::-;15975:1;15999:4;15986:17;;16031:2;16023:6;16020:14;16048:1;16043:618;;;;16705:1;16722:6;16719:77;;;16771:9;16766:3;16762:19;16756:26;16747:35;;16719:77;16822:67;16882:6;16875:5;16822:67;:::i;:::-;16816:4;16809:81;16678:222;16013:887;;16043:618;16095:4;16091:9;16083:6;16079:22;16129:37;16161:4;16129:37;:::i;:::-;16188:1;16202:208;16216:7;16213:1;16210:14;16202:208;;;16295:9;16290:3;16286:19;16280:26;16272:6;16265:42;16346:1;16338:6;16334:14;16324:24;;16393:2;16382:9;16378:18;16365:31;;16239:4;16236:1;16232:12;16227:17;;16202:208;;;16438:6;16429:7;16426:19;16423:179;;;16496:9;16491:3;16487:19;16481:26;16539:48;16581:4;16573:6;16569:17;16558:9;16539:48;:::i;:::-;16531:6;16524:64;16446:156;16423:179;16648:1;16644;16636:6;16632:14;16628:22;16622:4;16615:36;16050:611;;;16013:887;;15603:1303;;;15511:1395;;:::o;16912:233::-;16951:3;16974:24;16992:5;16974:24;:::i;:::-;16965:33;;17020:66;17013:5;17010:77;17007:103;;17090:18;;:::i;:::-;17007:103;17137:1;17130:5;17126:13;17119:20;;16912:233;;;:::o;17151:224::-;17291:34;17287:1;17279:6;17275:14;17268:58;17360:7;17355:2;17347:6;17343:15;17336:32;17151:224;:::o;17381:366::-;17523:3;17544:67;17608:2;17603:3;17544:67;:::i;:::-;17537:74;;17620:93;17709:3;17620:93;:::i;:::-;17738:2;17733:3;17729:12;17722:19;;17381:366;;;:::o;17753:419::-;17919:4;17957:2;17946:9;17942:18;17934:26;;18006:9;18000:4;17996:20;17992:1;17981:9;17977:17;17970:47;18034:131;18160:4;18034:131;:::i;:::-;18026:139;;17753:419;;;:::o;18178:225::-;18318:34;18314:1;18306:6;18302:14;18295:58;18387:8;18382:2;18374:6;18370:15;18363:33;18178:225;:::o;18409:366::-;18551:3;18572:67;18636:2;18631:3;18572:67;:::i;:::-;18565:74;;18648:93;18737:3;18648:93;:::i;:::-;18766:2;18761:3;18757:12;18750:19;;18409:366;;;:::o;18781:419::-;18947:4;18985:2;18974:9;18970:18;18962:26;;19034:9;19028:4;19024:20;19020:1;19009:9;19005:17;18998:47;19062:131;19188:4;19062:131;:::i;:::-;19054:139;;18781:419;;;:::o;19206:223::-;19346:34;19342:1;19334:6;19330:14;19323:58;19415:6;19410:2;19402:6;19398:15;19391:31;19206:223;:::o;19435:366::-;19577:3;19598:67;19662:2;19657:3;19598:67;:::i;:::-;19591:74;;19674:93;19763:3;19674:93;:::i;:::-;19792:2;19787:3;19783:12;19776:19;;19435:366;;;:::o;19807:419::-;19973:4;20011:2;20000:9;19996:18;19988:26;;20060:9;20054:4;20050:20;20046:1;20035:9;20031:17;20024:47;20088:131;20214:4;20088:131;:::i;:::-;20080:139;;19807:419;;;:::o;20232:221::-;20372:34;20368:1;20360:6;20356:14;20349:58;20441:4;20436:2;20428:6;20424:15;20417:29;20232:221;:::o;20459:366::-;20601:3;20622:67;20686:2;20681:3;20622:67;:::i;:::-;20615:74;;20698:93;20787:3;20698:93;:::i;:::-;20816:2;20811:3;20807:12;20800:19;;20459:366;;;:::o;20831:419::-;20997:4;21035:2;21024:9;21020:18;21012:26;;21084:9;21078:4;21074:20;21070:1;21059:9;21055:17;21048:47;21112:131;21238:4;21112:131;:::i;:::-;21104:139;;20831:419;;;:::o;21256:179::-;21396:31;21392:1;21384:6;21380:14;21373:55;21256:179;:::o;21441:366::-;21583:3;21604:67;21668:2;21663:3;21604:67;:::i;:::-;21597:74;;21680:93;21769:3;21680:93;:::i;:::-;21798:2;21793:3;21789:12;21782:19;;21441:366;;;:::o;21813:419::-;21979:4;22017:2;22006:9;22002:18;21994:26;;22066:9;22060:4;22056:20;22052:1;22041:9;22037:17;22030:47;22094:131;22220:4;22094:131;:::i;:::-;22086:139;;21813:419;;;:::o;22238:224::-;22378:34;22374:1;22366:6;22362:14;22355:58;22447:7;22442:2;22434:6;22430:15;22423:32;22238:224;:::o;22468:366::-;22610:3;22631:67;22695:2;22690:3;22631:67;:::i;:::-;22624:74;;22707:93;22796:3;22707:93;:::i;:::-;22825:2;22820:3;22816:12;22809:19;;22468:366;;;:::o;22840:419::-;23006:4;23044:2;23033:9;23029:18;23021:26;;23093:9;23087:4;23083:20;23079:1;23068:9;23064:17;23057:47;23121:131;23247:4;23121:131;:::i;:::-;23113:139;;22840:419;;;:::o;23265:222::-;23405:34;23401:1;23393:6;23389:14;23382:58;23474:5;23469:2;23461:6;23457:15;23450:30;23265:222;:::o;23493:366::-;23635:3;23656:67;23720:2;23715:3;23656:67;:::i;:::-;23649:74;;23732:93;23821:3;23732:93;:::i;:::-;23850:2;23845:3;23841:12;23834:19;;23493:366;;;:::o;23865:419::-;24031:4;24069:2;24058:9;24054:18;24046:26;;24118:9;24112:4;24108:20;24104:1;24093:9;24089:17;24082:47;24146:131;24272:4;24146:131;:::i;:::-;24138:139;;23865:419;;;:::o;24290:225::-;24430:34;24426:1;24418:6;24414:14;24407:58;24499:8;24494:2;24486:6;24482:15;24475:33;24290:225;:::o;24521:366::-;24663:3;24684:67;24748:2;24743:3;24684:67;:::i;:::-;24677:74;;24760:93;24849:3;24760:93;:::i;:::-;24878:2;24873:3;24869:12;24862:19;;24521:366;;;:::o;24893:419::-;25059:4;25097:2;25086:9;25082:18;25074:26;;25146:9;25140:4;25136:20;25132:1;25121:9;25117:17;25110:47;25174:131;25300:4;25174:131;:::i;:::-;25166:139;;24893:419;;;:::o;25318:220::-;25458:34;25454:1;25446:6;25442:14;25435:58;25527:3;25522:2;25514:6;25510:15;25503:28;25318:220;:::o;25544:366::-;25686:3;25707:67;25771:2;25766:3;25707:67;:::i;:::-;25700:74;;25783:93;25872:3;25783:93;:::i;:::-;25901:2;25896:3;25892:12;25885:19;;25544:366;;;:::o;25916:419::-;26082:4;26120:2;26109:9;26105:18;26097:26;;26169:9;26163:4;26159:20;26155:1;26144:9;26140:17;26133:47;26197:131;26323:4;26197:131;:::i;:::-;26189:139;;25916:419;;;:::o;26341:221::-;26481:34;26477:1;26469:6;26465:14;26458:58;26550:4;26545:2;26537:6;26533:15;26526:29;26341:221;:::o;26568:366::-;26710:3;26731:67;26795:2;26790:3;26731:67;:::i;:::-;26724:74;;26807:93;26896:3;26807:93;:::i;:::-;26925:2;26920:3;26916:12;26909:19;;26568:366;;;:::o;26940:419::-;27106:4;27144:2;27133:9;27129:18;27121:26;;27193:9;27187:4;27183:20;27179:1;27168:9;27164:17;27157:47;27221:131;27347:4;27221:131;:::i;:::-;27213:139;;26940:419;;;:::o;27365:182::-;27505:34;27501:1;27493:6;27489:14;27482:58;27365:182;:::o;27553:366::-;27695:3;27716:67;27780:2;27775:3;27716:67;:::i;:::-;27709:74;;27792:93;27881:3;27792:93;:::i;:::-;27910:2;27905:3;27901:12;27894:19;;27553:366;;;:::o;27925:419::-;28091:4;28129:2;28118:9;28114:18;28106:26;;28178:9;28172:4;28168:20;28164:1;28153:9;28149:17;28142:47;28206:131;28332:4;28206:131;:::i;:::-;28198:139;;27925:419;;;:::o

Swarm Source

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