false
true
0

Contract Address Details

0x6cA2CC52BB2CB67Dd952E73B8786EB3a368b484c

Token
YZY DAO (YZY)
Creator
0x4256b4–a547bd at 0xb09e54–703a43
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
Fetching transactions...
Transfers
Fetching transfers...
Gas Used
Fetching gas used...
Last Balance Update
25988368
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify. View contract in Sourcify repository
Contract name:
YZYToken




Optimization enabled
true
Compiler version
v0.7.6+commit.7338295f




Optimization runs
200
EVM Version
istanbul




Verified at
2026-03-10T13:13:21.486721Z

Constructor Arguments

000000000000000000000000c4986c6cd93bc215635cf7f1f1edbe905bdbb9750000000000000000000000000b9c32f77780f79436ecdcea09ee5ba17705f271000000000000000000000000f5095ffd1c4b6c4563177316e7057fd3af38a8b0

Arg [0] (address) : 0xc4986c6cd93bc215635cf7f1f1edbe905bdbb975
Arg [1] (address) : 0x0b9c32f77780f79436ecdcea09ee5ba17705f271
Arg [2] (address) : 0xf5095ffd1c4b6c4563177316e7057fd3af38a8b0

              

YZYToken.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IYZYVault {
    function balanceOf(address account) external view returns (uint256);
    function addTaxFee(uint256 amount) external returns (bool);
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

/**
 * 'YZY' token contract
 *
 * Name        : YZY DAO
 * Symbol      : YZY
 * Total supply: 11,000 (11 thousands)
 * Decimals    : 18
 *
 * ERC20 Token, with the Burnable, Pausable and Ownable from OpenZeppelin
 */
contract YZYToken is Context, IERC20, Ownable {
    using SafeMath for uint256;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    uint16 public _taxFee;
    address public _vault;
    address private _vaultTokenOwner;
    address private _uniswapTokenOwner;
    address private _presaleTokenOwner;
    address private _uniswapV2Router;

    uint8 private _initialMaxTransfers;
    uint256 private _initialMaxTransferAmount;

    modifier onlyVault() {
        require(
            _vault == _msgSender(),
            "Ownable: caller is not vault"
        );
        _;
    }

    event ChangedTaxFee(address indexed owner, uint16 fee);
    event ChangedVault(address indexed owner, address indexed oldAddress, address indexed newAddress);
    event ChangedInitialMaxTransfers(address indexed owner, uint8 count);

    constructor(address uniswapTokenOwner, address presaleTokenOwner, address vaultTokenOwner) {
        _name = "YZY DAO";
        _symbol = "YZY";
        _decimals = 18;

        _uniswapTokenOwner = uniswapTokenOwner;
        _presaleTokenOwner = presaleTokenOwner;
        _vaultTokenOwner = vaultTokenOwner;
        _uniswapV2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

        // set initial tax fee(transfer) fee as 2%
        // It is allow 2 digits under point
        _taxFee = 200;
        _initialMaxTransfers = 50;
        _initialMaxTransferAmount = 17e17; // initial around  0.2 eth(1.7 YZY)

        // Uniswap pool 100
        _mint(_uniswapTokenOwner, 100E18);
        // Farming 9900
        _mint(_vaultTokenOwner, 9900E18);
        // presale 1000
        _mint(_presaleTokenOwner, 1000E18);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        if (_checkWithoutFee()) {
            _transfer(_msgSender(), recipient, amount);
        } else {
            uint256 taxAmount = amount.mul(uint256(_taxFee)).div(10000);
            uint256 leftAmount = amount.sub(taxAmount);
            _transfer(_msgSender(), _vault, taxAmount);
            _transfer(_msgSender(), recipient, leftAmount);

            IYZYVault(_vault).addTaxFee(taxAmount);
        }

        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        if (_checkWithoutFee()) {
            _transfer(sender, recipient, amount);
        } else {
            uint256 feeAmount = amount.mul(uint256(_taxFee)).div(10000);
            uint256 leftAmount = amount.sub(feeAmount);

            _transfer(sender, _vault, feeAmount);
            _transfer(sender, recipient, leftAmount);
            IYZYVault(_vault).addTaxFee(feeAmount);
        }
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function setTaxFee(uint16 fee) external onlyOwner {
        _taxFee = fee;
        emit ChangedTaxFee(_msgSender(), fee);
    }

    function setVault(address vault) external onlyOwner {
        require(vault != address(0), "Invalid vault contract address");
        address oldAddress = _vault;
        _vault = vault;
        emit ChangedVault(_msgSender(), oldAddress, _vault);
    }

    function setInitialMaxTransfers(uint8 count) external onlyOwner {
        _initialMaxTransfers = count;
        emit ChangedInitialMaxTransfers(_msgSender(), count);
    }

    function burnFromVault(uint256 amount) external onlyVault returns (bool) {
        _burn(_vault, amount);
        return true;
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if (recipient != _vault) { // for anti-bot
            if (sender != _vault && sender != _uniswapTokenOwner && sender != _presaleTokenOwner && sender != _vaultTokenOwner) {
                if (_initialMaxTransfers != 0) {
                    require(amount <= _initialMaxTransferAmount, "Can't transfer more than 1.7 YZY for initial 50 times.");
                    _initialMaxTransfers--;
                }
            }
        }

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

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

    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);
    }

    function _checkWithoutFee() internal view returns (bool) {
        if (_msgSender() == _vault || _msgSender() == _presaleTokenOwner ||
            _msgSender() == _uniswapTokenOwner || _msgSender() == _vaultTokenOwner) {
            return true;
        } else {
            return false;
        }
    }
}
        

Compiler Settings

{"remappings":[],"optimizer":{"runs":200,"enabled":true},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"istanbul","compilationTarget":{"YZYToken.sol":"YZYToken"}}
              

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"uniswapTokenOwner","internalType":"address"},{"type":"address","name":"presaleTokenOwner","internalType":"address"},{"type":"address","name":"vaultTokenOwner","internalType":"address"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"ChangedInitialMaxTransfers","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"uint8","name":"count","internalType":"uint8","indexed":false}],"anonymous":false},{"type":"event","name":"ChangedTaxFee","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"uint16","name":"fee","internalType":"uint16","indexed":false}],"anonymous":false},{"type":"event","name":"ChangedVault","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"oldAddress","internalType":"address","indexed":true},{"type":"address","name":"newAddress","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint16","name":"","internalType":"uint16"}],"name":"_taxFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"_vault","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"burnFromVault","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setInitialMaxTransfers","inputs":[{"type":"uint8","name":"count","internalType":"uint8"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setTaxFee","inputs":[{"type":"uint16","name":"fee","internalType":"uint16"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setVault","inputs":[{"type":"address","name":"vault","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]}]
              

