ETH Price: $2,773.14 (+5.67%)

Token

KEKINU (KEKINU)
 

Overview

Max Total Supply

1,000,000,000 KEKINU

Holders

124

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
ardo.eth
Balance
1 KEKINU

Value
$0.00
0x268E8eF615670b275418D2787521aD27A4C9c310
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
KEKINU

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : kekinu.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.12;


interface IERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

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

abstract contract Auth {
    address internal owner;
    mapping(address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER");
        _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED");
        _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(owner);
        owner = address(0);
    }

    event OwnershipTransferred(address owner);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address liqPair);
}

interface IDEXRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract KEKINU is IERC20, Auth {

    address public marketingFeeReceiver =
        0xa5Ed5F601853E4Fe2cC4013d21720Be3117C9f93;
    address public auliquidityRatioReceiver =
        0xa5Ed5F601853E4Fe2cC4013d21720Be3117C9f93;


    string constant _name = "KEKINU";
    string constant _symbol = "KEKINU";

    uint8 constant _decimals = 18;

    uint8 constant _zeros = 9;

    uint8 constant _maxTx = 5;
    uint8 constant _maxWallet = 10;

    uint8 constant _threshpct = 2;

    uint256 _totalSupply = 1 * 10**_zeros * 10**_decimals;
    uint256 public _maxTxAmount = (_totalSupply*_maxTx)/1000;
    uint256 public _maxWalletToken = (_totalSupply*_maxWallet)/1000;
    uint256 public swapThreshold = (_totalSupply*_threshpct)/10000;

    uint256 public buyFee = 700;
    uint256 public sellFee = 30;

    uint256 public liquidityRatio = 10;
    uint256 public marketingRatio = 90;
    uint256 public feeRatio = marketingRatio + liquidityRatio;
    uint256 public feeDenominator = 1000;


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

    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isTxLimitExempt;
    mapping(address => bool) isWalletLimitExempt;
    mapping(address => bool) private _isBlacklisted;




    IDEXRouter public Irouter02;
    address public liqPair;

    bool public tradingLive = false;

    bool public limitsEnabled = true;
    bool public swapEnabled = true;

