Token MyWorldToken

 

Overview ERC-20

Price
$0.00 @ 0.000000 MATIC
Fully Diluted Market Cap
Total Supply:
2,000,000,000 MWT

Holders:
338 addresses

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

MyWorld’ is a platform to realize the Social Life Service. In terms of providing an opportunity for users and participants to make a profit, it is entirely different than existing social networking services. This service allows many people to have fun and provides new business opportunities.


Update? Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MyWorldToken

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 7 : MyWorldToken.sol
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/Pausable.sol";

// import "hardhat/console.sol";

contract BlackList is Ownable {
    mapping(address => bool) public isBlacklisted;

    function blackList(address _user) public onlyOwner {
        require(!isBlacklisted[_user], "user already blacklisted");
        isBlacklisted[_user] = true;
        // emit events as well
    }

    function removeFromBlacklist(address _user) public onlyOwner {
        require(isBlacklisted[_user], "user already whitelisted");
        isBlacklisted[_user] = false;
        // emit events as well
    }
}

//ERC20 토큰 전송시 해당 물량을 특정 기간동안 락업하는 기능을 추가한다.
//각 전송 마다 전송된 물량의 전부를 락업한다.
contract LockBalance {
    struct LockInfo {
        uint256 amount;
        uint256 releaseTime;
    }

    mapping(address => LockInfo[]) private _lockInfo;

    function getLockedBalance(address _addr) public view returns (uint256) {
        uint256 totalLocked = 0;
        for (uint256 i = 0; i < _lockInfo[_addr].length; i++) {
            // console.log(_lockInfo[_addr][i].releaseTime, block.timestamp);
            if (_lockInfo[_addr][i].releaseTime > block.timestamp) totalLocked += _lockInfo[_addr][i].amount;
        }
        return totalLocked;
    }

    function AddLockinfo(
        address to,
        uint256 amount,
        uint256 releaseTime
    ) internal {
        //remove released lockinfos
        uint256 lockCount = 0;
        for (uint256 i = 0; i < _lockInfo[to].length; i++) {
            if (_lockInfo[to][i].releaseTime > block.timestamp) {
                lockCount++;
            }
            if (i != lockCount - 1) {
                _lockInfo[to][lockCount] = _lockInfo[to][i];
            }
        }
        uint256 removeCount = _lockInfo[to].length - lockCount;
        if (lockCount == 0) delete _lockInfo[to];
        else if (removeCount > 0) {
            // console.log("removed count", removeCount);
            for (uint256 i = 0; i < removeCount; i++) _lockInfo[to].pop();
        }

        //add lockinfo if release time
        if (releaseTime > block.timestamp) _lockInfo[to].push(LockInfo(amount, releaseTime));
        else {
            // console.log("not added", releaseTime, block.timestamp);
        }
    }
}

contract MyWorldToken is ERC20, Ownable, Pausable, BlackList, LockBalance {
    constructor() ERC20("MyWorldToken", "MWT") {
        uint256 amount = 20_0000_0000 * 10**decimals();
        _mint(_msgSender(), amount);
    }

    function stop() public onlyOwner {
        _pause();
    }

    function start() public onlyOwner {
        _unpause();
    }

    //Don't accept ETH or BNB
    receive() external payable {
        revert("Don't accept ETH or BNB");
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        super._beforeTokenTransfer(from, to, amount);
        require(!paused(), "ERC20Pausable: token transfer while paused");
        require(!isBlacklisted[from], "blacklisted from");
        require(!isBlacklisted[to], "blacklisted to");

        if (from != address(0)) {
            //not minting
            uint256 locked = getLockedBalance(from);
            uint256 accountBalance = balanceOf(from);
            require(accountBalance - locked >= amount, "Timelock: some balance has locked.");
        }
    }

    function transferWithLocked(
        address to,
        uint256 amount,
        uint256 releaseTime
    ) public returns (bool) {
        transfer(to, amount);

        AddLockinfo(to, amount, releaseTime);

        return true;
    }
}

