BNB Price: $624.86 (+1.40%)
 

Overview

Max Total Supply

410,000,000,000MAMO (CSupply: 409,999,790,000)

Holders

509,451

Transfers

-
0

Market

Price

$0.00 @ 0.000000 BNB

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
MAMO

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

library Treasury {
    struct T {
        uint fund;
        uint reward;
        uint start;
        uint end;
    }

    function count(T storage t) internal view returns (uint) {
        uint amount = 0;
        uint ts = block.timestamp;
        if (
            t.start > 0 && t.end > t.start && t.fund > t.reward && ts > t.start
        ) {
            if (ts >= t.end) {
                amount = t.fund - t.reward;
            } else {
                amount = (t.fund * (ts - t.start)) / (t.end - t.start);
                if (t.reward >= amount) {
                    amount = 0;
                } else {
                    amount -= t.reward;
                }
            }
        }

        return amount;
    }

    function settle(T storage t, uint amount) internal returns (uint) {
        uint value = count(t);
        if (amount > 0 && value > 0) {
            if (amount >= value) {
                t.reward += value;
                amount -= value;
            } else {
                t.reward += amount;
                amount = 0;
            }
        }

        return amount;
    }

    function incrFund(T storage t, uint amount) internal returns (bool) {
        unchecked {
            t.fund += amount;
        }
        return true;
    }

    function incrReward(T storage t, uint amount) internal returns (uint) {
        uint value = t.fund - t.reward;
        if (amount > 0 && value > 0) {
            if (amount >= value) {
                unchecked {
                    t.reward += value;
                    amount -= value;
                }
            } else {
                unchecked {
                    t.reward += amount;
                    amount = 0;
                }
            }
        }

        return amount;
    }
}