    bool inSwap;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }


    constructor() Auth(msg.sender) {
        Irouter02 = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Contract will create a pair when you deploy it
        liqPair = IDEXFactory(Irouter02.factory()).createPair(
            Irouter02.WETH(),
            address(this)
        );

        _allowances[address(this)][address(Irouter02)] = type(uint256).max;


        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[liqPair] = true;

        _approve(owner, address(Irouter02), type(uint256).max);
        _approve(address(this), address(Irouter02), type(uint256).max);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

    function getOwner() external view override returns (address) {
        return owner;
    }

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

    function allowance(address holder, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowances[holder][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(
        address sender,
        address spender,
        uint256 amount
    ) private {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");
        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] =
                _allowances[sender][msg.sender] -
                amount;
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool) {
        require(
            !_isBlacklisted[from] && !_isBlacklisted[to],
            "Blacklisted address"
        );
        if (inSwap) {
            return _basicTransfer(from, to, amount);
        }


        if (!authorizations[from] && !authorizations[to]){
            require(tradingLive, "Trading not open yet");
            if (limitsEnabled) {
                if (!authorizations[from] && !isWalletLimitExempt[to]) {
                    uint256 heldTokens = balanceOf(to);
                    require(
                        (heldTokens + amount) <= _maxWalletToken,
                        "max wallet limit reached"
                    );
                }
                checkAmountTx(from, amount);
            }
        }

        if (shouldSwapBack(from)) {
            swapBack(swapThreshold);
        }

        _balances[from] -= amount;

        uint256 amountReceived;

        amountReceived = (!shouldTakeFee(from) || !shouldTakeFee(to))
            ? amount
            : takeFee(from, amount);
        _balances[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] -= _balances[sender];
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkAmountTx(address sender, uint256 amount) internal view {
        require(
            amount <= _maxTxAmount || isTxLimitExempt[sender],
            "TX Limit Exceeded"
        );
    }

    function shouldSwapBack(address from) internal view returns (bool) {
        if (
            !inSwap &&
            swapEnabled &&
            !isTxLimitExempt[from] &&
            from != liqPair &&
            _balances[address(this)] >= swapThreshold
        ) {
            return true;
        } else {
            return false;
        }
    }

    function swapbackEdit(bool _enabled) public onlyOwner {
        swapEnabled = _enabled;
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount)
        internal
        returns (uint256)
    {
        uint256 _fee;
        if (sender != liqPair) {
            _fee = sellFee;
        } else if (sender == liqPair) {
            _fee = buyFee;
        } else {
            return amount;
        }
        uint256 contractTokens = (amount * _fee) / 1000;
        _balances[address(this)] += contractTokens;
        emit Transfer(sender, address(this), contractTokens);
        return amount - contractTokens;
    }

    function swapBack(uint256 amountAsked) internal swapping {
        uint256 amountToLiquify = ((amountAsked*liquidityRatio)/feeRatio)/2;
        uint256 amountToSwap = amountAsked -amountToLiquify;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = Irouter02.WETH();
        uint256 balanceBefore = address(this).balance;
        Irouter02.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance - balanceBefore;
        uint256 totalETHFee = feeRatio - (liquidityRatio/2);
        uint256 amountETHLiquidity = ((amountETH*liquidityRatio)/ totalETHFee)/(2);
        uint256 amountETHMarketing = (amountETH*marketingRatio)/totalETHFee;
        (bool tmpSuccess, ) = payable(marketingFeeReceiver).call{
            value: amountETHMarketing,
            gas: 30000
        }("");
        tmpSuccess = false;
        if (amountToLiquify > 0) {
            Irouter02.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                auliquidityRatioReceiver,
                block.timestamp
            );
        }
    }

    function setLimits(uint256 maxWallPercent, uint256 maxTXPercent)
        external
        onlyOwner
    {
        require(maxWallPercent > 5, "Max wallet too low");
        require(maxTXPercent > 1, "Max Tx too low");
        _maxWalletToken = _totalSupply*maxWallPercent/1000;
        _maxTxAmount = _totalSupply*maxTXPercent/1000;
    }

    function setSwapThreshold(uint256 _swapThreshold) external onlyOwner {
        //require(_swapThreshold < 50, "threshold too high");
        swapThreshold = _totalSupply*_swapThreshold/10000;
    }


    function blacklist(address[] calldata addrs) external onlyOwner {
        for (uint256 i = 0; i < addrs.length; i++) {
            _isBlacklisted[addrs[i]] = true;
        }
    }

    function unblacklist(address[] calldata addrs) external onlyOwner {
        for (uint256 i = 0; i < addrs.length; i++) {
            _isBlacklisted[addrs[i]] = true;
        }
    }

    // Input the amount of token you wish to swapback
    function sweepContingency(uint256 amount) external authorized {
        require(balanceOf(address(this)) >= amount, "not enought tokens");
        swapBack(amount);
    }

    function clearStuckBalance() external authorized {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH);
    }

    function enableTrading() external onlyOwner {
        require(!tradingLive, "already launched");
        tradingLive = true;
    }

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        isTxLimitExempt[holder] = exempt;
    }

    function setIsWalletLimitExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        isWalletLimitExempt[holder] = exempt;
    }

    function setFees(
        uint256 _buyFee,
        uint256 _sellFee
    ) external onlyOwner {
        buyFee = _buyFee;
        sellFee = _sellFee;
        require(sellFee < 100 && buyFee < 100, "Fees cannot be more than 10%");
    }

    function setRatios( uint256 _marketingRatio, uint256 _liquidityRatio) external onlyOwner{
        marketingRatio = _marketingRatio;
        liquidityRatio = _liquidityRatio;
        feeRatio = liquidityRatio + marketingRatio;
    }


    function enableLimits() external onlyOwner{
        limitsEnabled = true;
    }

    function disableLimits() external onlyOwner{
        limitsEnabled = false;
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Irouter02","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":[],"name":"auliquidityRatioReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"},{"internalType":"uint256","name":"maxTXPercent","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingRatio","type":"uint256"},{"internalType":"uint256","name":"_liquidityRatio","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapThreshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"swapbackEdit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"}],"name":"unblacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526002805473a5ed5f601853e4fe2cc4013d21720be3117c9f936001600160a01b03199182168117909255600380549091169091179055620000486012600a6200062d565b620000566009600a6200062d565b6200006390600162000645565b6200006f919062000645565b60048190556103e890620000869060059062000645565b62000092919062000667565b6005556004546103e890620000aa90600a9062000645565b620000b6919062000667565b60065560045461271090620000ce9060029062000645565b620000da919062000667565b6007556102bc600855601e600955600a808055605a600b8190556200010091906200068a565b600c556103e8600d556015805462ffffff60a01b191661010160a81b1790553480156200012c57600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff191690921790915560148054737a250d5630b4cf539739df2c5dacb4c659f2488d931683179055825163c45a015560e01b81529251919263c45a015592600480830193928290030181865afa158015620001b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d99190620006a0565b6001600160a01b031663c9c65396601460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002619190620006a0565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620002ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d49190620006a0565b601580546001600160a01b0319166001600160a01b03928316178155306000818152600f602090815260408083206014805488168552908352818420600019908190553380865260108552838620805460ff199081166001908117909255888852858820805482168317905582885260118752858820805482168317905588885285882080548216831790559187526012909552838620805482168617905595855282852080548716851790559554871684529083208054909416909117909255549054620003aa939182169291169062000417565b601454620003c69030906001600160a01b031660001962000417565b600454336000818152600e6020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620006cb565b6001600160a01b038316620004695760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620004b75760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000460565b6001600160a01b038381166000818152600f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200056f57816000190482111562000553576200055362000518565b808516156200056157918102915b93841c939080029062000533565b509250929050565b600082620005885750600162000627565b81620005975750600062000627565b8160018114620005b05760028114620005bb57620005db565b600191505062000627565b60ff841115620005cf57620005cf62000518565b50506001821b62000627565b5060208310610133831016604e8410600b841016171562000600575081810a62000627565b6200060c83836200052e565b806000190482111562000623576200062362000518565b0290505b92915050565b60006200063e60ff84168362000577565b9392505050565b600081600019048311821515161562000662576200066262000518565b500290565b6000826200068557634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000627576200062762000518565b600060208284031215620006b357600080fd5b81516001600160a01b03811681146200063e57600080fd5b611f7b80620006db6000396000f3fe60806040526004361061028c5760003560e01c806370a082311161015a578063b6a5d7de116100c1578063ef97212d1161007a578063ef97212d146107ab578063f0b37c04146107c1578063f2fde38b146107e1578063f84ba65d14610801578063f928364c14610821578063fe9fbb801461083657600080fd5b8063b6a5d7de146106c5578063bfab6535146106e5578063c4590d3f14610705578063cfd55dda14610725578063dd62ed3e14610745578063e96fada21461078b57600080fd5b80638de4f5ed116101135780638de4f5ed1461062f57806395d89b41146102e35780639d0014b11461064f578063a76293ea1461066f578063a83019fa1461068f578063a9059cbb146106a557600080fd5b806370a0823114610585578063715018a6146105bb57806378109e54146105d05780637d1db4a5146105e6578063893d20e8146105fc5780638a8c523c1461061a57600080fd5b80632f54bf6e116101fe5780635da55668116101b75780635da55668146104b757806361147c54146104d7578063658d4b7f1461050f5780636639dd931461052f5780636902ca611461054f5780636ddd17131461056457600080fd5b80632f54bf6e1461040a578063313ce567146104395780633582ad2314610455578063364333f41461047657806341744dd41461048b57806347062402146104a157600080fd5b806311704f521161025057806311704f5214610368578063180b0d7e1461038957806318160ddd1461039f5780632198cf6c146103b457806323b872dd146103d45780632b14ca56146103f457600080fd5b8063041f173f146102985780630445b667146102ba57806306fdde03146102e3578063095ea7b3146103185780630b78f9c01461034857600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b3366004611b62565b61086f565b005b3480156102c657600080fd5b506102d060075481565b6040519081526020015b60405180910390f35b3480156102ef57600080fd5b5060408051808201825260068152654b454b494e5560d01b602082015290516102da9190611bd7565b34801561032457600080fd5b50610338610333366004611c3a565b610919565b60405190151581526020016102da565b34801561035457600080fd5b506102b8610363366004611c66565b610930565b34801561037457600080fd5b5060155461033890600160a01b900460ff1681565b34801561039557600080fd5b506102d0600d5481565b3480156103ab57600080fd5b506004546102d0565b3480156103c057600080fd5b506102b86103cf366004611c98565b6109c6565b3480156103e057600080fd5b506103386103ef366004611ccd565b610a1b565b34801561040057600080fd5b506102d060095481565b34801561041657600080fd5b50610338610425366004611d0e565b6000546001600160a01b0391821691161490565b34801561044557600080fd5b50604051601281526020016102da565b34801561046157600080fd5b5060155461033890600160a81b900460ff1681565b34801561048257600080fd5b506102b8610ab0565b34801561049757600080fd5b506102d0600c5481565b3480156104ad57600080fd5b506102d060085481565b3480156104c357600080fd5b506102b86104d2366004611d2b565b610b0e565b3480156104e357600080fd5b506015546104f7906001600160a01b031681565b6040516001600160a01b0390911681526020016102da565b34801561051b57600080fd5b506102b861052a366004611c98565b610b56565b34801561053b57600080fd5b506102b861054a366004611c66565b610bb0565b34801561055b57600080fd5b506102b8610bf5565b34801561057057600080fd5b5060155461033890600160b01b900460ff1681565b34801561059157600080fd5b506102d06105a0366004611d0e565b6001600160a01b03166000908152600e602052604090205490565b3480156105c757600080fd5b506102b8610c34565b3480156105dc57600080fd5b506102d060065481565b3480156105f257600080fd5b506102d060055481565b34801561060857600080fd5b506000546001600160a01b03166104f7565b34801561062657600080fd5b506102b8610cb0565b34801561063b57600080fd5b506003546104f7906001600160a01b031681565b34801561065b57600080fd5b506102b861066a366004611d46565b610d3c565b34801561067b57600080fd5b506014546104f7906001600160a01b031681565b34801561069b57600080fd5b506102d0600a5481565b3480156106b157600080fd5b506103386106c0366004611c3a565b610d87565b3480156106d157600080fd5b506102b86106e0366004611d0e565b610d94565b3480156106f157600080fd5b506102b8610700366004611b62565b610de5565b34801561071157600080fd5b506102b8610720366004611c66565b610e81565b34801561073157600080fd5b506102b8610740366004611d46565b610f72565b34801561075157600080fd5b506102d0610760366004611d5f565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b34801561079757600080fd5b506002546104f7906001600160a01b031681565b3480156107b757600080fd5b506102d0600b5481565b3480156107cd57600080fd5b506102b86107dc366004611d0e565b611001565b3480156107ed57600080fd5b506102b86107fc366004611d0e565b61104c565b34801561080d57600080fd5b506102b861081c366004611c98565b6110e2565b34801561082d57600080fd5b506102b8611137565b34801561084257600080fd5b50610338610851366004611d0e565b6001600160a01b031660009081526001602052604090205460ff1690565b6000546001600160a01b031633146108a25760405162461bcd60e51b815260040161089990611d98565b60405180910390fd5b60005b81811015610914576001601360008585858181106108c5576108c5611db8565b90506020020160208101906108da9190611d0e565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061090c81611de4565b9150506108a5565b505050565b6000610926338484611170565b5060015b92915050565b6000546001600160a01b0316331461095a5760405162461bcd60e51b815260040161089990611d98565b6008829055600981905560648110801561097657506064600854105b6109c25760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e20313025000000006044820152606401610899565b5050565b6000546001600160a01b031633146109f05760405162461bcd60e51b815260040161089990611d98565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001600160a01b0383166000908152600f6020908152604080832033845290915281205460001914610a9b576001600160a01b0384166000908152600f60209081526040808320338452909152902054610a76908390611dfd565b6001600160a01b0385166000908152600f602090815260408083203384529091529020555b610aa6848484611269565b90505b9392505050565b3360009081526001602052604090205460ff16610adf5760405162461bcd60e51b815260040161089990611e10565b6040514790339082156108fc029083906000818181858888f193505050501580156109c2573d6000803e3d6000fd5b6000546001600160a01b03163314610b385760405162461bcd60e51b815260040161089990611d98565b60158054911515600160b01b0260ff60b01b19909216919091179055565b3360009081526001602052604090205460ff16610b855760405162461bcd60e51b815260040161089990611e10565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610bda5760405162461bcd60e51b815260040161089990611d98565b600b829055600a819055610bee8282611e35565b600c555050565b6000546001600160a01b03163314610c1f5760405162461bcd60e51b815260040161089990611d98565b6015805460ff60a81b1916600160a81b179055565b6000546001600160a01b03163314610c5e5760405162461bcd60e51b815260040161089990611d98565b6000546040516001600160a01b0390911681527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1600080546001600160a01b0319169055565b6000546001600160a01b03163314610cda5760405162461bcd60e51b815260040161089990611d98565b601554600160a01b900460ff1615610d275760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e481b185d5b98da195960821b6044820152606401610899565b6015805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610d665760405162461bcd60e51b815260040161089990611d98565b61271081600454610d779190611e48565b610d819190611e67565b60075550565b6000610aa9338484611269565b6000546001600160a01b03163314610dbe5760405162461bcd60e51b815260040161089990611d98565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b03163314610e0f5760405162461bcd60e51b815260040161089990611d98565b60005b8181101561091457600160136000858585818110610e3257610e32611db8565b9050602002016020810190610e479190611d0e565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610e7981611de4565b915050610e12565b6000546001600160a01b03163314610eab5760405162461bcd60e51b815260040161089990611d98565b60058211610ef05760405162461bcd60e51b81526020600482015260126024820152714d61782077616c6c657420746f6f206c6f7760701b6044820152606401610899565b60018111610f315760405162461bcd60e51b815260206004820152600e60248201526d4d617820547820746f6f206c6f7760901b6044820152606401610899565b6103e882600454610f429190611e48565b610f4c9190611e67565b6006556004546103e890610f61908390611e48565b610f6b9190611e67565b6005555050565b3360009081526001602052604090205460ff16610fa15760405162461bcd60e51b815260040161089990611e10565b306000908152600e6020526040902054811115610ff55760405162461bcd60e51b81526020600482015260126024820152716e6f7420656e6f7567687420746f6b656e7360701b6044820152606401610899565b610ffe816115ab565b50565b6000546001600160a01b0316331461102b5760405162461bcd60e51b815260040161089990611d98565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146110765760405162461bcd60e51b815260040161089990611d98565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6000546001600160a01b0316331461110c5760405162461bcd60e51b815260040161089990611d98565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111615760405162461bcd60e51b815260040161089990611d98565b6015805460ff60a81b19169055565b6001600160a01b0383166111bc5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610899565b6001600160a01b0382166112085760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610899565b6001600160a01b038381166000818152600f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526013602052604081205460ff161580156112ab57506001600160a01b03831660009081526013602052604090205460ff16155b6112ed5760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610899565b601554600160b81b900460ff16156113115761130a8484846118cc565b9050610aa9565b6001600160a01b03841660009081526001602052604090205460ff1615801561135357506001600160a01b03831660009081526001602052604090205460ff16155b1561148157601554600160a01b900460ff166113a85760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610899565b601554600160a81b900460ff1615611481576001600160a01b03841660009081526001602052604090205460ff161580156113fc57506001600160a01b03831660009081526012602052604090205460ff16155b15611477576001600160a01b0383166000908152600e60205260409020546006546114278483611e35565b11156114755760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610899565b505b611481848361197d565b61148a846119e6565b1561149a5761149a6007546115ab565b6001600160a01b0384166000908152600e6020526040812080548492906114c2908490611dfd565b90915550506001600160a01b03841660009081526010602052604081205460ff1615158061150a57506001600160a01b03841660009081526010602052604090205460ff1615155b61151d576115188584611a82565b61151f565b825b6001600160a01b0385166000908152600e602052604081208054929350839290919061154c908490611e35565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161159891815260200190565b60405180910390a3506001949350505050565b6015805460ff60b81b1916600160b81b179055600c54600a546000916002916115d49085611e48565b6115de9190611e67565b6115e89190611e67565b905060006115f68284611dfd565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061163057611630611db8565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ad9190611e89565b816001815181106116c0576116c0611db8565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b81524792919091169063791ac9479061170a908690600090879030904290600401611ea6565b600060405180830381600087803b15801561172457600080fd5b505af1158015611738573d6000803e3d6000fd5b505050506000814761174a9190611dfd565b905060006002600a5461175d9190611e67565b600c5461176a9190611dfd565b90506000600282600a548561177f9190611e48565b6117899190611e67565b6117939190611e67565b9050600082600b54856117a69190611e48565b6117b09190611e67565b6002546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d8060008114611807576040519150601f19603f3d011682016040523d82523d6000602084013e61180c565b606091505b506000925050891590506118b35760145460035460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af115801561188a573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118af9190611f17565b5050505b50506015805460ff60b81b191690555050505050505050565b6001600160a01b0383166000908152600e60205260408120805490826118f28380611dfd565b90915550506001600160a01b0383166000908152600e60205260408120805484929061191f908490611e35565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161196b91815260200190565b60405180910390a35060019392505050565b600554811115806119a657506001600160a01b03821660009081526011602052604090205460ff165b6109c25760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610899565b601554600090600160b81b900460ff16158015611a0c5750601554600160b01b900460ff165b8015611a3157506001600160a01b03821660009081526011602052604090205460ff16155b8015611a4b57506015546001600160a01b03838116911614155b8015611a685750600754306000908152600e602052604090205410155b15611a7557506001919050565b506000919050565b919050565b60155460009081906001600160a01b03858116911614611aa55750600954611acd565b6015546001600160a01b0390811690851603611ac45750600854611acd565b8291505061092a565b60006103e8611adc8386611e48565b611ae69190611e67565b306000908152600e6020526040812080549293508392909190611b0a908490611e35565b909155505060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611b598185611dfd565b95945050505050565b60008060208385031215611b7557600080fd5b823567ffffffffffffffff80821115611b8d57600080fd5b818501915085601f830112611ba157600080fd5b813581811115611bb057600080fd5b8660208260051b8501011115611bc557600080fd5b60209290920196919550909350505050565b600060208083528351808285015260005b81811015611c0457858101830151858201604001528201611be8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ffe57600080fd5b60008060408385031215611c4d57600080fd5b8235611c5881611c25565b946020939093013593505050565b60008060408385031215611c7957600080fd5b50508035926020909101359150565b80358015158114611a7d57600080fd5b60008060408385031215611cab57600080fd5b8235611cb681611c25565b9150611cc460208401611c88565b90509250929050565b600080600060608486031215611ce257600080fd5b8335611ced81611c25565b92506020840135611cfd81611c25565b929592945050506040919091013590565b600060208284031215611d2057600080fd5b8135610aa981611c25565b600060208284031215611d3d57600080fd5b610aa982611c88565b600060208284031215611d5857600080fd5b5035919050565b60008060408385031215611d7257600080fd5b8235611d7d81611c25565b91506020830135611d8d81611c25565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611df657611df6611dce565b5060010190565b8181038181111561092a5761092a611dce565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b8082018082111561092a5761092a611dce565b6000816000190483118215151615611e6257611e62611dce565b500290565b600082611e8457634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611e9b57600080fd5b8151610aa981611c25565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ef65784516001600160a01b031683529383019391830191600101611ed1565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611f2c57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d78c3639af85618af46c38ed18795f2ff7e4c0359a744deb966aab0a5cdc910064736f6c63430008100033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c806370a082311161015a578063b6a5d7de116100c1578063ef97212d1161007a578063ef97212d146107ab578063f0b37c04146107c1578063f2fde38b146107e1578063f84ba65d14610801578063f928364c14610821578063fe9fbb801461083657600080fd5b8063b6a5d7de146106c5578063bfab6535146106e5578063c4590d3f14610705578063cfd55dda14610725578063dd62ed3e14610745578063e96fada21461078b57600080fd5b80638de4f5ed116101135780638de4f5ed1461062f57806395d89b41146102e35780639d0014b11461064f578063a76293ea1461066f578063a83019fa1461068f578063a9059cbb146106a557600080fd5b806370a0823114610585578063715018a6146105bb57806378109e54146105d05780637d1db4a5146105e6578063893d20e8146105fc5780638a8c523c1461061a57600080fd5b80632f54bf6e116101fe5780635da55668116101b75780635da55668146104b757806361147c54146104d7578063658d4b7f1461050f5780636639dd931461052f5780636902ca611461054f5780636ddd17131461056457600080fd5b80632f54bf6e1461040a578063313ce567146104395780633582ad2314610455578063364333f41461047657806341744dd41461048b57806347062402146104a157600080fd5b806311704f521161025057806311704f5214610368578063180b0d7e1461038957806318160ddd1461039f5780632198cf6c146103b457806323b872dd146103d45780632b14ca56146103f457600080fd5b8063041f173f146102985780630445b667146102ba57806306fdde03146102e3578063095ea7b3146103185780630b78f9c01461034857600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b3366004611b62565b61086f565b005b3480156102c657600080fd5b506102d060075481565b6040519081526020015b60405180910390f35b3480156102ef57600080fd5b5060408051808201825260068152654b454b494e5560d01b602082015290516102da9190611bd7565b34801561032457600080fd5b50610338610333366004611c3a565b610919565b60405190151581526020016102da565b34801561035457600080fd5b506102b8610363366004611c66565b610930565b34801561037457600080fd5b5060155461033890600160a01b900460ff1681565b34801561039557600080fd5b506102d0600d5481565b3480156103ab57600080fd5b506004546102d0565b3480156103c057600080fd5b506102b86103cf366004611c98565b6109c6565b3480156103e057600080fd5b506103386103ef366004611ccd565b610a1b565b34801561040057600080fd5b506102d060095481565b34801561041657600080fd5b50610338610425366004611d0e565b6000546001600160a01b0391821691161490565b34801561044557600080fd5b50604051601281526020016102da565b34801561046157600080fd5b5060155461033890600160a81b900460ff1681565b34801561048257600080fd5b506102b8610ab0565b34801561049757600080fd5b506102d0600c5481565b3480156104ad57600080fd5b506102d060085481565b3480156104c357600080fd5b506102b86104d2366004611d2b565b610b0e565b3480156104e357600080fd5b506015546104f7906001600160a01b031681565b6040516001600160a01b0390911681526020016102da565b34801561051b57600080fd5b506102b861052a366004611c98565b610b56565b34801561053b57600080fd5b506102b861054a366004611c66565b610bb0565b34801561055b57600080fd5b506102b8610bf5565b34801561057057600080fd5b5060155461033890600160b01b900460ff1681565b34801561059157600080fd5b506102d06105a0366004611d0e565b6001600160a01b03166000908152600e602052604090205490565b3480156105c757600080fd5b506102b8610c34565b3480156105dc57600080fd5b506102d060065481565b3480156105f257600080fd5b506102d060055481565b34801561060857600080fd5b506000546001600160a01b03166104f7565b34801561062657600080fd5b506102b8610cb0565b34801561063b57600080fd5b506003546104f7906001600160a01b031681565b34801561065b57600080fd5b506102b861066a366004611d46565b610d3c565b34801561067b57600080fd5b506014546104f7906001600160a01b031681565b34801561069b57600080fd5b506102d0600a5481565b3480156106b157600080fd5b506103386106c0366004611c3a565b610d87565b3480156106d157600080fd5b506102b86106e0366004611d0e565b610d94565b3480156106f157600080fd5b506102b8610700366004611b62565b610de5565b34801561071157600080fd5b506102b8610720366004611c66565b610e81565b34801561073157600080fd5b506102b8610740366004611d46565b610f72565b34801561075157600080fd5b506102d0610760366004611d5f565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b34801561079757600080fd5b506002546104f7906001600160a01b031681565b3480156107b757600080fd5b506102d0600b5481565b3480156107cd57600080fd5b506102b86107dc366004611d0e565b611001565b3480156107ed57600080fd5b506102b86107fc366004611d0e565b61104c565b34801561080d57600080fd5b506102b861081c366004611c98565b6110e2565b34801561082d57600080fd5b506102b8611137565b34801561084257600080fd5b50610338610851366004611d0e565b6001600160a01b031660009081526001602052604090205460ff1690565b6000546001600160a01b031633146108a25760405162461bcd60e51b815260040161089990611d98565b60405180910390fd5b60005b81811015610914576001601360008585858181106108c5576108c5611db8565b90506020020160208101906108da9190611d0e565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061090c81611de4565b9150506108a5565b505050565b6000610926338484611170565b5060015b92915050565b6000546001600160a01b0316331461095a5760405162461bcd60e51b815260040161089990611d98565b6008829055600981905560648110801561097657506064600854105b6109c25760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e20313025000000006044820152606401610899565b5050565b6000546001600160a01b031633146109f05760405162461bcd60e51b815260040161089990611d98565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001600160a01b0383166000908152600f6020908152604080832033845290915281205460001914610a9b576001600160a01b0384166000908152600f60209081526040808320338452909152902054610a76908390611dfd565b6001600160a01b0385166000908152600f602090815260408083203384529091529020555b610aa6848484611269565b90505b9392505050565b3360009081526001602052604090205460ff16610adf5760405162461bcd60e51b815260040161089990611e10565b6040514790339082156108fc029083906000818181858888f193505050501580156109c2573d6000803e3d6000fd5b6000546001600160a01b03163314610b385760405162461bcd60e51b815260040161089990611d98565b60158054911515600160b01b0260ff60b01b19909216919091179055565b3360009081526001602052604090205460ff16610b855760405162461bcd60e51b815260040161089990611e10565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610bda5760405162461bcd60e51b815260040161089990611d98565b600b829055600a819055610bee8282611e35565b600c555050565b6000546001600160a01b03163314610c1f5760405162461bcd60e51b815260040161089990611d98565b6015805460ff60a81b1916600160a81b179055565b6000546001600160a01b03163314610c5e5760405162461bcd60e51b815260040161089990611d98565b6000546040516001600160a01b0390911681527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1600080546001600160a01b0319169055565b6000546001600160a01b03163314610cda5760405162461bcd60e51b815260040161089990611d98565b601554600160a01b900460ff1615610d275760405162461bcd60e51b815260206004820152601060248201526f185b1c9958591e481b185d5b98da195960821b6044820152606401610899565b6015805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610d665760405162461bcd60e51b815260040161089990611d98565b61271081600454610d779190611e48565b610d819190611e67565b60075550565b6000610aa9338484611269565b6000546001600160a01b03163314610dbe5760405162461bcd60e51b815260040161089990611d98565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b03163314610e0f5760405162461bcd60e51b815260040161089990611d98565b60005b8181101561091457600160136000858585818110610e3257610e32611db8565b9050602002016020810190610e479190611d0e565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610e7981611de4565b915050610e12565b6000546001600160a01b03163314610eab5760405162461bcd60e51b815260040161089990611d98565b60058211610ef05760405162461bcd60e51b81526020600482015260126024820152714d61782077616c6c657420746f6f206c6f7760701b6044820152606401610899565b60018111610f315760405162461bcd60e51b815260206004820152600e60248201526d4d617820547820746f6f206c6f7760901b6044820152606401610899565b6103e882600454610f429190611e48565b610f4c9190611e67565b6006556004546103e890610f61908390611e48565b610f6b9190611e67565b6005555050565b3360009081526001602052604090205460ff16610fa15760405162461bcd60e51b815260040161089990611e10565b306000908152600e6020526040902054811115610ff55760405162461bcd60e51b81526020600482015260126024820152716e6f7420656e6f7567687420746f6b656e7360701b6044820152606401610899565b610ffe816115ab565b50565b6000546001600160a01b0316331461102b5760405162461bcd60e51b815260040161089990611d98565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146110765760405162461bcd60e51b815260040161089990611d98565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6000546001600160a01b0316331461110c5760405162461bcd60e51b815260040161089990611d98565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111615760405162461bcd60e51b815260040161089990611d98565b6015805460ff60a81b19169055565b6001600160a01b0383166111bc5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610899565b6001600160a01b0382166112085760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610899565b6001600160a01b038381166000818152600f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526013602052604081205460ff161580156112ab57506001600160a01b03831660009081526013602052604090205460ff16155b6112ed5760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610899565b601554600160b81b900460ff16156113115761130a8484846118cc565b9050610aa9565b6001600160a01b03841660009081526001602052604090205460ff1615801561135357506001600160a01b03831660009081526001602052604090205460ff16155b1561148157601554600160a01b900460ff166113a85760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610899565b601554600160a81b900460ff1615611481576001600160a01b03841660009081526001602052604090205460ff161580156113fc57506001600160a01b03831660009081526012602052604090205460ff16155b15611477576001600160a01b0383166000908152600e60205260409020546006546114278483611e35565b11156114755760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610899565b505b611481848361197d565b61148a846119e6565b1561149a5761149a6007546115ab565b6001600160a01b0384166000908152600e6020526040812080548492906114c2908490611dfd565b90915550506001600160a01b03841660009081526010602052604081205460ff1615158061150a57506001600160a01b03841660009081526010602052604090205460ff1615155b61151d576115188584611a82565b61151f565b825b6001600160a01b0385166000908152600e602052604081208054929350839290919061154c908490611e35565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161159891815260200190565b60405180910390a3506001949350505050565b6015805460ff60b81b1916600160b81b179055600c54600a546000916002916115d49085611e48565b6115de9190611e67565b6115e89190611e67565b905060006115f68284611dfd565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061163057611630611db8565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ad9190611e89565b816001815181106116c0576116c0611db8565b6001600160a01b03928316602091820292909201015260145460405163791ac94760e01b81524792919091169063791ac9479061170a908690600090879030904290600401611ea6565b600060405180830381600087803b15801561172457600080fd5b505af1158015611738573d6000803e3d6000fd5b505050506000814761174a9190611dfd565b905060006002600a5461175d9190611e67565b600c5461176a9190611dfd565b90506000600282600a548561177f9190611e48565b6117899190611e67565b6117939190611e67565b9050600082600b54856117a69190611e48565b6117b09190611e67565b6002546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d8060008114611807576040519150601f19603f3d011682016040523d82523d6000602084013e61180c565b606091505b506000925050891590506118b35760145460035460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c40160606040518083038185885af115801561188a573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118af9190611f17565b5050505b50506015805460ff60b81b191690555050505050505050565b6001600160a01b0383166000908152600e60205260408120805490826118f28380611dfd565b90915550506001600160a01b0383166000908152600e60205260408120805484929061191f908490611e35565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161196b91815260200190565b60405180910390a35060019392505050565b600554811115806119a657506001600160a01b03821660009081526011602052604090205460ff165b6109c25760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610899565b601554600090600160b81b900460ff16158015611a0c5750601554600160b01b900460ff165b8015611a3157506001600160a01b03821660009081526011602052604090205460ff16155b8015611a4b57506015546001600160a01b03838116911614155b8015611a685750600754306000908152600e602052604090205410155b15611a7557506001919050565b506000919050565b919050565b60155460009081906001600160a01b03858116911614611aa55750600954611acd565b6015546001600160a01b0390811690851603611ac45750600854611acd565b8291505061092a565b60006103e8611adc8386611e48565b611ae69190611e67565b306000908152600e6020526040812080549293508392909190611b0a908490611e35565b909155505060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3611b598185611dfd565b95945050505050565b60008060208385031215611b7557600080fd5b823567ffffffffffffffff80821115611b8d57600080fd5b818501915085601f830112611ba157600080fd5b813581811115611bb057600080fd5b8660208260051b8501011115611bc557600080fd5b60209290920196919550909350505050565b600060208083528351808285015260005b81811015611c0457858101830151858201604001528201611be8565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ffe57600080fd5b60008060408385031215611c4d57600080fd5b8235611c5881611c25565b946020939093013593505050565b60008060408385031215611c7957600080fd5b50508035926020909101359150565b80358015158114611a7d57600080fd5b60008060408385031215611cab57600080fd5b8235611cb681611c25565b9150611cc460208401611c88565b90509250929050565b600080600060608486031215611ce257600080fd5b8335611ced81611c25565b92506020840135611cfd81611c25565b929592945050506040919091013590565b600060208284031215611d2057600080fd5b8135610aa981611c25565b600060208284031215611d3d57600080fd5b610aa982611c88565b600060208284031215611d5857600080fd5b5035919050565b60008060408385031215611d7257600080fd5b8235611d7d81611c25565b91506020830135611d8d81611c25565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611df657611df6611dce565b5060010190565b8181038181111561092a5761092a611dce565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b8082018082111561092a5761092a611dce565b6000816000190483118215151615611e6257611e62611dce565b500290565b600082611e8457634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611e9b57600080fd5b8151610aa981611c25565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ef65784516001600160a01b031683529383019391830191600101611ed1565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611f2c57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d78c3639af85618af46c38ed18795f2ff7e4c0359a744deb966aab0a5cdc910064736f6c63430008100033

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.