File 2 of 7 : ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/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 `sender` to `recipient`.
     *
     * 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;
        }
        _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;
        _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;
        }
        _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 3 of 7 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @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 Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        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 4 of 7 : Pausable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (security/Pausable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

File 5 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT
// 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 6 of 7 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";

/**
 * @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 7 of 7 : Context.sol
// SPDX-License-Identifier: MIT
// 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;
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","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":"address","name":"_user","type":"address"}],"name":"blackList","outputs":[],"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":"address","name":"_addr","type":"address"}],"name":"getLockedBalance","outputs":[{"internalType":"uint256","name":"","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":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stop","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":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"transferWithLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506040518060400160405280600c81526020017f4d79576f726c64546f6b656e00000000000000000000000000000000000000008152506040518060400160405280600381526020017f4d57540000000000000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620007e7565b508060049080519060200190620000af929190620007e7565b505050620000d2620000c66200014860201b60201c565b6200015060201b60201c565b6000600560146101000a81548160ff0219169083151502179055506000620000ff6200021660201b60201c565b600a6200010d919062000afb565b63773594006200011e919062000c38565b905062000141620001346200014860201b60201c565b826200021f60201b60201c565b5062000ef3565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000292576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200028990620009d1565b60405180910390fd5b620002a6600083836200039860201b60201c565b8060026000828254620002ba919062000a43565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000311919062000a43565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000378919062000a15565b60405180910390a36200039460008383620005dd60201b60201c565b5050565b620003b0838383620005e260201b6200103a1760201c565b620003c0620005e760201b60201c565b1562000403576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003fa90620009f3565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161562000493576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200048a906200096b565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161562000523576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200051a906200098d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614620005d85760006200056b84620005fe60201b60201c565b9050600062000580856200079f60201b60201c565b905082828262000591919062000c99565b1015620005d5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005cc90620009af565b60405180910390fd5b50505b505050565b505050565b505050565b6000600560149054906101000a900460ff16905090565b6000806000905060005b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015620007955742600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110620006cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016001015411156200077f57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081815481106200075d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906002020160000154826200077c919062000a43565b91505b80806200078c9062000d21565b91505062000608565b5080915050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b828054620007f59062000ceb565b90600052602060002090601f01602090048101928262000819576000855562000865565b82601f106200083457805160ff191683800117855562000865565b8280016001018555821562000865579182015b828111156200086457825182559160200191906001019062000847565b5b50905062000874919062000878565b5090565b5b808211156200089357600081600090555060010162000879565b5090565b6000620008a660108362000a32565b9150620008b38262000dda565b602082019050919050565b6000620008cd600e8362000a32565b9150620008da8262000e03565b602082019050919050565b6000620008f460228362000a32565b9150620009018262000e2c565b604082019050919050565b60006200091b601f8362000a32565b9150620009288262000e7b565b602082019050919050565b600062000942602a8362000a32565b91506200094f8262000ea4565b604082019050919050565b620009658162000cd4565b82525050565b60006020820190508181036000830152620009868162000897565b9050919050565b60006020820190508181036000830152620009a881620008be565b9050919050565b60006020820190508181036000830152620009ca81620008e5565b9050919050565b60006020820190508181036000830152620009ec816200090c565b9050919050565b6000602082019050818103600083015262000a0e8162000933565b9050919050565b600060208201905062000a2c60008301846200095a565b92915050565b600082825260208201905092915050565b600062000a508262000cd4565b915062000a5d8362000cd4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000a955762000a9462000d6f565b5b828201905092915050565b6000808291508390505b600185111562000af25780860481111562000aca5762000ac962000d6f565b5b600185161562000ada5780820291505b808102905062000aea8562000dcd565b945062000aaa565b94509492505050565b600062000b088262000cd4565b915062000b158362000cde565b925062000b447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b4c565b905092915050565b60008262000b5e576001905062000c31565b8162000b6e576000905062000c31565b816001811462000b87576002811462000b925762000bc8565b600191505062000c31565b60ff84111562000ba75762000ba662000d6f565b5b8360020a91508482111562000bc15762000bc062000d6f565b5b5062000c31565b5060208310610133831016604e8410600b841016171562000c025782820a90508381111562000bfc5762000bfb62000d6f565b5b62000c31565b62000c11848484600162000aa0565b9250905081840481111562000c2b5762000c2a62000d6f565b5b81810290505b9392505050565b600062000c458262000cd4565b915062000c528362000cd4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c8e5762000c8d62000d6f565b5b828202905092915050565b600062000ca68262000cd4565b915062000cb38362000cd4565b92508282101562000cc95762000cc862000d6f565b5b828203905092915050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000d0457607f821691505b6020821081141562000d1b5762000d1a62000d9e565b5b50919050565b600062000d2e8262000cd4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000d645762000d6362000d6f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f626c61636b6c69737465642066726f6d00000000000000000000000000000000600082015250565b7f626c61636b6c697374656420746f000000000000000000000000000000000000600082015250565b7f54696d656c6f636b3a20736f6d652062616c616e636520686173206c6f636b6560008201527f642e000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b612bb28062000f036000396000f3fe6080604052600436106101395760003560e01c8063715018a6116100ab578063a9059cbb1161006f578063a9059cbb1461046e578063be9a6555146104ab578063c4086893146104c2578063dd62ed3e146104ff578063f2fde38b1461053c578063fe575a871461056557610179565b8063715018a6146103875780638da5cb5b1461039e57806395d89b41146103c9578063a43660b5146103f4578063a457c2d71461043157610179565b8063313ce567116100fd578063313ce5671461026557806339509351146102905780634838d165146102cd578063537df3b6146102f65780635c975abb1461031f57806370a082311461034a57610179565b806306fdde031461017e57806307da68f5146101a9578063095ea7b3146101c057806318160ddd146101fd57806323b872dd1461022857610179565b36610179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610170906122e8565b60405180910390fd5b600080fd5b34801561018a57600080fd5b506101936105a2565b6040516101a09190612266565b60405180910390f35b3480156101b557600080fd5b506101be610634565b005b3480156101cc57600080fd5b506101e760048036038101906101e29190611eba565b6106ba565b6040516101f4919061224b565b60405180910390f35b34801561020957600080fd5b506102126106dd565b60405161021f91906124c8565b60405180910390f35b34801561023457600080fd5b5061024f600480360381019061024a9190611e6b565b6106e7565b60405161025c919061224b565b60405180910390f35b34801561027157600080fd5b5061027a610716565b60405161028791906124e3565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b29190611eba565b61071f565b6040516102c4919061224b565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef9190611e06565b610756565b005b34801561030257600080fd5b5061031d60048036038101906103189190611e06565b6108ba565b005b34801561032b57600080fd5b50610334610a1d565b604051610341919061224b565b60405180910390f35b34801561035657600080fd5b50610371600480360381019061036c9190611e06565b610a34565b60405161037e91906124c8565b60405180910390f35b34801561039357600080fd5b5061039c610a7c565b005b3480156103aa57600080fd5b506103b3610b04565b6040516103c09190612230565b60405180910390f35b3480156103d557600080fd5b506103de610b2e565b6040516103eb9190612266565b60405180910390f35b34801561040057600080fd5b5061041b60048036038101906104169190611ef6565b610bc0565b604051610428919061224b565b60405180910390f35b34801561043d57600080fd5b5061045860048036038101906104539190611eba565b610be3565b604051610465919061224b565b60405180910390f35b34801561047a57600080fd5b5061049560048036038101906104909190611eba565b610c5a565b6040516104a2919061224b565b60405180910390f35b3480156104b757600080fd5b506104c0610c7d565b005b3480156104ce57600080fd5b506104e960048036038101906104e49190611e06565b610d03565b6040516104f691906124c8565b60405180910390f35b34801561050b57600080fd5b5061052660048036038101906105219190611e2f565b610e9b565b60405161053391906124c8565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e9190611e06565b610f22565b005b34801561057157600080fd5b5061058c60048036038101906105879190611e06565b61101a565b604051610599919061224b565b60405180910390f35b6060600380546105b19061262c565b80601f01602080910402602001604051908101604052809291908181526020018280546105dd9061262c565b801561062a5780601f106105ff5761010080835404028352916020019161062a565b820191906000526020600020905b81548152906001019060200180831161060d57829003601f168201915b5050505050905090565b61063c61103f565b73ffffffffffffffffffffffffffffffffffffffff1661065a610b04565b73ffffffffffffffffffffffffffffffffffffffff16146106b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a790612428565b60405180910390fd5b6106b8611047565b565b6000806106c561103f565b90506106d28185856110ea565b600191505092915050565b6000600254905090565b6000806106f261103f565b90506106ff8582856112b5565b61070a858585611341565b60019150509392505050565b60006012905090565b60008061072a61103f565b905061074b81858561073c8589610e9b565b610746919061251a565b6110ea565b600191505092915050565b61075e61103f565b73ffffffffffffffffffffffffffffffffffffffff1661077c610b04565b73ffffffffffffffffffffffffffffffffffffffff16146107d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c990612428565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561085f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610856906123a8565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6108c261103f565b73ffffffffffffffffffffffffffffffffffffffff166108e0610b04565b73ffffffffffffffffffffffffffffffffffffffff1614610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092d90612428565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b9906123c8565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560149054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a8461103f565b73ffffffffffffffffffffffffffffffffffffffff16610aa2610b04565b73ffffffffffffffffffffffffffffffffffffffff1614610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef90612428565b60405180910390fd5b610b0260006115c2565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b3d9061262c565b80601f0160208091040260200160405190810160405280929190818152602001828054610b699061262c565b8015610bb65780601f10610b8b57610100808354040283529160200191610bb6565b820191906000526020600020905b815481529060010190602001808311610b9957829003601f168201915b5050505050905090565b6000610bcc8484610c5a565b50610bd8848484611688565b600190509392505050565b600080610bee61103f565b90506000610bfc8286610e9b565b905083811015610c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3890612488565b60405180910390fd5b610c4e82868684036110ea565b60019250505092915050565b600080610c6561103f565b9050610c72818585611341565b600191505092915050565b610c8561103f565b73ffffffffffffffffffffffffffffffffffffffff16610ca3610b04565b73ffffffffffffffffffffffffffffffffffffffff1614610cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf090612428565b60405180910390fd5b610d01611ad9565b565b6000806000905060005b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015610e915742600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610dcf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060020201600101541115610e7e57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208181548110610e5e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016000015482610e7b919061251a565b91505b8080610e899061265e565b915050610d0d565b5080915050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f2a61103f565b73ffffffffffffffffffffffffffffffffffffffff16610f48610b04565b73ffffffffffffffffffffffffffffffffffffffff1614610f9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9590612428565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561100e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100590612308565b60405180910390fd5b611017816115c2565b50565b60066020528060005260406000206000915054906101000a900460ff1681565b505050565b600033905090565b61104f610a1d565b1561108f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108690612388565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110d361103f565b6040516110e09190612230565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561115a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115190612468565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c190612328565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112a891906124c8565b60405180910390a3505050565b60006112c18484610e9b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461133b578181101561132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490612348565b60405180910390fd5b61133a84848484036110ea565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a890612448565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611421576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611418906122a8565b60405180910390fd5b61142c838383611b7b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a990612368565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611545919061251a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115a991906124c8565b60405180910390a36115bc848484611d8c565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000805b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156118bd5742600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061174e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600202016001015411156117755781806117719061265e565b9250505b6001826117829190612570565b81146118aa57600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081815481106117ff577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060020201600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110611884577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906002020160008201548160000155600182015481600101559050505b80806118b59061265e565b91505061168c565b50600081600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061190e9190612570565b9050600082141561196957600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006119649190611d91565b611a31565b6000811115611a305760005b81811015611a2e57600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806119f2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60019003818190600052602060002090600202016000808201600090556001820160009055505090558080611a269061265e565b915050611975565b505b5b42831115611ad157600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806040016040528086815260200185815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101555050611ad2565b5b5050505050565b611ae1610a1d565b611b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b17906122c8565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611b6461103f565b604051611b719190612230565b60405180910390a1565b611b8683838361103a565b611b8e610a1d565b15611bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc5906124a8565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5290612288565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdf906123e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611d87576000611d2784610d03565b90506000611d3485610a34565b9050828282611d439190612570565b1015611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b90612408565b60405180910390fd5b50505b505050565b505050565b5080546000825560020290600052602060002090810190611db29190611db5565b50565b5b80821115611dd857600080820160009055600182016000905550600201611db6565b5090565b600081359050611deb81612b4e565b92915050565b600081359050611e0081612b65565b92915050565b600060208284031215611e1857600080fd5b6000611e2684828501611ddc565b91505092915050565b60008060408385031215611e4257600080fd5b6000611e5085828601611ddc565b9250506020611e6185828601611ddc565b9150509250929050565b600080600060608486031215611e8057600080fd5b6000611e8e86828701611ddc565b9350506020611e9f86828701611ddc565b9250506040611eb086828701611df1565b9150509250925092565b60008060408385031215611ecd57600080fd5b6000611edb85828601611ddc565b9250506020611eec85828601611df1565b9150509250929050565b600080600060608486031215611f0b57600080fd5b6000611f1986828701611ddc565b9350506020611f2a86828701611df1565b9250506040611f3b86828701611df1565b9150509250925092565b611f4e816125a4565b82525050565b611f5d816125b6565b82525050565b6000611f6e826124fe565b611f788185612509565b9350611f888185602086016125f9565b611f9181612705565b840191505092915050565b6000611fa9601083612509565b9150611fb482612716565b602082019050919050565b6000611fcc602383612509565b9150611fd78261273f565b604082019050919050565b6000611fef601483612509565b9150611ffa8261278e565b602082019050919050565b6000612012601783612509565b915061201d826127b7565b602082019050919050565b6000612035602683612509565b9150612040826127e0565b604082019050919050565b6000612058602283612509565b91506120638261282f565b604082019050919050565b600061207b601d83612509565b91506120868261287e565b602082019050919050565b600061209e602683612509565b91506120a9826128a7565b604082019050919050565b60006120c1601083612509565b91506120cc826128f6565b602082019050919050565b60006120e4601883612509565b91506120ef8261291f565b602082019050919050565b6000612107601883612509565b915061211282612948565b602082019050919050565b600061212a600e83612509565b915061213582612971565b602082019050919050565b600061214d602283612509565b91506121588261299a565b604082019050919050565b6000612170602083612509565b915061217b826129e9565b602082019050919050565b6000612193602583612509565b915061219e82612a12565b604082019050919050565b60006121b6602483612509565b91506121c182612a61565b604082019050919050565b60006121d9602583612509565b91506121e482612ab0565b604082019050919050565b60006121fc602a83612509565b915061220782612aff565b604082019050919050565b61221b816125e2565b82525050565b61222a816125ec565b82525050565b60006020820190506122456000830184611f45565b92915050565b60006020820190506122606000830184611f54565b92915050565b600060208201905081810360008301526122808184611f63565b905092915050565b600060208201905081810360008301526122a181611f9c565b9050919050565b600060208201905081810360008301526122c181611fbf565b9050919050565b600060208201905081810360008301526122e181611fe2565b9050919050565b6000602082019050818103600083015261230181612005565b9050919050565b6000602082019050818103600083015261232181612028565b9050919050565b600060208201905081810360008301526123418161204b565b9050919050565b600060208201905081810360008301526123618161206e565b9050919050565b6000602082019050818103600083015261238181612091565b9050919050565b600060208201905081810360008301526123a1816120b4565b9050919050565b600060208201905081810360008301526123c1816120d7565b9050919050565b600060208201905081810360008301526123e1816120fa565b9050919050565b600060208201905081810360008301526124018161211d565b9050919050565b6000602082019050818103600083015261242181612140565b9050919050565b6000602082019050818103600083015261244181612163565b9050919050565b6000602082019050818103600083015261246181612186565b9050919050565b60006020820190508181036000830152612481816121a9565b9050919050565b600060208201905081810360008301526124a1816121cc565b9050919050565b600060208201905081810360008301526124c1816121ef565b9050919050565b60006020820190506124dd6000830184612212565b92915050565b60006020820190506124f86000830184612221565b92915050565b600081519050919050565b600082825260208201905092915050565b6000612525826125e2565b9150612530836125e2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612565576125646126a7565b5b828201905092915050565b600061257b826125e2565b9150612586836125e2565b925082821015612599576125986126a7565b5b828203905092915050565b60006125af826125c2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156126175780820151818401526020810190506125fc565b83811115612626576000848401525b50505050565b6000600282049050600182168061264457607f821691505b60208210811415612658576126576126d6565b5b50919050565b6000612669826125e2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561269c5761269b6126a7565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f626c61636b6c69737465642066726f6d00000000000000000000000000000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f446f6e27742061636365707420455448206f7220424e42000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f7573657220616c726561647920626c61636b6c69737465640000000000000000600082015250565b7f7573657220616c72656164792077686974656c69737465640000000000000000600082015250565b7f626c61636b6c697374656420746f000000000000000000000000000000000000600082015250565b7f54696d656c6f636b3a20736f6d652062616c616e636520686173206c6f636b6560008201527f642e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b612b57816125a4565b8114612b6257600080fd5b50565b612b6e816125e2565b8114612b7957600080fd5b5056fea26469706673582212206cdb4dcd0a28f5bdc8f7f2d74433f26a5a85fccec829011450a479f91791cf5964736f6c63430008040033

Loading