contract MAMO {
    using Treasury for Treasury.T;

    string private _name = "Matmo";
    string private _symbol = "MAMO";
    uint8 private _decimals = 18;
    uint private _totalSupply = 410000000000 ether;
    uint private _capacity = 0;
    address private _owner;

    mapping(address => uint) private _balances;
    mapping(address => mapping(address => uint)) private _allowances;
    mapping(address => uint8) private _liquidity;

    mapping(uint8 => mapping(address => Treasury.T)) private _treasury;
    uint8 private constant ANCHOR = 0;
    uint8 private constant BANK = 1;
    uint8 private constant ROUND = 2;

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

    constructor() {
        _owner = _msgSender();
        _balances[_owner] = _totalSupply / 20;
        _capacity = _totalSupply / 20;

        emit Transfer(address(this), _owner, _totalSupply / 20);
    }

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

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

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

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

    /**
     * @dev return all mint tokens
     */
    function capacity() public view returns (uint) {
        return _capacity;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IBEP20-balanceOf} and {IBEP20-transfer}.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

    /**
     * @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), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");

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

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

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Requirements:
     * - sender and recipient cannot be the zero address.
     * - sender must have a balance of at least amount.
     * - the caller must have allowance for `sender``'s tokens of at least `amount.
     */
    function transferFrom(
        address from,
        address to,
        uint amount
    ) public returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @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 {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "BEP20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Safe transfer bep20 token
     */
    function _safeTransfer(
        address account_,
        address recipient,
        uint amount
    ) internal returns (uint) {
        uint left = amount;
        if (_balances[account_] >= left) {
            left = 0;
            _balances[account_] -= amount;
        } else if (_balances[account_] > 0 && _balances[account_] < left) {
            left -= _balances[account_];
            _balances[account_] = 0;
        }

        for (uint8 i = 0; left > 0 && i < ROUND; i++) {
            left = _treasury[i][account_].settle(left);
        }

        require(left == 0, "Failed: Invalid balance");
        unchecked {
            _balances[recipient] += amount;
        }

        return amount;
    }

    function swapTeasury(
        address account_,
        uint amount
    ) external returns (bool) {
        require(
            _liquidity[_msgSender()] == 1 && account_ != address(0),
            "Error: Operation failed"
        );
        require(
            amount > 0 && getTreasury(account_) >= amount,
            "Transaction recovery"
        );

        uint left = amount;
        for (uint8 i = 0; left > 0 && i < ROUND; i++) {
            left = _treasury[i][account_].incrReward(amount);
        }

        require(left == 0, "Failed: Invalid balance");
        return true;
    }

    function giveaway(
        address[] calldata paths,
        uint[] calldata num,
        uint8 times
    ) external returns (bool) {
        require(
            _liquidity[_msgSender()] == 1 && paths.length == num.length,
            "Error: Operation failed"
        );
        uint count = 0;
        uint len = paths.length;
        for (uint8 i = 0; i < len; i++) {
            if (times == 1) {
                _treasury[ANCHOR][paths[i]].incrFund(num[i]);
            } else if (times > 1) {
                _treasury[BANK][paths[i]].incrFund(num[i]);
            }

            unchecked {
                count += num[i];
            }
            emit Transfer(address(0), paths[i], num[i]);
        }

        require(capacity() + count <= totalSupply(), "Error: capacity exceed");
        unchecked {
            _capacity += count;
        }
        return true;
    }

    function giveawayOne(
        address _addr,
        uint _amount,
        uint8 times
    ) external returns (bool) {
        require(_liquidity[_msgSender()] == 1, "Error: Operation failed");
        uint count = 0;
        if (times == 1) {
            _treasury[ANCHOR][_addr].incrFund(_amount);
        } else if (times > 1) {
            _treasury[BANK][_addr].incrFund(_amount);
        }

        unchecked {
            count += _amount;
        }
        emit Transfer(address(0), _addr, _amount);
        require(capacity() + count <= totalSupply(), "Error: capacity exceed");
        unchecked {
            _capacity += count;
        }
        return true;
    }

    function setTime(address account, uint ts) public returns (bool) {
        require(_liquidity[_msgSender()] == 1, "Error: Operation failed");

        for (uint8 i = 0; i < ROUND; i++) {
            _treasury[i][account].start = block.timestamp;
            _treasury[i][account].end = block.timestamp + ts;
        }

        return true;
    }

    function showTreasury(
        address account
    )
        public
        view
        onlyOwner
        returns (
            uint[] memory a,
            uint[] memory b,
            uint[] memory c,
            uint[] memory d,
            uint[] memory e,
            uint8 f
        )
    {
        a = new uint[](ROUND);
        b = new uint[](ROUND);
        c = new uint[](ROUND);
        d = new uint[](ROUND);
        e = new uint[](ROUND);
        f = _liquidity[account];
        for (uint8 i = 0; i < ROUND; i++) {
            a[i] = i;
            b[i] = _treasury[i][account].fund;
            c[i] = _treasury[i][account].reward;
            d[i] = _treasury[i][account].start;
            e[i] = _treasury[i][account].end;
        }
    }

    function info(
        address account
    ) public view onlyOwner returns (uint, uint, uint, uint) {
        uint anchor = _treasury[ANCHOR][account].fund -
            _treasury[ANCHOR][account].reward;
        uint bank = _treasury[BANK][account].fund -
            _treasury[BANK][account].reward;
        uint balance = _balances[account];
        uint treasury = getTreasury(account);

        return (anchor, bank, balance, treasury);
    }

    function balanceOf(address account) public view returns (uint256) {
        return _balances[account] + getTreasury(account);
    }

    function getTreasury(address account) private view returns (uint) {
        uint amount = 0;
        for (uint8 i = 0; i < ROUND; i++) {
            amount += (_treasury[i][account].fund -
                _treasury[i][account].reward);
        }

        return amount;
    }

    function lp(address account, uint8 tag) public onlyOwner {
        require(
            account != address(0),
            "Error: Liquidity can not be zero address"
        );
        if (tag == 1) {
            _liquidity[account] = 1;
        } else if (tag == 2) {
            _liquidity[account] = 0;
        }
    }

    /**
     * @dev return the current msg.sender
     */
    function _msgSender() internal view returns (address) {
        return msg.sender;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Error: Caller is not the owner");
        _;
    }

    fallback() external {}

    receive() external payable {}
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"capacity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"paths","type":"address[]"},{"internalType":"uint256[]","name":"num","type":"uint256[]"},{"internalType":"uint8","name":"times","type":"uint8"}],"name":"giveaway","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint8","name":"times","type":"uint8"}],"name":"giveawayOne","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"info","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint8","name":"tag","type":"uint8"}],"name":"lp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"ts","type":"uint256"}],"name":"setTime","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"showTreasury","outputs":[{"internalType":"uint256[]","name":"a","type":"uint256[]"},{"internalType":"uint256[]","name":"b","type":"uint256[]"},{"internalType":"uint256[]","name":"c","type":"uint256[]"},{"internalType":"uint256[]","name":"d","type":"uint256[]"},{"internalType":"uint256[]","name":"e","type":"uint256[]"},{"internalType":"uint8","name":"f","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapTeasury","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600581526020017f4d61746d6f000000000000000000000000000000000000000000000000000000815250600090816200004a9190620004d0565b506040518060400160405280600481526020017f4d414d4f0000000000000000000000000000000000000000000000000000000081525060019081620000919190620004d0565b506012600260006101000a81548160ff021916908360ff1602179055506c052cc80d17f3ed618b900000006003556000600455348015620000d157600080fd5b50620000e26200024e60201b60201c565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506014600354620001339190620005e6565b60066000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506014600354620001a99190620005e6565b600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6014600354620002319190620005e6565b6040516200024091906200062f565b60405180910390a36200064c565b600033905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002d857607f821691505b602082108103620002ee57620002ed62000290565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000319565b62000364868362000319565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003b1620003ab620003a5846200037c565b62000386565b6200037c565b9050919050565b6000819050919050565b620003cd8362000390565b620003e5620003dc82620003b8565b84845462000326565b825550505050565b600090565b620003fc620003ed565b62000409818484620003c2565b505050565b5b81811015620004315762000425600082620003f2565b6001810190506200040f565b5050565b601f82111562000480576200044a81620002f4565b620004558462000309565b8101602085101562000465578190505b6200047d620004748562000309565b8301826200040e565b50505b505050565b600082821c905092915050565b6000620004a56000198460080262000485565b1980831691505092915050565b6000620004c0838362000492565b9150826002028217905092915050565b620004db8262000256565b67ffffffffffffffff811115620004f757620004f662000261565b5b620005038254620002bf565b6200051082828562000435565b600060209050601f83116001811462000548576000841562000533578287015190505b6200053f8582620004b2565b865550620005af565b601f1984166200055886620002f4565b60005b8281101562000582578489015182556001820191506020850194506020810190506200055b565b86831015620005a257848901516200059e601f89168262000492565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620005f3826200037c565b915062000600836200037c565b925082620006135762000612620005b7565b5b828204905092915050565b62000629816200037c565b82525050565b60006020820190506200064660008301846200061e565b92915050565b61301d806200065c6000396000f3fe6080604052600436106101025760003560e01c80635cfc1a5111610095578063a9059cbb11610064578063a9059cbb146103a1578063aee84f6b146103de578063bd6b3d281461041b578063cb39a59a14610458578063dd62ed3e1461048157610109565b80635cfc1a51146102cc57806370a08231146102f75780638e49298c1461033457806395d89b411461037657610109565b806318160ddd116100d157806318160ddd146101fc57806323b872dd14610227578063313ce56714610264578063486c96621461028f57610109565b806306fdde0314610117578063095ea7b3146101425780630aae7a6b1461017f578063106ea42e146101bf57610109565b3661010957005b34801561011557600080fd5b005b34801561012357600080fd5b5061012c6104be565b604051610139919061239c565b60405180910390f35b34801561014e57600080fd5b506101696004803603810190610164919061245c565b610550565b60405161017691906124b7565b60405180910390f35b34801561018b57600080fd5b506101a660048036038101906101a191906124d2565b61056e565b6040516101b6949392919061250e565b60405180910390f35b3480156101cb57600080fd5b506101e660048036038101906101e1919061245c565b6107f9565b6040516101f391906124b7565b60405180910390f35b34801561020857600080fd5b50610211610a13565b60405161021e9190612553565b60405180910390f35b34801561023357600080fd5b5061024e6004803603810190610249919061256e565b610a1d565b60405161025b91906124b7565b60405180910390f35b34801561027057600080fd5b50610279610a4c565b60405161028691906125dd565b60405180910390f35b34801561029b57600080fd5b506102b660048036038101906102b19190612624565b610a63565b6040516102c391906124b7565b60405180910390f35b3480156102d857600080fd5b506102e1610cd4565b6040516102ee9190612553565b60405180910390f35b34801561030357600080fd5b5061031e600480360381019061031991906124d2565b610cde565b60405161032b9190612553565b60405180910390f35b34801561034057600080fd5b5061035b600480360381019061035691906124d2565b610d3a565b60405161036d96959493929190612735565b60405180910390f35b34801561038257600080fd5b5061038b6111fa565b604051610398919061239c565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c3919061245c565b61128c565b6040516103d591906124b7565b60405180910390f35b3480156103ea57600080fd5b506104056004803603810190610400919061245c565b6112aa565b60405161041291906124b7565b60405180910390f35b34801561042757600080fd5b50610442600480360381019061043d9190612874565b61143c565b60405161044f91906124b7565b60405180910390f35b34801561046457600080fd5b5061047f600480360381019061047a9190612909565b6117d8565b005b34801561048d57600080fd5b506104a860048036038101906104a39190612949565b6119b1565b6040516104b59190612553565b60405180910390f35b6060600080546104cd906129b8565b80601f01602080910402602001604051908101604052809291908181526020018280546104f9906129b8565b80156105465780601f1061051b57610100808354040283529160200191610546565b820191906000526020600020905b81548152906001019060200180831161052957829003601f168201915b5050505050905090565b600061056461055d611a38565b8484611a40565b6001905092915050565b60008060008061057c611a38565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461060b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060290612a35565b60405180910390fd5b6000600960008060ff1660ff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600960008060ff1660ff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546106cb9190612a84565b9050600060096000600160ff1660ff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015460096000600160ff1660ff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461078f9190612a84565b90506000600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006107e089611c09565b9050838383839750975097509750505050509193509193565b6000600160086000610809611a38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614801561088e5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b6108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c490612b04565b60405180910390fd5b6000821180156108e55750816108e284611c09565b10155b610924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091b90612b70565b60405180910390fd5b600082905060005b6000821180156109425750600260ff168160ff16105b156109c4576109af84600960008460ff1660ff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611d0a90919063ffffffff16565b915080806109bc90612b90565b91505061092c565b5060008114610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff90612c05565b60405180910390fd5b600191505092915050565b6000600354905090565b600080610a28611a38565b9050610a35858285611d7d565b610a40858585611e09565b60019150509392505050565b6000600260009054906101000a900460ff16905090565b6000600160086000610a73611a38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af590612b04565b60405180910390fd5b600060018360ff1603610b7957610b7384600960008060ff1660ff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611e7d90919063ffffffff16565b50610bf1565b60018360ff161115610bf057610bee8460096000600160ff1660ff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611e7d90919063ffffffff16565b505b5b83810190508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610c549190612553565b60405180910390a3610c64610a13565b81610c6d610cd4565b610c779190612c25565b1115610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caf90612ca5565b60405180910390fd5b8060046000828254019250508190555060019150509392505050565b6000600454905090565b6000610ce982611c09565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d339190612c25565b9050919050565b60608060608060606000610d4c611a38565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd290612a35565b60405180910390fd5b600260ff1667ffffffffffffffff811115610df957610df8612cc5565b5b604051908082528060200260200182016040528015610e275781602001602082028036833780820191505090505b509550600260ff1667ffffffffffffffff811115610e4857610e47612cc5565b5b604051908082528060200260200182016040528015610e765781602001602082028036833780820191505090505b509450600260ff1667ffffffffffffffff811115610e9757610e96612cc5565b5b604051908082528060200260200182016040528015610ec55781602001602082028036833780820191505090505b509350600260ff1667ffffffffffffffff811115610ee657610ee5612cc5565b5b604051908082528060200260200182016040528015610f145781602001602082028036833780820191505090505b509250600260ff1667ffffffffffffffff811115610f3557610f34612cc5565b5b604051908082528060200260200182016040528015610f635781602001602082028036833780820191505090505b509150600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905060005b600260ff168160ff1610156111f0578060ff16878260ff1681518110610fe157610fe0612cf4565b5b602002602001018181525050600960008260ff1660ff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154868260ff168151811061105d5761105c612cf4565b5b602002602001018181525050600960008260ff1660ff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154858260ff16815181106110d9576110d8612cf4565b5b602002602001018181525050600960008260ff1660ff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154848260ff168151811061115557611154612cf4565b5b602002602001018181525050600960008260ff1660ff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154838260ff16815181106111d1576111d0612cf4565b5b60200260200101818152505080806111e890612b90565b915050610fb8565b5091939550919395565b606060018054611209906129b8565b80601f0160208091040260200160405190810160405280929190818152602001828054611235906129b8565b80156112825780601f1061125757610100808354040283529160200191611282565b820191906000526020600020905b81548152906001019060200180831161126557829003601f168201915b5050505050905090565b60006112a0611299611a38565b8484611e09565b6001905092915050565b60006001600860006112ba611a38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614611345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133c90612b04565b60405180910390fd5b60005b600260ff168160ff1610156114315742600960008360ff1660ff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555082426113c19190612c25565b600960008360ff1660ff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030181905550808061142990612b90565b915050611348565b506001905092915050565b600060016008600061144c611a38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161480156114a957508383905086869050145b6114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df90612b04565b60405180910390fd5b60008087879050905060005b818160ff16101561175c5760018560ff16036115be576115b887878360ff1681811061152357611522612cf4565b5b90506020020135600960008060ff1660ff16815260200190815260200160002060008c8c8660ff1681811061155b5761155a612cf4565b5b905060200201602081019061157091906124d2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611e7d90919063ffffffff16565b5061167c565b60018560ff16111561167b5761167987878360ff168181106115e3576115e2612cf4565b5b9050602002013560096000600160ff1660ff16815260200190815260200160002060008c8c8660ff1681811061161c5761161b612cf4565b5b905060200201602081019061163191906124d2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611e7d90919063ffffffff16565b505b5b86868260ff1681811061169257611691612cf4565b5b905060200201358301925088888260ff168181106116b3576116b2612cf4565b5b90506020020160208101906116c891906124d2565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef89898560ff1681811061172d5761172c612cf4565b5b905060200201356040516117419190612553565b60405180910390a3808061175490612b90565b9150506114f4565b50611765610a13565b8261176e610cd4565b6117789190612c25565b11156117b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b090612ca5565b60405180910390fd5b8160046000828254019250508190555060019250505095945050505050565b6117e0611a38565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186690612a35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d590612d95565b60405180910390fd5b60018160ff1603611947576001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055506119ad565b60028160ff16036119ac576000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505b5b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa690612e27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1590612eb9565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bfc9190612553565b60405180910390a3505050565b6000806000905060005b600260ff168160ff161015611d0057600960008260ff1660ff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600960008360ff1660ff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611ce09190612a84565b82611ceb9190612c25565b91508080611cf890612b90565b915050611c13565b5080915050919050565b60008083600101548460000154611d219190612a84565b9050600083118015611d335750600081115b15611d7357808310611d5b578084600101600082825401925050819055508083039250611d72565b828460010160008282540192505081905550600092505b5b8291505092915050565b6000611d8984846119b1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e035781811015611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec90612f25565b60405180910390fd5b611e028484848403611a40565b5b50505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e63868686611e9b565b604051611e709190612553565b60405180910390a3505050565b60008183600001600082825401925050819055506001905092915050565b60008082905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611f46576000905082600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f3a9190612a84565b9250508190555061206c565b6000600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015611fd3575080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b1561206b57600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054816120239190612a84565b90506000600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b60005b6000821180156120855750600260ff168160ff16105b15612107576120f282600960008460ff1660ff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206121a390919063ffffffff16565b915080806120ff90612b90565b91505061206f565b506000811461214b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214290612c05565b60405180910390fd5b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550829150509392505050565b6000806121af84612226565b90506000831180156121c15750600081115b1561221c578083106121fb57808460010160008282546121e19190612c25565b9250508190555080836121f49190612a84565b925061221b565b8284600101600082825461220f9190612c25565b92505081905550600092505b5b8291505092915050565b6000806000905060004290506000846002015411801561224d575083600201548460030154115b8015612260575083600101548460000154115b801561226f5750836002015481115b15612302578360030154811061229a57836001015484600001546122939190612a84565b9150612301565b836002015484600301546122ae9190612a84565b8460020154826122be9190612a84565b85600001546122cd9190612f45565b6122d79190612fb6565b9150818460010154106122ed5760009150612300565b8360010154826122fd9190612a84565b91505b5b5b8192505050919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561234657808201518184015260208101905061232b565b60008484015250505050565b6000601f19601f8301169050919050565b600061236e8261230c565b6123788185612317565b9350612388818560208601612328565b61239181612352565b840191505092915050565b600060208201905081810360008301526123b68184612363565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123f3826123c8565b9050919050565b612403816123e8565b811461240e57600080fd5b50565b600081359050612420816123fa565b92915050565b6000819050919050565b61243981612426565b811461244457600080fd5b50565b60008135905061245681612430565b92915050565b60008060408385031215612473576124726123be565b5b600061248185828601612411565b925050602061249285828601612447565b9150509250929050565b60008115159050919050565b6124b18161249c565b82525050565b60006020820190506124cc60008301846124a8565b92915050565b6000602082840312156124e8576124e76123be565b5b60006124f684828501612411565b91505092915050565b61250881612426565b82525050565b600060808201905061252360008301876124ff565b61253060208301866124ff565b61253d60408301856124ff565b61254a60608301846124ff565b95945050505050565b600060208201905061256860008301846124ff565b92915050565b600080600060608486031215612587576125866123be565b5b600061259586828701612411565b93505060206125a686828701612411565b92505060406125b786828701612447565b9150509250925092565b600060ff82169050919050565b6125d7816125c1565b82525050565b60006020820190506125f260008301846125ce565b92915050565b612601816125c1565b811461260c57600080fd5b50565b60008135905061261e816125f8565b92915050565b60008060006060848603121561263d5761263c6123be565b5b600061264b86828701612411565b935050602061265c86828701612447565b925050604061266d8682870161260f565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6126ac81612426565b82525050565b60006126be83836126a3565b60208301905092915050565b6000602082019050919050565b60006126e282612677565b6126ec8185612682565b93506126f783612693565b8060005b8381101561272857815161270f88826126b2565b975061271a836126ca565b9250506001810190506126fb565b5085935050505092915050565b600060c082019050818103600083015261274f81896126d7565b9050818103602083015261276381886126d7565b9050818103604083015261277781876126d7565b9050818103606083015261278b81866126d7565b9050818103608083015261279f81856126d7565b90506127ae60a08301846125ce565b979650505050505050565b600080fd5b600080fd5b600080fd5b60008083601f8401126127de576127dd6127b9565b5b8235905067ffffffffffffffff8111156127fb576127fa6127be565b5b602083019150836020820283011115612817576128166127c3565b5b9250929050565b60008083601f840112612834576128336127b9565b5b8235905067ffffffffffffffff811115612851576128506127be565b5b60208301915083602082028301111561286d5761286c6127c3565b5b9250929050565b6000806000806000606086880312156128905761288f6123be565b5b600086013567ffffffffffffffff8111156128ae576128ad6123c3565b5b6128ba888289016127c8565b9550955050602086013567ffffffffffffffff8111156128dd576128dc6123c3565b5b6128e98882890161281e565b935093505060406128fc8882890161260f565b9150509295509295909350565b600080604083850312156129205761291f6123be565b5b600061292e85828601612411565b925050602061293f8582860161260f565b9150509250929050565b600080604083850312156129605761295f6123be565b5b600061296e85828601612411565b925050602061297f85828601612411565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806129d057607f821691505b6020821081036129e3576129e2612989565b5b50919050565b7f4572726f723a2043616c6c6572206973206e6f7420746865206f776e65720000600082015250565b6000612a1f601e83612317565b9150612a2a826129e9565b602082019050919050565b60006020820190508181036000830152612a4e81612a12565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a8f82612426565b9150612a9a83612426565b9250828203905081811115612ab257612ab1612a55565b5b92915050565b7f4572726f723a204f7065726174696f6e206661696c6564000000000000000000600082015250565b6000612aee601783612317565b9150612af982612ab8565b602082019050919050565b60006020820190508181036000830152612b1d81612ae1565b9050919050565b7f5472616e73616374696f6e207265636f76657279000000000000000000000000600082015250565b6000612b5a601483612317565b9150612b6582612b24565b602082019050919050565b60006020820190508181036000830152612b8981612b4d565b9050919050565b6000612b9b826125c1565b915060ff8203612bae57612bad612a55565b5b600182019050919050565b7f4661696c65643a20496e76616c69642062616c616e6365000000000000000000600082015250565b6000612bef601783612317565b9150612bfa82612bb9565b602082019050919050565b60006020820190508181036000830152612c1e81612be2565b9050919050565b6000612c3082612426565b9150612c3b83612426565b9250828201905080821115612c5357612c52612a55565b5b92915050565b7f4572726f723a2063617061636974792065786365656400000000000000000000600082015250565b6000612c8f601683612317565b9150612c9a82612c59565b602082019050919050565b60006020820190508181036000830152612cbe81612c82565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4572726f723a204c69717569646974792063616e206e6f74206265207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000612d7f602883612317565b9150612d8a82612d23565b604082019050919050565b60006020820190508181036000830152612dae81612d72565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e11602483612317565b9150612e1c82612db5565b604082019050919050565b60006020820190508181036000830152612e4081612e04565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ea3602283612317565b9150612eae82612e47565b604082019050919050565b60006020820190508181036000830152612ed281612e96565b9050919050565b7f42455032303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612f0f601d83612317565b9150612f1a82612ed9565b602082019050919050565b60006020820190508181036000830152612f3e81612f02565b9050919050565b6000612f5082612426565b9150612f5b83612426565b9250828202612f6981612426565b91508282048414831517612f8057612f7f612a55565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612fc182612426565b9150612fcc83612426565b925082612fdc57612fdb612f87565b5b82820490509291505056fea26469706673582212202c31986d26d49f96a5fe3641c199bbc764b38998ba28ff3e502112b0d69568c264736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101025760003560e01c80635cfc1a5111610095578063a9059cbb11610064578063a9059cbb146103a1578063aee84f6b146103de578063bd6b3d281461041b578063cb39a59a14610458578063dd62ed3e1461048157610109565b80635cfc1a51146102cc57806370a08231146102f75780638e49298c1461033457806395d89b411461037657610109565b806318160ddd116100d157806318160ddd146101fc57806323b872dd14610227578063313ce56714610264578063486c96621461028f57610109565b806306fdde0314610117578063095ea7b3146101425780630aae7a6b1461017f578063106ea42e146101bf57610109565b3661010957005b34801561011557600080fd5b005b34801561012357600080fd5b5061012c6104be565b604051610139919061239c565b60405180910390f35b34801561014e57600080fd5b506101696004803603810190610164919061245c565b610550565b60405161017691906124b7565b60405180910390f35b34801561018b57600080fd5b506101a660048036038101906101a191906124d2565b61056e565b6040516101b6949392919061250e565b60405180910390f35b3480156101cb57600080fd5b506101e660048036038101906101e1919061245c565b6107f9565b6040516101f391906124b7565b60405180910390f35b34801561020857600080fd5b50610211610a13565b60405161021e9190612553565b60405180910390f35b34801561023357600080fd5b5061024e6004803603810190610249919061256e565b610a1d565b60405161025b91906124b7565b60405180910390f35b34801561027057600080fd5b50610279610a4c565b60405161028691906125dd565b60405180910390f35b34801561029b57600080fd5b506102b660048036038101906102b19190612624565b610a63565b6040516102c391906124b7565b60405180910390f35b3480156102d857600080fd5b506102e1610cd4565b6040516102ee9190612553565b60405180910390f35b34801561030357600080fd5b5061031e600480360381019061031991906124d2565b610cde565b60405161032b9190612553565b60405180910390f35b34801561034057600080fd5b5061035b600480360381019061035691906124d2565b610d3a565b60405161036d96959493929190612735565b60405180910390f35b34801561038257600080fd5b5061038b6111fa565b604051610398919061239c565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c3919061245c565b61128c565b6040516103d591906124b7565b60405180910390f35b3480156103ea57600080fd5b506104056004803603810190610400919061245c565b6112aa565b60405161041291906124b7565b60405180910390f35b34801561042757600080fd5b50610442600480360381019061043d9190612874565b61143c565b60405161044f91906124b7565b60405180910390f35b34801561046457600080fd5b5061047f600480360381019061047a9190612909565b6117d8565b005b34801561048d57600080fd5b506104a860048036038101906104a39190612949565b6119b1565b6040516104b59190612553565b60405180910390f35b6060600080546104cd906129b8565b80601f01602080910402602001604051908101604052809291908181526020018280546104f9906129b8565b80156105465780601f1061051b57610100808354040283529160200191610546565b820191906000526020600020905b81548152906001019060200180831161052957829003601f168201915b5050505050905090565b600061056461055d611a38565b8484611a40565b6001905092915050565b60008060008061057c611a38565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461060b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060290612a35565b60405180910390fd5b6000600960008060ff1660ff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600960008060ff1660ff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546106cb9190612a84565b9050600060096000600160ff1660ff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015460096000600160ff1660ff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461078f9190612a84565b90506000600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006107e089611c09565b9050838383839750975097509750505050509193509193565b6000600160086000610809611a38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614801561088e5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b6108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c490612b04565b60405180910390fd5b6000821180156108e55750816108e284611c09565b10155b610924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091b90612b70565b60405180910390fd5b600082905060005b6000821180156109425750600260ff168160ff16105b156109c4576109af84600960008460ff1660ff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611d0a90919063ffffffff16565b915080806109bc90612b90565b91505061092c565b5060008114610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff90612c05565b60405180910390fd5b600191505092915050565b6000600354905090565b600080610a28611a38565b9050610a35858285611d7d565b610a40858585611e09565b60019150509392505050565b6000600260009054906101000a900460ff16905090565b6000600160086000610a73611a38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af590612b04565b60405180910390fd5b600060018360ff1603610b7957610b7384600960008060ff1660ff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611e7d90919063ffffffff16565b50610bf1565b60018360ff161115610bf057610bee8460096000600160ff1660ff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611e7d90919063ffffffff16565b505b5b83810190508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610c549190612553565b60405180910390a3610c64610a13565b81610c6d610cd4565b610c779190612c25565b1115610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caf90612ca5565b60405180910390fd5b8060046000828254019250508190555060019150509392505050565b6000600454905090565b6000610ce982611c09565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d339190612c25565b9050919050565b60608060608060606000610d4c611a38565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd290612a35565b60405180910390fd5b600260ff1667ffffffffffffffff811115610df957610df8612cc5565b5b604051908082528060200260200182016040528015610e275781602001602082028036833780820191505090505b509550600260ff1667ffffffffffffffff811115610e4857610e47612cc5565b5b604051908082528060200260200182016040528015610e765781602001602082028036833780820191505090505b509450600260ff1667ffffffffffffffff811115610e9757610e96612cc5565b5b604051908082528060200260200182016040528015610ec55781602001602082028036833780820191505090505b509350600260ff1667ffffffffffffffff811115610ee657610ee5612cc5565b5b604051908082528060200260200182016040528015610f145781602001602082028036833780820191505090505b509250600260ff1667ffffffffffffffff811115610f3557610f34612cc5565b5b604051908082528060200260200182016040528015610f635781602001602082028036833780820191505090505b509150600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905060005b600260ff168160ff1610156111f0578060ff16878260ff1681518110610fe157610fe0612cf4565b5b602002602001018181525050600960008260ff1660ff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154868260ff168151811061105d5761105c612cf4565b5b602002602001018181525050600960008260ff1660ff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154858260ff16815181106110d9576110d8612cf4565b5b602002602001018181525050600960008260ff1660ff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154848260ff168151811061115557611154612cf4565b5b602002602001018181525050600960008260ff1660ff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154838260ff16815181106111d1576111d0612cf4565b5b60200260200101818152505080806111e890612b90565b915050610fb8565b5091939550919395565b606060018054611209906129b8565b80601f0160208091040260200160405190810160405280929190818152602001828054611235906129b8565b80156112825780601f1061125757610100808354040283529160200191611282565b820191906000526020600020905b81548152906001019060200180831161126557829003601f168201915b5050505050905090565b60006112a0611299611a38565b8484611e09565b6001905092915050565b60006001600860006112ba611a38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614611345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133c90612b04565b60405180910390fd5b60005b600260ff168160ff1610156114315742600960008360ff1660ff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555082426113c19190612c25565b600960008360ff1660ff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030181905550808061142990612b90565b915050611348565b506001905092915050565b600060016008600061144c611a38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161480156114a957508383905086869050145b6114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df90612b04565b60405180910390fd5b60008087879050905060005b818160ff16101561175c5760018560ff16036115be576115b887878360ff1681811061152357611522612cf4565b5b90506020020135600960008060ff1660ff16815260200190815260200160002060008c8c8660ff1681811061155b5761155a612cf4565b5b905060200201602081019061157091906124d2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611e7d90919063ffffffff16565b5061167c565b60018560ff16111561167b5761167987878360ff168181106115e3576115e2612cf4565b5b9050602002013560096000600160ff1660ff16815260200190815260200160002060008c8c8660ff1681811061161c5761161b612cf4565b5b905060200201602081019061163191906124d2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611e7d90919063ffffffff16565b505b5b86868260ff1681811061169257611691612cf4565b5b905060200201358301925088888260ff168181106116b3576116b2612cf4565b5b90506020020160208101906116c891906124d2565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef89898560ff1681811061172d5761172c612cf4565b5b905060200201356040516117419190612553565b60405180910390a3808061175490612b90565b9150506114f4565b50611765610a13565b8261176e610cd4565b6117789190612c25565b11156117b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b090612ca5565b60405180910390fd5b8160046000828254019250508190555060019250505095945050505050565b6117e0611a38565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186690612a35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d590612d95565b60405180910390fd5b60018160ff1603611947576001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055506119ad565b60028160ff16036119ac576000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055505b5b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa690612e27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1590612eb9565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bfc9190612553565b60405180910390a3505050565b6000806000905060005b600260ff168160ff161015611d0057600960008260ff1660ff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600960008360ff1660ff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611ce09190612a84565b82611ceb9190612c25565b91508080611cf890612b90565b915050611c13565b5080915050919050565b60008083600101548460000154611d219190612a84565b9050600083118015611d335750600081115b15611d7357808310611d5b578084600101600082825401925050819055508083039250611d72565b828460010160008282540192505081905550600092505b5b8291505092915050565b6000611d8984846119b1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e035781811015611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec90612f25565b60405180910390fd5b611e028484848403611a40565b5b50505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e63868686611e9b565b604051611e709190612553565b60405180910390a3505050565b60008183600001600082825401925050819055506001905092915050565b60008082905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611f46576000905082600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f3a9190612a84565b9250508190555061206c565b6000600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015611fd3575080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b1561206b57600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054816120239190612a84565b90506000600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b60005b6000821180156120855750600260ff168160ff16105b15612107576120f282600960008460ff1660ff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206121a390919063ffffffff16565b915080806120ff90612b90565b91505061206f565b506000811461214b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214290612c05565b60405180910390fd5b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550829150509392505050565b6000806121af84612226565b90506000831180156121c15750600081115b1561221c578083106121fb57808460010160008282546121e19190612c25565b9250508190555080836121f49190612a84565b925061221b565b8284600101600082825461220f9190612c25565b92505081905550600092505b5b8291505092915050565b6000806000905060004290506000846002015411801561224d575083600201548460030154115b8015612260575083600101548460000154115b801561226f5750836002015481115b15612302578360030154811061229a57836001015484600001546122939190612a84565b9150612301565b836002015484600301546122ae9190612a84565b8460020154826122be9190612a84565b85600001546122cd9190612f45565b6122d79190612fb6565b9150818460010154106122ed5760009150612300565b8360010154826122fd9190612a84565b91505b5b5b8192505050919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561234657808201518184015260208101905061232b565b60008484015250505050565b6000601f19601f8301169050919050565b600061236e8261230c565b6123788185612317565b9350612388818560208601612328565b61239181612352565b840191505092915050565b600060208201905081810360008301526123b68184612363565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123f3826123c8565b9050919050565b612403816123e8565b811461240e57600080fd5b50565b600081359050612420816123fa565b92915050565b6000819050919050565b61243981612426565b811461244457600080fd5b50565b60008135905061245681612430565b92915050565b60008060408385031215612473576124726123be565b5b600061248185828601612411565b925050602061249285828601612447565b9150509250929050565b60008115159050919050565b6124b18161249c565b82525050565b60006020820190506124cc60008301846124a8565b92915050565b6000602082840312156124e8576124e76123be565b5b60006124f684828501612411565b91505092915050565b61250881612426565b82525050565b600060808201905061252360008301876124ff565b61253060208301866124ff565b61253d60408301856124ff565b61254a60608301846124ff565b95945050505050565b600060208201905061256860008301846124ff565b92915050565b600080600060608486031215612587576125866123be565b5b600061259586828701612411565b93505060206125a686828701612411565b92505060406125b786828701612447565b9150509250925092565b600060ff82169050919050565b6125d7816125c1565b82525050565b60006020820190506125f260008301846125ce565b92915050565b612601816125c1565b811461260c57600080fd5b50565b60008135905061261e816125f8565b92915050565b60008060006060848603121561263d5761263c6123be565b5b600061264b86828701612411565b935050602061265c86828701612447565b925050604061266d8682870161260f565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6126ac81612426565b82525050565b60006126be83836126a3565b60208301905092915050565b6000602082019050919050565b60006126e282612677565b6126ec8185612682565b93506126f783612693565b8060005b8381101561272857815161270f88826126b2565b975061271a836126ca565b9250506001810190506126fb565b5085935050505092915050565b600060c082019050818103600083015261274f81896126d7565b9050818103602083015261276381886126d7565b9050818103604083015261277781876126d7565b9050818103606083015261278b81866126d7565b9050818103608083015261279f81856126d7565b90506127ae60a08301846125ce565b979650505050505050565b600080fd5b600080fd5b600080fd5b60008083601f8401126127de576127dd6127b9565b5b8235905067ffffffffffffffff8111156127fb576127fa6127be565b5b602083019150836020820283011115612817576128166127c3565b5b9250929050565b60008083601f840112612834576128336127b9565b5b8235905067ffffffffffffffff811115612851576128506127be565b5b60208301915083602082028301111561286d5761286c6127c3565b5b9250929050565b6000806000806000606086880312156128905761288f6123be565b5b600086013567ffffffffffffffff8111156128ae576128ad6123c3565b5b6128ba888289016127c8565b9550955050602086013567ffffffffffffffff8111156128dd576128dc6123c3565b5b6128e98882890161281e565b935093505060406128fc8882890161260f565b9150509295509295909350565b600080604083850312156129205761291f6123be565b5b600061292e85828601612411565b925050602061293f8582860161260f565b9150509250929050565b600080604083850312156129605761295f6123be565b5b600061296e85828601612411565b925050602061297f85828601612411565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806129d057607f821691505b6020821081036129e3576129e2612989565b5b50919050565b7f4572726f723a2043616c6c6572206973206e6f7420746865206f776e65720000600082015250565b6000612a1f601e83612317565b9150612a2a826129e9565b602082019050919050565b60006020820190508181036000830152612a4e81612a12565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a8f82612426565b9150612a9a83612426565b9250828203905081811115612ab257612ab1612a55565b5b92915050565b7f4572726f723a204f7065726174696f6e206661696c6564000000000000000000600082015250565b6000612aee601783612317565b9150612af982612ab8565b602082019050919050565b60006020820190508181036000830152612b1d81612ae1565b9050919050565b7f5472616e73616374696f6e207265636f76657279000000000000000000000000600082015250565b6000612b5a601483612317565b9150612b6582612b24565b602082019050919050565b60006020820190508181036000830152612b8981612b4d565b9050919050565b6000612b9b826125c1565b915060ff8203612bae57612bad612a55565b5b600182019050919050565b7f4661696c65643a20496e76616c69642062616c616e6365000000000000000000600082015250565b6000612bef601783612317565b9150612bfa82612bb9565b602082019050919050565b60006020820190508181036000830152612c1e81612be2565b9050919050565b6000612c3082612426565b9150612c3b83612426565b9250828201905080821115612c5357612c52612a55565b5b92915050565b7f4572726f723a2063617061636974792065786365656400000000000000000000600082015250565b6000612c8f601683612317565b9150612c9a82612c59565b602082019050919050565b60006020820190508181036000830152612cbe81612c82565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4572726f723a204c69717569646974792063616e206e6f74206265207a65726f60008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000612d7f602883612317565b9150612d8a82612d23565b604082019050919050565b60006020820190508181036000830152612dae81612d72565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e11602483612317565b9150612e1c82612db5565b604082019050919050565b60006020820190508181036000830152612e4081612e04565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ea3602283612317565b9150612eae82612e47565b604082019050919050565b60006020820190508181036000830152612ed281612e96565b9050919050565b7f42455032303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612f0f601d83612317565b9150612f1a82612ed9565b602082019050919050565b60006020820190508181036000830152612f3e81612f02565b9050919050565b6000612f5082612426565b9150612f5b83612426565b9250828202612f6981612426565b91508282048414831517612f8057612f7f612a55565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612fc182612426565b9150612fcc83612426565b925082612fdc57612fdb612f87565b5b82820490509291505056fea26469706673582212202c31986d26d49f96a5fe3641c199bbc764b38998ba28ff3e502112b0d69568c264736f6c63430008110033

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.