Contract Creation Code

Verify & Publish
0x60806040523480156200001157600080fd5b5060405162001b5438038062001b54833981810160405260608110156200003757600080fd5b5080516020820151604090920151909190600062000054620001f3565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060408051808201909152600780825266595a592044414f60c81b6020909201918252620000ce916004916200035e565b5060408051808201909152600380825262595a5960e81b6020909201918252620000fb916005916200035e565b5060068054600880546001600160a01b03199081166001600160a01b038881169190911792839055600980548316888316179055600780548316878316179055600a8054601260ff199096169590951762ffff00191661c80017909555737a250d5630b4cf539739df2c5dacb4c659f2488d939091169290921760ff60a01b1916601960a11b179092556717979cfe362a0000600b55620001a7911668056bc75e2d63100000620001f7565b600754620001c9906001600160a01b0316690218ae196b8d4f300000620001f7565b600954620001ea906001600160a01b0316683635c9adc5dea00000620001f7565b5050506200040a565b3390565b6001600160a01b03821662000253576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200026f81600354620002fc60201b62000e0e1790919060201c565b6003556001600160a01b038216600090815260016020908152604090912054620002a491839062000e0e620002fc821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101562000357576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620003965760008555620003e1565b82601f10620003b157805160ff1916838001178555620003e1565b82800160010185558215620003e1579182015b82811115620003e1578251825591602001919060010190620003c4565b50620003ef929150620003f3565b5090565b5b80821115620003ef5760008155600101620003f4565b61173a806200041a6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063a9c6325811610071578063a9c63258146103a1578063dd62ed3e146103be578063f2fde38b146103ec578063f50c01ef14610412578063fd243da3146104335761012c565b8063715018a6146103155780638da5cb5b1461031d57806395d89b4114610341578063a457c2d714610349578063a9059cbb146103755761012c565b806339509351116100f4578063395093511461025c5780633b124fe7146102885780636817031b146102a75780636dfe4e0c146102cf57806370a08231146102ef5761012c565b806306fdde0314610131578063095ea7b3146101ae57806318160ddd146101ee57806323b872dd14610208578063313ce5671461023e575b600080fd5b61013961043b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356104d2565b604080519115158252519081900360200190f35b6101f66104f0565b60408051918252519081900360200190f35b6101da6004803603606081101561021e57600080fd5b506001600160a01b038135811691602081013590911690604001356104f6565b61024661067c565b6040805160ff9092168252519081900360200190f35b6101da6004803603604081101561027257600080fd5b506001600160a01b038135169060200135610685565b6102906106d3565b6040805161ffff9092168252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b03166106e2565b005b6102cd600480360360208110156102e557600080fd5b503560ff1661080d565b6101f66004803603602081101561030557600080fd5b50356001600160a01b03166108cb565b6102cd6108e6565b610325610988565b604080516001600160a01b039092168252519081900360200190f35b610139610997565b6101da6004803603604081101561035f57600080fd5b506001600160a01b0381351690602001356109f8565b6101da6004803603604081101561038b57600080fd5b506001600160a01b038135169060200135610a60565b6101da600480360360208110156103b757600080fd5b5035610b80565b6101f6600480360360408110156103d457600080fd5b506001600160a01b0381358116916020013516610c18565b6102cd6004803603602081101561040257600080fd5b50356001600160a01b0316610c43565b6102cd6004803603602081101561042857600080fd5b503561ffff16610d3b565b610325610df8565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104c75780601f1061049c576101008083540402835291602001916104c7565b820191906000526020600020905b8154815290600101906020018083116104aa57829003601f168201915b505050505090505b90565b60006104e66104df610e6f565b8484610e73565b5060015b92915050565b60035490565b6000610500610f5f565b156105155761051084848461100b565b610602565b60065460009061053d9061271090610537908690610100900461ffff1661125e565b906112b7565b9050600061054b84836112f9565b905061056d86600660039054906101000a90046001600160a01b03168461100b565b61057886868361100b565b600660039054906101000a90046001600160a01b03166001600160a01b031663acb55ab1836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156105d357600080fd5b505af11580156105e7573d6000803e3d6000fd5b505050506040513d60208110156105fd57600080fd5b505050505b6106728461060e610e6f565b61066d8560405180606001604052806028815260200161162e602891396001600160a01b038a1660009081526002602052604081209061064c610e6f565b6001600160a01b031681526020810191909152604001600020549190611337565b610e73565b5060019392505050565b60065460ff1690565b60006104e6610692610e6f565b8461066d85600260006106a3610e6f565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610e0e565b600654610100900461ffff1681565b6106ea610e6f565b6000546001600160a01b0390811691161461073a576040805162461bcd60e51b81526020600482018190526024820152600080516020611656833981519152604482015290519081900360640190fd5b6001600160a01b038116610795576040805162461bcd60e51b815260206004820152601e60248201527f496e76616c6964207661756c7420636f6e747261637420616464726573730000604482015290519081900360640190fd5b600680546001600160a01b0383811663010000009081026301000000600160b81b031984161793849055918290048116929190910416816107d4610e6f565b6001600160a01b03167f212b71a61ed5acf0871c06f022fcb8e2670b5f32677efe666f8c2f2254337b3960405160405180910390a45050565b610815610e6f565b6000546001600160a01b03908116911614610865576040805162461bcd60e51b81526020600482018190526024820152600080516020611656833981519152604482015290519081900360640190fd5b600a805460ff60a01b1916600160a01b60ff841602179055610885610e6f565b6001600160a01b03167f3e59c333e0afc14664476c763a75bde9e423d546070bd86f5b9a6a0a9c55f0ed82604051808260ff16815260200191505060405180910390a250565b6001600160a01b031660009081526001602052604090205490565b6108ee610e6f565b6000546001600160a01b0390811691161461093e576040805162461bcd60e51b81526020600482018190526024820152600080516020611656833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104c75780601f1061049c576101008083540402835291602001916104c7565b60006104e6610a05610e6f565b8461066d856040518060600160405280602581526020016116e06025913960026000610a2f610e6f565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611337565b6000610a6a610f5f565b15610a8657610a81610a7a610e6f565b848461100b565b6104e6565b600654600090610aa89061271090610537908690610100900461ffff1661125e565b90506000610ab684836112f9565b9050610adc610ac3610e6f565b600654630100000090046001600160a01b03168461100b565b610aee610ae7610e6f565b868361100b565b600660039054906101000a90046001600160a01b03166001600160a01b031663acb55ab1836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610b4957600080fd5b505af1158015610b5d573d6000803e3d6000fd5b505050506040513d6020811015610b7357600080fd5b5050505050600192915050565b6000610b8a610e6f565b600654630100000090046001600160a01b03908116911614610bf3576040805162461bcd60e51b815260206004820152601c60248201527f4f776e61626c653a2063616c6c6572206973206e6f74207661756c7400000000604482015290519081900360640190fd5b600654610c1090630100000090046001600160a01b0316836113ce565b506001919050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610c4b610e6f565b6000546001600160a01b03908116911614610c9b576040805162461bcd60e51b81526020600482018190526024820152600080516020611656833981519152604482015290519081900360640190fd5b6001600160a01b038116610ce05760405162461bcd60e51b815260040180806020018281038252602681526020018061159f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610d43610e6f565b6000546001600160a01b03908116911614610d93576040805162461bcd60e51b81526020600482018190526024820152600080516020611656833981519152604482015290519081900360640190fd5b6006805462ffff00191661010061ffff841602179055610db1610e6f565b6001600160a01b03167f0f47c834050beff4b5f0caad993362276b6176c2c9e2a2b6feb9e8c6bad0fd1782604051808261ffff16815260200191505060405180910390a250565b600654630100000090046001600160a01b031681565b600082820183811015610e68576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b038316610eb85760405162461bcd60e51b81526004018080602001828103825260248152602001806116bc6024913960400191505060405180910390fd5b6001600160a01b038216610efd5760405162461bcd60e51b81526004018080602001828103825260228152602001806115c56022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600654600090630100000090046001600160a01b0316610f7d610e6f565b6001600160a01b03161480610fac57506009546001600160a01b0316610fa1610e6f565b6001600160a01b0316145b80610fd157506008546001600160a01b0316610fc6610e6f565b6001600160a01b0316145b80610ff657506007546001600160a01b0316610feb610e6f565b6001600160a01b0316145b15611003575060016104cf565b5060006104cf565b6001600160a01b0383166110505760405162461bcd60e51b81526004018080602001828103825260258152602001806116976025913960400191505060405180910390fd5b6001600160a01b0382166110955760405162461bcd60e51b815260040180806020018281038252602381526020018061155a6023913960400191505060405180910390fd5b6006546001600160a01b0383811663010000009092041614611196576006546001600160a01b03848116630100000090920416148015906110e457506008546001600160a01b03848116911614155b80156110fe57506009546001600160a01b03848116911614155b801561111857506007546001600160a01b03848116911614155b1561119657600a54600160a01b900460ff161561119657600b548111156111705760405162461bcd60e51b81526004018080602001828103825260368152602001806115246036913960400191505060405180910390fd5b600a805460001960ff600160a01b808404821692909201160260ff60a01b199091161790555b6111d3816040518060600160405280602681526020016115e7602691396001600160a01b0386166000908152600160205260409020549190611337565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546112029082610e0e565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008261126d575060006104ea565b8282028284828161127a57fe5b0414610e685760405162461bcd60e51b815260040180806020018281038252602181526020018061160d6021913960400191505060405180910390fd5b6000610e6883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114be565b6000610e6883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152505b600081848411156113c65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561138b578181015183820152602001611373565b50505050905090810190601f1680156113b85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0382166114135760405162461bcd60e51b81526004018080602001828103825260218152602001806116766021913960400191505060405180910390fd5b6114508160405180606001604052806022815260200161157d602291396001600160a01b0385166000908152600160205260409020549190611337565b6001600160a01b03831660009081526001602052604090205560035461147690826112f9565b6003556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000818361150d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561138b578181015183820152602001611373565b50600083858161151957fe5b049594505050505056fe43616e2774207472616e73666572206d6f7265207468616e20312e3720595a5920666f7220696e697469616c2035302074696d65732e45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201539e090909543dcf1c9961e1d44b52ca67f529735eb9d72cdd1f75580a42ac464736f6c63430007060033000000000000000000000000c4986c6cd93bc215635cf7f1f1edbe905bdbb9750000000000000000000000000b9c32f77780f79436ecdcea09ee5ba17705f271000000000000000000000000f5095ffd1c4b6c4563177316e7057fd3af38a8b0

Deployed ByteCode

0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063a9c6325811610071578063a9c63258146103a1578063dd62ed3e146103be578063f2fde38b146103ec578063f50c01ef14610412578063fd243da3146104335761012c565b8063715018a6146103155780638da5cb5b1461031d57806395d89b4114610341578063a457c2d714610349578063a9059cbb146103755761012c565b806339509351116100f4578063395093511461025c5780633b124fe7146102885780636817031b146102a75780636dfe4e0c146102cf57806370a08231146102ef5761012c565b806306fdde0314610131578063095ea7b3146101ae57806318160ddd146101ee57806323b872dd14610208578063313ce5671461023e575b600080fd5b61013961043b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356104d2565b604080519115158252519081900360200190f35b6101f66104f0565b60408051918252519081900360200190f35b6101da6004803603606081101561021e57600080fd5b506001600160a01b038135811691602081013590911690604001356104f6565b61024661067c565b6040805160ff9092168252519081900360200190f35b6101da6004803603604081101561027257600080fd5b506001600160a01b038135169060200135610685565b6102906106d3565b6040805161ffff9092168252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b03166106e2565b005b6102cd600480360360208110156102e557600080fd5b503560ff1661080d565b6101f66004803603602081101561030557600080fd5b50356001600160a01b03166108cb565b6102cd6108e6565b610325610988565b604080516001600160a01b039092168252519081900360200190f35b610139610997565b6101da6004803603604081101561035f57600080fd5b506001600160a01b0381351690602001356109f8565b6101da6004803603604081101561038b57600080fd5b506001600160a01b038135169060200135610a60565b6101da600480360360208110156103b757600080fd5b5035610b80565b6101f6600480360360408110156103d457600080fd5b506001600160a01b0381358116916020013516610c18565b6102cd6004803603602081101561040257600080fd5b50356001600160a01b0316610c43565b6102cd6004803603602081101561042857600080fd5b503561ffff16610d3b565b610325610df8565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104c75780601f1061049c576101008083540402835291602001916104c7565b820191906000526020600020905b8154815290600101906020018083116104aa57829003601f168201915b505050505090505b90565b60006104e66104df610e6f565b8484610e73565b5060015b92915050565b60035490565b6000610500610f5f565b156105155761051084848461100b565b610602565b60065460009061053d9061271090610537908690610100900461ffff1661125e565b906112b7565b9050600061054b84836112f9565b905061056d86600660039054906101000a90046001600160a01b03168461100b565b61057886868361100b565b600660039054906101000a90046001600160a01b03166001600160a01b031663acb55ab1836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156105d357600080fd5b505af11580156105e7573d6000803e3d6000fd5b505050506040513d60208110156105fd57600080fd5b505050505b6106728461060e610e6f565b61066d8560405180606001604052806028815260200161162e602891396001600160a01b038a1660009081526002602052604081209061064c610e6f565b6001600160a01b031681526020810191909152604001600020549190611337565b610e73565b5060019392505050565b60065460ff1690565b60006104e6610692610e6f565b8461066d85600260006106a3610e6f565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610e0e565b600654610100900461ffff1681565b6106ea610e6f565b6000546001600160a01b0390811691161461073a576040805162461bcd60e51b81526020600482018190526024820152600080516020611656833981519152604482015290519081900360640190fd5b6001600160a01b038116610795576040805162461bcd60e51b815260206004820152601e60248201527f496e76616c6964207661756c7420636f6e747261637420616464726573730000604482015290519081900360640190fd5b600680546001600160a01b0383811663010000009081026301000000600160b81b031984161793849055918290048116929190910416816107d4610e6f565b6001600160a01b03167f212b71a61ed5acf0871c06f022fcb8e2670b5f32677efe666f8c2f2254337b3960405160405180910390a45050565b610815610e6f565b6000546001600160a01b03908116911614610865576040805162461bcd60e51b81526020600482018190526024820152600080516020611656833981519152604482015290519081900360640190fd5b600a805460ff60a01b1916600160a01b60ff841602179055610885610e6f565b6001600160a01b03167f3e59c333e0afc14664476c763a75bde9e423d546070bd86f5b9a6a0a9c55f0ed82604051808260ff16815260200191505060405180910390a250565b6001600160a01b031660009081526001602052604090205490565b6108ee610e6f565b6000546001600160a01b0390811691161461093e576040805162461bcd60e51b81526020600482018190526024820152600080516020611656833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104c75780601f1061049c576101008083540402835291602001916104c7565b60006104e6610a05610e6f565b8461066d856040518060600160405280602581526020016116e06025913960026000610a2f610e6f565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611337565b6000610a6a610f5f565b15610a8657610a81610a7a610e6f565b848461100b565b6104e6565b600654600090610aa89061271090610537908690610100900461ffff1661125e565b90506000610ab684836112f9565b9050610adc610ac3610e6f565b600654630100000090046001600160a01b03168461100b565b610aee610ae7610e6f565b868361100b565b600660039054906101000a90046001600160a01b03166001600160a01b031663acb55ab1836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610b4957600080fd5b505af1158015610b5d573d6000803e3d6000fd5b505050506040513d6020811015610b7357600080fd5b5050505050600192915050565b6000610b8a610e6f565b600654630100000090046001600160a01b03908116911614610bf3576040805162461bcd60e51b815260206004820152601c60248201527f4f776e61626c653a2063616c6c6572206973206e6f74207661756c7400000000604482015290519081900360640190fd5b600654610c1090630100000090046001600160a01b0316836113ce565b506001919050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b610c4b610e6f565b6000546001600160a01b03908116911614610c9b576040805162461bcd60e51b81526020600482018190526024820152600080516020611656833981519152604482015290519081900360640190fd5b6001600160a01b038116610ce05760405162461bcd60e51b815260040180806020018281038252602681526020018061159f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610d43610e6f565b6000546001600160a01b03908116911614610d93576040805162461bcd60e51b81526020600482018190526024820152600080516020611656833981519152604482015290519081900360640190fd5b6006805462ffff00191661010061ffff841602179055610db1610e6f565b6001600160a01b03167f0f47c834050beff4b5f0caad993362276b6176c2c9e2a2b6feb9e8c6bad0fd1782604051808261ffff16815260200191505060405180910390a250565b600654630100000090046001600160a01b031681565b600082820183811015610e68576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b038316610eb85760405162461bcd60e51b81526004018080602001828103825260248152602001806116bc6024913960400191505060405180910390fd5b6001600160a01b038216610efd5760405162461bcd60e51b81526004018080602001828103825260228152602001806115c56022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600654600090630100000090046001600160a01b0316610f7d610e6f565b6001600160a01b03161480610fac57506009546001600160a01b0316610fa1610e6f565b6001600160a01b0316145b80610fd157506008546001600160a01b0316610fc6610e6f565b6001600160a01b0316145b80610ff657506007546001600160a01b0316610feb610e6f565b6001600160a01b0316145b15611003575060016104cf565b5060006104cf565b6001600160a01b0383166110505760405162461bcd60e51b81526004018080602001828103825260258152602001806116976025913960400191505060405180910390fd5b6001600160a01b0382166110955760405162461bcd60e51b815260040180806020018281038252602381526020018061155a6023913960400191505060405180910390fd5b6006546001600160a01b0383811663010000009092041614611196576006546001600160a01b03848116630100000090920416148015906110e457506008546001600160a01b03848116911614155b80156110fe57506009546001600160a01b03848116911614155b801561111857506007546001600160a01b03848116911614155b1561119657600a54600160a01b900460ff161561119657600b548111156111705760405162461bcd60e51b81526004018080602001828103825260368152602001806115246036913960400191505060405180910390fd5b600a805460001960ff600160a01b808404821692909201160260ff60a01b199091161790555b6111d3816040518060600160405280602681526020016115e7602691396001600160a01b0386166000908152600160205260409020549190611337565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546112029082610e0e565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008261126d575060006104ea565b8282028284828161127a57fe5b0414610e685760405162461bcd60e51b815260040180806020018281038252602181526020018061160d6021913960400191505060405180910390fd5b6000610e6883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506114be565b6000610e6883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152505b600081848411156113c65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561138b578181015183820152602001611373565b50505050905090810190601f1680156113b85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0382166114135760405162461bcd60e51b81526004018080602001828103825260218152602001806116766021913960400191505060405180910390fd5b6114508160405180606001604052806022815260200161157d602291396001600160a01b0385166000908152600160205260409020549190611337565b6001600160a01b03831660009081526001602052604090205560035461147690826112f9565b6003556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000818361150d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561138b578181015183820152602001611373565b50600083858161151957fe5b049594505050505056fe43616e2774207472616e73666572206d6f7265207468616e20312e3720595a5920666f7220696e697469616c2035302074696d65732e45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201539e090909543dcf1c9961e1d44b52ca67f529735eb9d72cdd1f75580a42ac464736f6c63430007060033