ETH Price: $3,119.92 (-1.07%)
Gas: 10 Gwei

Token

Purple Butterfly Token (PBTT) (PBTT)
 

Overview

Max Total Supply

1,000,000,000 PBTT

Holders

14,142

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 3 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:
PBTTToken

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-08-10
*/

/* solium-disable-next-line linebreak-style */
pragma solidity ^0.4.24;

// Implements a simple ownership model with 2-phase transfer.
contract Owned {

    address public owner;
    address public proposedOwner;

    constructor() public
    {
        owner = msg.sender;
    }


    modifier onlyOwner() {
        require(isOwner(msg.sender) == true, 'Require owner to execute transaction');
        _;
    }


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


    function initiateOwnershipTransfer(address _proposedOwner) public onlyOwner returns (bool success) {
        require(_proposedOwner != address(0), 'Require proposedOwner != address(0)');
        require(_proposedOwner != address(this), 'Require proposedOwner != address(this)');
        require(_proposedOwner != owner, 'Require proposedOwner != owner');

        proposedOwner = _proposedOwner;
        return true;
    }


    function completeOwnershipTransfer() public returns (bool success) {
        require(msg.sender == proposedOwner, 'Require msg.sender == proposedOwner');

        owner = msg.sender;
        proposedOwner = address(0);

        return true;
    }
}

// ----------------------------------------------------------------------------
// OpsManaged - Implements an Owner and Ops Permission Model
// ----------------------------------------------------------------------------
contract OpsManaged is Owned {

    address public opsAddress;


    constructor() public
        Owned()
    {
    }


    modifier onlyOwnerOrOps() {
        require(isOwnerOrOps(msg.sender), 'Require only owner or ops');
        _;
    }


    function isOps(address _address) public view returns (bool) {
        return (opsAddress != address(0) && _address == opsAddress);
    }


    function isOwnerOrOps(address _address) public view returns (bool) {
        return (isOwner(_address) || isOps(_address));
    }


    function setOpsAddress(address _newOpsAddress) public onlyOwner returns (bool success) {
        require(_newOpsAddress != owner, 'Require newOpsAddress != owner');
        require(_newOpsAddress != address(this), 'Require newOpsAddress != address(this)');

        opsAddress = _newOpsAddress;

        return true;
    }
}

// ----------------------------------------------------------------------------
// Finalizable - Implement Finalizable (Crowdsale) model
// ----------------------------------------------------------------------------
contract Finalizable is OpsManaged {

    FinalizableState public finalized;
    
    enum FinalizableState { 
        None,
        Finalized
    }

    event Finalized();


    constructor() public OpsManaged()
    {
        finalized = FinalizableState.None;
    }


    function finalize() public onlyOwner returns (bool success) {
        require(finalized == FinalizableState.None, 'Require !finalized');

        finalized = FinalizableState.Finalized;

        emit Finalized();

        return true;
    }
}

// ----------------------------------------------------------------------------
// Math - Implement Math Library
// ----------------------------------------------------------------------------
library Math {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 r = a + b;

        require(r >= a, 'Require r >= a');

        return r;
    }


    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(a >= b, 'Require a >= b');

        return a - b;
    }


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

        uint256 r = a * b;

        require(r / a == b, 'Require r / a == b');

        return r;
    }


    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
}

// ----------------------------------------------------------------------------
// ERC20Interface - Standard ERC20 Interface Definition
// Based on the final ERC20 specification at:
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
// ----------------------------------------------------------------------------
contract ERC20Interface {

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

    function balanceOf(address _owner) public view returns (uint256 balance);
    function allowance(address _owner, address _spender) public view returns (uint256 remaining);

    function transfer(address _to, uint256 _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
    function approve(address _spender, uint256 _value) public returns (bool success);
}

// ----------------------------------------------------------------------------
// ERC20Token - Standard ERC20 Implementation
// ----------------------------------------------------------------------------
contract ERC20Token is ERC20Interface {

    using Math for uint256;

    string public  name;
    string public symbol;
    uint8 public decimals;
    uint256 public totalSupply;

    mapping(address => uint256) internal balances;
    mapping(address => mapping (address => uint256)) allowed;


    constructor(string _name, string _symbol, uint8 _decimals, uint256 _totalSupply, address _initialTokenHolder) public {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        totalSupply = _totalSupply;

        // The initial balance of tokens is assigned to the given token holder address.
        balances[_initialTokenHolder] = _totalSupply;
        allowed[_initialTokenHolder][_initialTokenHolder] = balances[_initialTokenHolder];

        // Per EIP20, the constructor should fire a Transfer event if tokens are assigned to an account.
        emit Transfer(0x0, _initialTokenHolder, _totalSupply);
    }


    function balanceOf(address _owner) public view returns (uint256 balance) {
        return balances[_owner];
    }


    function allowance(address _owner, address _spender) public view returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }


    function transfer(address _to, uint256 _value) public returns (bool success) { 
        if (balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
            balances[msg.sender] = balances[msg.sender].sub(_value);
            balances[_to] = balances[_to].add(_value);

            emit Transfer(msg.sender, _to, _value);

            return true;
        } else { 
            return false;
        }
    }


    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
            balances[_from] = balances[_from].sub(_value);
            allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
            balances[_to] = balances[_to].add(_value);

            emit Transfer(_from, _to, _value);

            return true;
        } else { 
            return false;
        }
    }


    function approve(address _spender, uint256 _value) public returns (bool success) {
        allowed[msg.sender][_spender] = _value;

        emit Approval(msg.sender, _spender, _value);

        return true;
    }
}

// ----------------------------------------------------------------------------
// FinalizableToken - Extension to ERC20Token with ops and finalization
// ----------------------------------------------------------------------------

//
// ERC20 token with the following additions:
//    1. Owner/Ops Ownership
//    2. Finalization
//
contract FinalizableToken is ERC20Token, OpsManaged, Finalizable {

    using Math for uint256;


    // The constructor will assign the initial token supply to the owner (msg.sender).
    constructor(string _name, string _symbol, uint8 _decimals, uint256 _totalSupply) public
        ERC20Token(_name, _symbol, _decimals, _totalSupply, msg.sender)
        Finalizable()
    {
    }


    function transfer(address _to, uint256 _value) public returns (bool success) {
        validateTransfer(msg.sender, _to);

        return super.transfer(_to, _value);
    }


    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        validateTransfer(msg.sender, _to);

        return super.transferFrom(_from, _to, _value);
    }


    function validateTransfer(address _sender, address _to) internal view {
        // Once the token is finalized, everybody can transfer tokens.
        if (finalized == FinalizableState.Finalized) {
            return;
        }
        

        if (isOwner(_to)) {
            return;
        }

        // Before the token is finalized, only owner and ops are allowed to initiate transfers.
        // This allows them to move tokens while the sale is still in private sale.
        require(isOwnerOrOps(_sender), 'Require is owner or ops allowed to initiate transfer');
    }
}



// ----------------------------------------------------------------------------
// PBTT Token Contract Configuration
// ----------------------------------------------------------------------------
contract PBTTTokenConfig {

    string  internal constant TOKEN_SYMBOL      = 'PBTT';
    string  internal constant TOKEN_NAME        = 'Purple Butterfly Token (PBTT)';
    uint8   internal constant TOKEN_DECIMALS    = 3;

    uint256 internal constant DECIMALSFACTOR    = 10**uint256(TOKEN_DECIMALS);
    uint256 internal constant TOKEN_TOTALSUPPLY = 1000000000 * DECIMALSFACTOR;
}


// ----------------------------------------------------------------------------
// PBTT Token Contract
// ----------------------------------------------------------------------------
contract PBTTToken is FinalizableToken, PBTTTokenConfig {
      
    uint256 public buyPriceEth = 0.0002 ether;                              // Buy price for PBTT
    uint256 public sellPriceEth = 0.0001 ether;                             // Sell price for PBTT
    uint256 public gasForPBTT = 0.005 ether;                                // Eth from contract against PBTT to pay tx (10 times sellPriceEth)
    uint256 public PBTTForGas = 1;                                          // PBTT to contract against eth to pay tx
    uint256 public gasReserve = 1 ether;                                    // Eth amount that remains in the contract for gas and can't be sold

    // Minimal eth balance of sender and recipient, ensure that no account receiving
    // the token has less than the necessary Ether to pay the fees
    uint256 public minBalanceForAccounts = 0.005 ether;                     
    uint256 public totalTokenSold = 0;
    
    enum HaltState { 
        Unhalted,
        Halted        
    }

    HaltState public halts;

    constructor() public
        FinalizableToken(TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS, TOKEN_TOTALSUPPLY)
    {
        halts = HaltState.Unhalted;
        finalized = FinalizableState.None;
    }

    function transfer(address _to, uint256 _value) public returns (bool success) {
        require(halts == HaltState.Unhalted, 'Require smart contract is not in halted state');

        // Prevents drain and spam
        require(_value >= PBTTForGas, 'Token amount is not enough to transfer'); 
         
        if (!isOwnerOrOps(msg.sender) && _to == address(this)) {
            // Trade PBTT against eth by sending to the token contract
            sellPBTTAgainstEther(_value);                             
            return true;
        } else {
            if(isOwnerOrOps(msg.sender)) {
                return super.transferFrom(owner, _to, _value);
            }
            return super.transfer(_to, _value);
        }
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        require(halts == HaltState.Unhalted, 'Require smart contract is not in halted state');
        return super.transferFrom(_from, _to, _value);
    }
    
    //Change PPBT Selling and Buy Price
    function setEtherPrices(uint256 newBuyPriceEth, uint256 newSellPriceEth) public onlyOwnerOrOps {
        // Set prices to buy and sell PBTT
        buyPriceEth = newBuyPriceEth;                                       
        sellPriceEth = newSellPriceEth;
    }

    function setGasForPBTT(uint256 newGasAmountInWei) public onlyOwnerOrOps {
        gasForPBTT = newGasAmountInWei;
    }

    //set PBTT to contract against eth to pay tx
    function setPBTTForGas(uint256 newPBTTAmount) public onlyOwnerOrOps {
        PBTTForGas = newPBTTAmount;
    }

    function setGasReserve(uint256 newGasReserveInWei) public onlyOwnerOrOps {
        gasReserve = newGasReserveInWei;
    }

    function setMinBalance(uint256 minimumBalanceInWei) public onlyOwnerOrOps {
        minBalanceForAccounts = minimumBalanceInWei;
    }

    function getTokenRemaining() public view returns (uint256 total){
        return (TOKEN_TOTALSUPPLY.div(DECIMALSFACTOR)).sub(totalTokenSold);
    }

    /* User buys PBTT and pays in Ether */
    function buyPBTTAgainstEther() private returns (uint256 tokenAmount) {
        // Avoid dividing 0, sending small amounts and spam
        require(buyPriceEth > 0, 'buyPriceEth must be > 0');
        require(msg.value >= buyPriceEth, 'Transfer money must be enough for 1 token');
        
        // Calculate the amount of PBTT
        tokenAmount = (msg.value.mul(DECIMALSFACTOR)).div(buyPriceEth);                
        
        // Check if it has enough to sell
        require(balances[owner] >= tokenAmount, 'Not enough token balance');
        
        // Add the amount to buyer's balance
        balances[msg.sender] = balances[msg.sender].add(tokenAmount);            

        // Subtract amount from PBTT balance
        balances[owner] = balances[owner].sub(tokenAmount);

        // Execute an event reflecting the change
        emit Transfer(owner, msg.sender, tokenAmount);                           
        
        totalTokenSold = totalTokenSold + tokenAmount;
		
        return tokenAmount;
    }

    function sellPBTTAgainstEther(uint256 amount) private returns (uint256 revenue) {
        // Avoid selling and spam
        require(sellPriceEth > 0, 'sellPriceEth must be > 0');
        
        require(amount >= PBTTForGas, 'Sell token amount must be larger than PBTTForGas value');

        // Check if the sender has enough to sell
        require(balances[msg.sender] >= amount, 'Token balance is not enough to sold');
        
        require(msg.sender.balance >= minBalanceForAccounts, 'Seller balance must be enough to pay the transaction fee');
        
        // Revenue = eth that will be send to the user
        revenue = (amount.div(DECIMALSFACTOR)).mul(sellPriceEth);                                 

        // Keep min amount of eth in contract to provide gas for transactions
        uint256 remaining = address(this).balance.sub(revenue);
        require(remaining >= gasReserve, 'Remaining contract balance is not enough for reserved');

        // Add the token amount to owner balance
        balances[owner] = balances[owner].add(amount);         
        // Subtract the amount from seller's token balance
        balances[msg.sender] = balances[msg.sender].sub(amount);            

        // transfer eth
        // 'msg.sender.transfer' means the contract sends ether to 'msg.sender'
        // It's important to do this last to avoid recursion attacks
        msg.sender.transfer(revenue);
 
        // Execute an event reflecting on the change
        emit Transfer(msg.sender, owner, amount);                            
        return revenue;   
    }

    // Allows a token holder to burn tokens. Once burned, tokens are permanently
    // removed from the total supply.
    function burn(uint256 _amount) public returns (bool success) {
        require(_amount > 0, 'Token amount to burn must be larger than 0');

        address account = msg.sender;
        require(_amount <= balanceOf(account), 'You cannot burn token you dont have');

        balances[account] = balances[account].sub(_amount);
        totalSupply = totalSupply.sub(_amount);
        return true;
    }

    // Allows the owner to reclaim tokens that are assigned to the token contract itself.
    function reclaimTokens() public onlyOwner returns (bool success) {

        address account = address(this);
        uint256 amount = balanceOf(account);

        if (amount == 0) {
            return false;
        }

        balances[account] = balances[account].sub(amount);
        balances[owner] = balances[owner].add(amount);

        return true;
    }

    // Allows the owner to withdraw that are assigned to the token contract itself.
    function withdrawFundToOwner() public onlyOwner {
        // transfer to owner
        uint256 eth = address(this).balance; 
        owner.transfer(eth);
    }

    // Allows the owner to withdraw all fund from contract to owner's specific adress
    function withdrawFundToAddress(address _ownerOtherAdress) public onlyOwner {
        // transfer to owner
        uint256 eth = address(this).balance; 
        _ownerOtherAdress.transfer(eth);
    }

    /* Halts or unhalts direct trades without the sell/buy functions below */
    function haltsTrades() public onlyOwnerOrOps returns (bool success) {
        halts = HaltState.Halted;
        return true;
    }

    function unhaltsTrades() public onlyOwnerOrOps returns (bool success) {
        halts = HaltState.Unhalted;
        return true;
    }

    function() public payable { 
        if(msg.sender != owner) {
            require(finalized == FinalizableState.Finalized, 'Require smart contract is finalized');
            require(halts == HaltState.Unhalted, 'Require smart contract is not halted');
            
            buyPBTTAgainstEther(); 
        }
    } 

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"sellPriceEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newPBTTAmount","type":"uint256"}],"name":"setPBTTForGas","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newGasAmountInWei","type":"uint256"}],"name":"setGasForPBTT","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"PBTTForGas","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newGasReserveInWei","type":"uint256"}],"name":"setGasReserve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unhaltsTrades","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gasForPBTT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawFundToOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reclaimTokens","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minBalanceForAccounts","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newBuyPriceEth","type":"uint256"},{"name":"newSellPriceEth","type":"uint256"}],"name":"setEtherPrices","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPriceEth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOpsAddress","type":"address"}],"name":"setOpsAddress","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"opsAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"halts","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isOwnerOrOps","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"finalized","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalTokenSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_proposedOwner","type":"address"}],"name":"initiateOwnershipTransfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"haltsTrades","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_ownerOtherAdress","type":"address"}],"name":"withdrawFundToAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minimumBalanceInWei","type":"uint256"}],"name":"setMinBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"proposedOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTokenRemaining","outputs":[{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"completeOwnershipTransfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gasReserve","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isOps","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]

608060405265b5e620f48000600955655af3107a4000600a556611c37937e08000600b556001600c55670de0b6b3a7640000600d556611c37937e08000600e556000600f553480156200005157600080fd5b50604080518082018252601d81527f507572706c6520427574746572666c7920546f6b656e2028504254542900000060208083019182528351808501909452600484527f504254540000000000000000000000000000000000000000000000000000000090840152815191929160039164e8d4a510009185918591859185913391620000e19160009190620001a7565b508351620000f7906001906020870190620001a7565b506002805460ff191660ff85161790556003829055600160a060020a0381166000818152600460209081526040808320869055600582528083208252808320869055805186815290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3505060068054600160a060020a0319163317905550506008805460a060020a60ff021916905550506010805460ff19169055506200024c915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001ea57805160ff19168380011785556200021a565b828001600101855582156200021a579182015b828111156200021a578251825591602001919060010190620001fd565b50620002289291506200022c565b5090565b6200024991905b8082111562000228576000815560010162000233565b90565b61231d806200025c6000396000f3006080604052600436106101ed5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663015129a1811461032d57806302259b07146103545780630615f7c31461036c57806306a865391461038457806306fdde0314610399578063095ea7b3146104235780630d5260e71461045b5780631609a3971461047357806318160ddd1461048857806323b872dd1461049d57806328effe67146104c75780632f54bf6e146104dc578063313ce567146104fd57806339909f0b146105285780633c54caa51461053d57806342966c681461055257806347f1d8d71461056a5780634b6a33341461057f5780634bb278f31461059a5780635639bb3c146105af578063707789c5146105c457806370a08231146105e55780638da5cb5b146106065780638ea643761461063757806395d89b411461064c578063a5a899ec14610661578063a9059cbb1461069a578063adcf59ee146106be578063b3f05b97146106df578063b5f7f636146106f4578063c0b6f56114610709578063c27753471461072a578063c729a5671461073f578063c91d956c14610760578063d153b60c14610778578063d17866101461078d578063dd62ed3e146107a2578063e71a7811146107c9578063eea7570e146107de578063ef326c6d146107f3575b600654600160a060020a0316331461032b57600160085460a060020a900460ff16600181111561021957fe5b14610294576040805160e560020a62461bcd02815260206004820152602360248201527f5265717569726520736d61727420636f6e74726163742069732066696e616c6960448201527f7a65640000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600060105460ff1660018111156102a757fe5b14610321576040805160e560020a62461bcd028152602060048201526024808201527f5265717569726520736d61727420636f6e7472616374206973206e6f7420686160448201527f6c74656400000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610329610814565b505b005b34801561033957600080fd5b50610342610a38565b60408051918252519081900360200190f35b34801561036057600080fd5b5061032b600435610a3e565b34801561037857600080fd5b5061032b600435610a90565b34801561039057600080fd5b50610342610ae2565b3480156103a557600080fd5b506103ae610ae8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e85781810151838201526020016103d0565b50505050905090810190601f1680156104155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042f57600080fd5b50610447600160a060020a0360043516602435610b76565b604080519115158252519081900360200190f35b34801561046757600080fd5b5061032b600435610bdd565b34801561047f57600080fd5b50610447610c2f565b34801561049457600080fd5b50610342610c9a565b3480156104a957600080fd5b50610447600160a060020a0360043581169060243516604435610ca0565b3480156104d357600080fd5b50610342610d44565b3480156104e857600080fd5b50610447600160a060020a0360043516610d4a565b34801561050957600080fd5b50610512610d5e565b6040805160ff9092168252519081900360200190f35b34801561053457600080fd5b5061032b610d67565b34801561054957600080fd5b50610447610e08565b34801561055e57600080fd5b50610447600435610f10565b34801561057657600080fd5b50610342611079565b34801561058b57600080fd5b5061032b60043560243561107f565b3480156105a657600080fd5b506104476110d7565b3480156105bb57600080fd5b506103426111fa565b3480156105d057600080fd5b50610447600160a060020a0360043516611200565b3480156105f157600080fd5b50610342600160a060020a0360043516611380565b34801561061257600080fd5b5061061b61139b565b60408051600160a060020a039092168252519081900360200190f35b34801561064357600080fd5b5061061b6113aa565b34801561065857600080fd5b506103ae6113b9565b34801561066d57600080fd5b50610676611413565b6040518082600181111561068657fe5b60ff16815260200191505060405180910390f35b3480156106a657600080fd5b50610447600160a060020a036004351660243561141c565b3480156106ca57600080fd5b50610447600160a060020a0360043516611597565b3480156106eb57600080fd5b506106766115b1565b34801561070057600080fd5b506103426115c1565b34801561071557600080fd5b50610447600160a060020a03600435166115c7565b34801561073657600080fd5b506104476117cd565b34801561074b57600080fd5b5061032b600160a060020a036004351661182f565b34801561076c57600080fd5b5061032b6004356118cf565b34801561078457600080fd5b5061061b611921565b34801561079957600080fd5b50610342611930565b3480156107ae57600080fd5b50610342600160a060020a0360043581169060243516611962565b3480156107d557600080fd5b5061044761198d565b3480156107ea57600080fd5b50610342611a49565b3480156107ff57600080fd5b50610447600160a060020a0360043516611a4f565b600080600954111515610871576040805160e560020a62461bcd02815260206004820152601760248201527f6275795072696365457468206d757374206265203e2030000000000000000000604482015290519081900360640190fd5b6009543410156108f1576040805160e560020a62461bcd02815260206004820152602960248201527f5472616e73666572206d6f6e6579206d75737420626520656e6f75676820666f60448201527f72203120746f6b656e0000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6009546109169061090a346103e863ffffffff611a7c16565b9063ffffffff611b0016565b600654600160a060020a031660009081526004602052604090205490915081111561098b576040805160e560020a62461bcd02815260206004820152601860248201527f4e6f7420656e6f75676820746f6b656e2062616c616e63650000000000000000604482015290519081900360640190fd5b336000908152600460205260409020546109ab908263ffffffff611b1516565b3360009081526004602052604080822092909255600654600160a060020a0316815220546109df908263ffffffff611b7216565b60068054600160a060020a0390811660009081526004602090815260409182902094909455915482518581529251339491909216926000805160206122d2833981519152929081900390910190a3600f80548201905590565b600a5481565b610a4733611597565b1515610a8b576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600c55565b610a9933611597565b1515610add576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600b55565b600c5481565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b6e5780601f10610b4357610100808354040283529160200191610b6e565b820191906000526020600020905b815481529060010190602001808311610b5157829003601f168201915b505050505081565b336000818152600560209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b610be633611597565b1515610c2a576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600d55565b6000610c3a33611597565b1515610c7e576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b601080546000919060ff19166001835b02179055506001905090565b60035481565b60008060105460ff166001811115610cb457fe5b14610d2f576040805160e560020a62461bcd02815260206004820152602d60248201527f5265717569726520736d61727420636f6e7472616374206973206e6f7420696e60448201527f2068616c74656420737461746500000000000000000000000000000000000000606482015290519081900360840190fd5b610d3a848484611bd2565b90505b9392505050565b600b5481565b600654600160a060020a0390811691161490565b60025460ff1681565b6000610d7233610d4a565b1515600114610dc8576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b50600654604051303191600160a060020a03169082156108fc029083906000818181858888f19350505050158015610e04573d6000803e3d6000fd5b5050565b6000806000610e1633610d4a565b1515600114610e6c576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b309150610e7882611380565b9050801515610e8a5760009250610f0b565b600160a060020a038216600090815260046020526040902054610eb3908263ffffffff611b7216565b600160a060020a038084166000908152600460205260408082209390935560065490911681522054610eeb908263ffffffff611b1516565b600654600160a060020a0316600090815260046020526040902055600192505b505090565b600080808311610f90576040805160e560020a62461bcd02815260206004820152602a60248201527f546f6b656e20616d6f756e7420746f206275726e206d757374206265206c617260448201527f676572207468616e203000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5033610f9b81611380565b831115611018576040805160e560020a62461bcd02815260206004820152602360248201527f596f752063616e6e6f74206275726e20746f6b656e20796f7520646f6e74206860448201527f6176650000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038116600090815260046020526040902054611041908463ffffffff611b7216565b600160a060020a03821660009081526004602052604090205560035461106d908463ffffffff611b7216565b60035550600192915050565b600e5481565b61108833611597565b15156110cc576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600991909155600a55565b60006110e233610d4a565b1515600114611138576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b600060085460a060020a900460ff16600181111561115257fe5b146111a7576040805160e560020a62461bcd02815260206004820152601260248201527f52657175697265202166696e616c697a65640000000000000000000000000000604482015290519081900360640190fd5b6008805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a150600190565b60095481565b600061120b33610d4a565b1515600114611261576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b600654600160a060020a03838116911614156112c7576040805160e560020a62461bcd02815260206004820152601e60248201527f52657175697265206e65774f70734164647265737320213d206f776e65720000604482015290519081900360640190fd5b600160a060020a03821630141561134e576040805160e560020a62461bcd02815260206004820152602660248201527f52657175697265206e65774f70734164647265737320213d206164647265737360448201527f2874686973290000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5060088054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600160a060020a031660009081526004602052604090205490565b600654600160a060020a031681565b600854600160a060020a031681565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b6e5780601f10610b4357610100808354040283529160200191610b6e565b60105460ff1681565b60008060105460ff16600181111561143057fe5b146114ab576040805160e560020a62461bcd02815260206004820152602d60248201527f5265717569726520736d61727420636f6e7472616374206973206e6f7420696e60448201527f2068616c74656420737461746500000000000000000000000000000000000000606482015290519081900360840190fd5b600c5482101561152b576040805160e560020a62461bcd02815260206004820152602660248201527f546f6b656e20616d6f756e74206973206e6f7420656e6f75676820746f20747260448201527f616e736665720000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61153433611597565b1580156115495750600160a060020a03831630145b156115615761155782611be9565b5060019050610bd7565b61156a33611597565b1561158d5760065461158690600160a060020a03168484611bd2565b9050610bd7565b6115868383611f68565b60006115a282610d4a565b80610bd75750610bd782611a4f565b60085460a060020a900460ff1681565b600f5481565b60006115d233610d4a565b1515600114611628576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b600160a060020a03821615156116ae576040805160e560020a62461bcd02815260206004820152602360248201527f526571756972652070726f706f7365644f776e657220213d206164647265737360448201527f2830290000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038216301415611735576040805160e560020a62461bcd02815260206004820152602660248201527f526571756972652070726f706f7365644f776e657220213d206164647265737360448201527f2874686973290000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600654600160a060020a038381169116141561179b576040805160e560020a62461bcd02815260206004820152601e60248201527f526571756972652070726f706f7365644f776e657220213d206f776e65720000604482015290519081900360640190fd5b5060078054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60006117d833611597565b151561181c576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b601080546001919060ff19168280610c8e565b600061183a33610d4a565b1515600114611890576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b50604051303190600160a060020a0383169082156108fc029083906000818181858888f193505050501580156118ca573d6000803e3d6000fd5b505050565b6118d833611597565b151561191c576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600e55565b600754600160a060020a031681565b600f5460009061195d9061195164e8d4a510006103e863ffffffff611b0016565b9063ffffffff611b7216565b905090565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b600754600090600160a060020a03163314611a18576040805160e560020a62461bcd02815260206004820152602360248201527f52657175697265206d73672e73656e646572203d3d2070726f706f7365644f7760448201527f6e65720000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b506006805473ffffffffffffffffffffffffffffffffffffffff199081163317909155600780549091169055600190565b600d5481565b600854600090600160a060020a031615801590610bd7575050600854600160a060020a0390811691161490565b600080831515611a8f5760009150611af9565b50828202828482811515611a9f57fe5b0414611af5576040805160e560020a62461bcd02815260206004820152601260248201527f526571756972652072202f2061203d3d20620000000000000000000000000000604482015290519081900360640190fd5b8091505b5092915050565b60008183811515611b0d57fe5b049392505050565b600082820183811015611af5576040805160e560020a62461bcd02815260206004820152600e60248201527f526571756972652072203e3d2061000000000000000000000000000000000000604482015290519081900360640190fd5b600081831015611bcc576040805160e560020a62461bcd02815260206004820152600e60248201527f526571756972652061203e3d2062000000000000000000000000000000000000604482015290519081900360640190fd5b50900390565b6000611bde3384611f7e565b610d3a84848461203b565b6000806000600a54111515611c48576040805160e560020a62461bcd02815260206004820152601860248201527f73656c6c5072696365457468206d757374206265203e20300000000000000000604482015290519081900360640190fd5b600c54831015611cc8576040805160e560020a62461bcd02815260206004820152603660248201527f53656c6c20746f6b656e20616d6f756e74206d757374206265206c617267657260448201527f207468616e2050425454466f724761732076616c756500000000000000000000606482015290519081900360840190fd5b33600090815260046020526040902054831115611d55576040805160e560020a62461bcd02815260206004820152602360248201527f546f6b656e2062616c616e6365206973206e6f7420656e6f75676820746f207360448201527f6f6c640000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600e5433311015611dd6576040805160e560020a62461bcd02815260206004820152603860248201527f53656c6c65722062616c616e6365206d75737420626520656e6f75676820746f60448201527f2070617920746865207472616e73616374696f6e206665650000000000000000606482015290519081900360840190fd5b600a54611dfb90611def856103e863ffffffff611b0016565b9063ffffffff611a7c16565b9150611e0e30318363ffffffff611b7216565b600d54909150811015611e91576040805160e560020a62461bcd02815260206004820152603560248201527f52656d61696e696e6720636f6e74726163742062616c616e6365206973206e6f60448201527f7420656e6f75676820666f722072657365727665640000000000000000000000606482015290519081900360840190fd5b600654600160a060020a0316600090815260046020526040902054611ebc908463ffffffff611b1516565b600654600160a060020a0316600090815260046020526040808220929092553381522054611ef0908463ffffffff611b7216565b33600081815260046020526040808220939093559151909184156108fc02918591818181858888f19350505050158015611f2e573d6000803e3d6000fd5b50600654604080518581529051600160a060020a039092169133916000805160206122d2833981519152919081900360200190a350919050565b6000611f743384611f7e565b610d3d83836121af565b600160085460a060020a900460ff166001811115611f9857fe5b1415611fa357610e04565b611fac81610d4a565b15611fb657610e04565b611fbf82611597565b1515610e04576040805160e560020a62461bcd02815260206004820152603460248201527f52657175697265206973206f776e6572206f72206f707320616c6c6f7765642060448201527f746f20696e697469617465207472616e73666572000000000000000000000000606482015290519081900360840190fd5b600160a060020a03831660009081526004602052604081205482118015906120865750600160a060020a03841660009081526005602090815260408083203384529091529020548211155b80156120ab5750600160a060020a038316600090815260046020526040902054828101115b156121a757600160a060020a0384166000908152600460205260409020546120d9908363ffffffff611b7216565b600160a060020a0385166000908152600460209081526040808320939093556005815282822033835290522054612116908363ffffffff611b7216565b600160a060020a03808616600090815260056020908152604080832033845282528083209490945591861681526004909152205461215a908363ffffffff611b1516565b600160a060020a0380851660008181526004602090815260409182902094909455805186815290519193928816926000805160206122d283398151915292918290030190a3506001610d3d565b506000610d3d565b3360009081526004602052604081205482118015906121e75750600160a060020a038316600090815260046020526040902054828101115b15612289573360009081526004602052604090205461220c908363ffffffff611b7216565b3360009081526004602052604080822092909255600160a060020a0385168152205461223e908363ffffffff611b1516565b600160a060020a0384166000818152600460209081526040918290209390935580518581529051919233926000805160206122d28339815191529281900390910190a3506001610bd7565b506000610bd7560052657175697265206f776e657220746f2065786563757465207472616e73616352657175697265206f6e6c79206f776e6572206f72206f707300000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820b2d27dd2545f7b783fc57e7762d2f1c51aaff50fb53eab124809c932a0bf0b430029

Deployed Bytecode

0x6080604052600436106101ed5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663015129a1811461032d57806302259b07146103545780630615f7c31461036c57806306a865391461038457806306fdde0314610399578063095ea7b3146104235780630d5260e71461045b5780631609a3971461047357806318160ddd1461048857806323b872dd1461049d57806328effe67146104c75780632f54bf6e146104dc578063313ce567146104fd57806339909f0b146105285780633c54caa51461053d57806342966c681461055257806347f1d8d71461056a5780634b6a33341461057f5780634bb278f31461059a5780635639bb3c146105af578063707789c5146105c457806370a08231146105e55780638da5cb5b146106065780638ea643761461063757806395d89b411461064c578063a5a899ec14610661578063a9059cbb1461069a578063adcf59ee146106be578063b3f05b97146106df578063b5f7f636146106f4578063c0b6f56114610709578063c27753471461072a578063c729a5671461073f578063c91d956c14610760578063d153b60c14610778578063d17866101461078d578063dd62ed3e146107a2578063e71a7811146107c9578063eea7570e146107de578063ef326c6d146107f3575b600654600160a060020a0316331461032b57600160085460a060020a900460ff16600181111561021957fe5b14610294576040805160e560020a62461bcd02815260206004820152602360248201527f5265717569726520736d61727420636f6e74726163742069732066696e616c6960448201527f7a65640000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600060105460ff1660018111156102a757fe5b14610321576040805160e560020a62461bcd028152602060048201526024808201527f5265717569726520736d61727420636f6e7472616374206973206e6f7420686160448201527f6c74656400000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610329610814565b505b005b34801561033957600080fd5b50610342610a38565b60408051918252519081900360200190f35b34801561036057600080fd5b5061032b600435610a3e565b34801561037857600080fd5b5061032b600435610a90565b34801561039057600080fd5b50610342610ae2565b3480156103a557600080fd5b506103ae610ae8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103e85781810151838201526020016103d0565b50505050905090810190601f1680156104155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042f57600080fd5b50610447600160a060020a0360043516602435610b76565b604080519115158252519081900360200190f35b34801561046757600080fd5b5061032b600435610bdd565b34801561047f57600080fd5b50610447610c2f565b34801561049457600080fd5b50610342610c9a565b3480156104a957600080fd5b50610447600160a060020a0360043581169060243516604435610ca0565b3480156104d357600080fd5b50610342610d44565b3480156104e857600080fd5b50610447600160a060020a0360043516610d4a565b34801561050957600080fd5b50610512610d5e565b6040805160ff9092168252519081900360200190f35b34801561053457600080fd5b5061032b610d67565b34801561054957600080fd5b50610447610e08565b34801561055e57600080fd5b50610447600435610f10565b34801561057657600080fd5b50610342611079565b34801561058b57600080fd5b5061032b60043560243561107f565b3480156105a657600080fd5b506104476110d7565b3480156105bb57600080fd5b506103426111fa565b3480156105d057600080fd5b50610447600160a060020a0360043516611200565b3480156105f157600080fd5b50610342600160a060020a0360043516611380565b34801561061257600080fd5b5061061b61139b565b60408051600160a060020a039092168252519081900360200190f35b34801561064357600080fd5b5061061b6113aa565b34801561065857600080fd5b506103ae6113b9565b34801561066d57600080fd5b50610676611413565b6040518082600181111561068657fe5b60ff16815260200191505060405180910390f35b3480156106a657600080fd5b50610447600160a060020a036004351660243561141c565b3480156106ca57600080fd5b50610447600160a060020a0360043516611597565b3480156106eb57600080fd5b506106766115b1565b34801561070057600080fd5b506103426115c1565b34801561071557600080fd5b50610447600160a060020a03600435166115c7565b34801561073657600080fd5b506104476117cd565b34801561074b57600080fd5b5061032b600160a060020a036004351661182f565b34801561076c57600080fd5b5061032b6004356118cf565b34801561078457600080fd5b5061061b611921565b34801561079957600080fd5b50610342611930565b3480156107ae57600080fd5b50610342600160a060020a0360043581169060243516611962565b3480156107d557600080fd5b5061044761198d565b3480156107ea57600080fd5b50610342611a49565b3480156107ff57600080fd5b50610447600160a060020a0360043516611a4f565b600080600954111515610871576040805160e560020a62461bcd02815260206004820152601760248201527f6275795072696365457468206d757374206265203e2030000000000000000000604482015290519081900360640190fd5b6009543410156108f1576040805160e560020a62461bcd02815260206004820152602960248201527f5472616e73666572206d6f6e6579206d75737420626520656e6f75676820666f60448201527f72203120746f6b656e0000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6009546109169061090a346103e863ffffffff611a7c16565b9063ffffffff611b0016565b600654600160a060020a031660009081526004602052604090205490915081111561098b576040805160e560020a62461bcd02815260206004820152601860248201527f4e6f7420656e6f75676820746f6b656e2062616c616e63650000000000000000604482015290519081900360640190fd5b336000908152600460205260409020546109ab908263ffffffff611b1516565b3360009081526004602052604080822092909255600654600160a060020a0316815220546109df908263ffffffff611b7216565b60068054600160a060020a0390811660009081526004602090815260409182902094909455915482518581529251339491909216926000805160206122d2833981519152929081900390910190a3600f80548201905590565b600a5481565b610a4733611597565b1515610a8b576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600c55565b610a9933611597565b1515610add576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600b55565b600c5481565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b6e5780601f10610b4357610100808354040283529160200191610b6e565b820191906000526020600020905b815481529060010190602001808311610b5157829003601f168201915b505050505081565b336000818152600560209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b610be633611597565b1515610c2a576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600d55565b6000610c3a33611597565b1515610c7e576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b601080546000919060ff19166001835b02179055506001905090565b60035481565b60008060105460ff166001811115610cb457fe5b14610d2f576040805160e560020a62461bcd02815260206004820152602d60248201527f5265717569726520736d61727420636f6e7472616374206973206e6f7420696e60448201527f2068616c74656420737461746500000000000000000000000000000000000000606482015290519081900360840190fd5b610d3a848484611bd2565b90505b9392505050565b600b5481565b600654600160a060020a0390811691161490565b60025460ff1681565b6000610d7233610d4a565b1515600114610dc8576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b50600654604051303191600160a060020a03169082156108fc029083906000818181858888f19350505050158015610e04573d6000803e3d6000fd5b5050565b6000806000610e1633610d4a565b1515600114610e6c576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b309150610e7882611380565b9050801515610e8a5760009250610f0b565b600160a060020a038216600090815260046020526040902054610eb3908263ffffffff611b7216565b600160a060020a038084166000908152600460205260408082209390935560065490911681522054610eeb908263ffffffff611b1516565b600654600160a060020a0316600090815260046020526040902055600192505b505090565b600080808311610f90576040805160e560020a62461bcd02815260206004820152602a60248201527f546f6b656e20616d6f756e7420746f206275726e206d757374206265206c617260448201527f676572207468616e203000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5033610f9b81611380565b831115611018576040805160e560020a62461bcd02815260206004820152602360248201527f596f752063616e6e6f74206275726e20746f6b656e20796f7520646f6e74206860448201527f6176650000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038116600090815260046020526040902054611041908463ffffffff611b7216565b600160a060020a03821660009081526004602052604090205560035461106d908463ffffffff611b7216565b60035550600192915050565b600e5481565b61108833611597565b15156110cc576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600991909155600a55565b60006110e233610d4a565b1515600114611138576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b600060085460a060020a900460ff16600181111561115257fe5b146111a7576040805160e560020a62461bcd02815260206004820152601260248201527f52657175697265202166696e616c697a65640000000000000000000000000000604482015290519081900360640190fd5b6008805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768190600090a150600190565b60095481565b600061120b33610d4a565b1515600114611261576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b600654600160a060020a03838116911614156112c7576040805160e560020a62461bcd02815260206004820152601e60248201527f52657175697265206e65774f70734164647265737320213d206f776e65720000604482015290519081900360640190fd5b600160a060020a03821630141561134e576040805160e560020a62461bcd02815260206004820152602660248201527f52657175697265206e65774f70734164647265737320213d206164647265737360448201527f2874686973290000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b5060088054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600160a060020a031660009081526004602052604090205490565b600654600160a060020a031681565b600854600160a060020a031681565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b6e5780601f10610b4357610100808354040283529160200191610b6e565b60105460ff1681565b60008060105460ff16600181111561143057fe5b146114ab576040805160e560020a62461bcd02815260206004820152602d60248201527f5265717569726520736d61727420636f6e7472616374206973206e6f7420696e60448201527f2068616c74656420737461746500000000000000000000000000000000000000606482015290519081900360840190fd5b600c5482101561152b576040805160e560020a62461bcd02815260206004820152602660248201527f546f6b656e20616d6f756e74206973206e6f7420656e6f75676820746f20747260448201527f616e736665720000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61153433611597565b1580156115495750600160a060020a03831630145b156115615761155782611be9565b5060019050610bd7565b61156a33611597565b1561158d5760065461158690600160a060020a03168484611bd2565b9050610bd7565b6115868383611f68565b60006115a282610d4a565b80610bd75750610bd782611a4f565b60085460a060020a900460ff1681565b600f5481565b60006115d233610d4a565b1515600114611628576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b600160a060020a03821615156116ae576040805160e560020a62461bcd02815260206004820152602360248201527f526571756972652070726f706f7365644f776e657220213d206164647265737360448201527f2830290000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038216301415611735576040805160e560020a62461bcd02815260206004820152602660248201527f526571756972652070726f706f7365644f776e657220213d206164647265737360448201527f2874686973290000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600654600160a060020a038381169116141561179b576040805160e560020a62461bcd02815260206004820152601e60248201527f526571756972652070726f706f7365644f776e657220213d206f776e65720000604482015290519081900360640190fd5b5060078054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60006117d833611597565b151561181c576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b601080546001919060ff19168280610c8e565b600061183a33610d4a565b1515600114611890576040805160e560020a62461bcd02815260206004820152602480820152600080516020612292833981519152604482015260e160020a633a34b7b702606482015290519081900360840190fd5b50604051303190600160a060020a0383169082156108fc029083906000818181858888f193505050501580156118ca573d6000803e3d6000fd5b505050565b6118d833611597565b151561191c576040805160e560020a62461bcd02815260206004820152601960248201526000805160206122b2833981519152604482015290519081900360640190fd5b600e55565b600754600160a060020a031681565b600f5460009061195d9061195164e8d4a510006103e863ffffffff611b0016565b9063ffffffff611b7216565b905090565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b600754600090600160a060020a03163314611a18576040805160e560020a62461bcd02815260206004820152602360248201527f52657175697265206d73672e73656e646572203d3d2070726f706f7365644f7760448201527f6e65720000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b506006805473ffffffffffffffffffffffffffffffffffffffff199081163317909155600780549091169055600190565b600d5481565b600854600090600160a060020a031615801590610bd7575050600854600160a060020a0390811691161490565b600080831515611a8f5760009150611af9565b50828202828482811515611a9f57fe5b0414611af5576040805160e560020a62461bcd02815260206004820152601260248201527f526571756972652072202f2061203d3d20620000000000000000000000000000604482015290519081900360640190fd5b8091505b5092915050565b60008183811515611b0d57fe5b049392505050565b600082820183811015611af5576040805160e560020a62461bcd02815260206004820152600e60248201527f526571756972652072203e3d2061000000000000000000000000000000000000604482015290519081900360640190fd5b600081831015611bcc576040805160e560020a62461bcd02815260206004820152600e60248201527f526571756972652061203e3d2062000000000000000000000000000000000000604482015290519081900360640190fd5b50900390565b6000611bde3384611f7e565b610d3a84848461203b565b6000806000600a54111515611c48576040805160e560020a62461bcd02815260206004820152601860248201527f73656c6c5072696365457468206d757374206265203e20300000000000000000604482015290519081900360640190fd5b600c54831015611cc8576040805160e560020a62461bcd02815260206004820152603660248201527f53656c6c20746f6b656e20616d6f756e74206d757374206265206c617267657260448201527f207468616e2050425454466f724761732076616c756500000000000000000000606482015290519081900360840190fd5b33600090815260046020526040902054831115611d55576040805160e560020a62461bcd02815260206004820152602360248201527f546f6b656e2062616c616e6365206973206e6f7420656e6f75676820746f207360448201527f6f6c640000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600e5433311015611dd6576040805160e560020a62461bcd02815260206004820152603860248201527f53656c6c65722062616c616e6365206d75737420626520656e6f75676820746f60448201527f2070617920746865207472616e73616374696f6e206665650000000000000000606482015290519081900360840190fd5b600a54611dfb90611def856103e863ffffffff611b0016565b9063ffffffff611a7c16565b9150611e0e30318363ffffffff611b7216565b600d54909150811015611e91576040805160e560020a62461bcd02815260206004820152603560248201527f52656d61696e696e6720636f6e74726163742062616c616e6365206973206e6f60448201527f7420656e6f75676820666f722072657365727665640000000000000000000000606482015290519081900360840190fd5b600654600160a060020a0316600090815260046020526040902054611ebc908463ffffffff611b1516565b600654600160a060020a0316600090815260046020526040808220929092553381522054611ef0908463ffffffff611b7216565b33600081815260046020526040808220939093559151909184156108fc02918591818181858888f19350505050158015611f2e573d6000803e3d6000fd5b50600654604080518581529051600160a060020a039092169133916000805160206122d2833981519152919081900360200190a350919050565b6000611f743384611f7e565b610d3d83836121af565b600160085460a060020a900460ff166001811115611f9857fe5b1415611fa357610e04565b611fac81610d4a565b15611fb657610e04565b611fbf82611597565b1515610e04576040805160e560020a62461bcd02815260206004820152603460248201527f52657175697265206973206f776e6572206f72206f707320616c6c6f7765642060448201527f746f20696e697469617465207472616e73666572000000000000000000000000606482015290519081900360840190fd5b600160a060020a03831660009081526004602052604081205482118015906120865750600160a060020a03841660009081526005602090815260408083203384529091529020548211155b80156120ab5750600160a060020a038316600090815260046020526040902054828101115b156121a757600160a060020a0384166000908152600460205260409020546120d9908363ffffffff611b7216565b600160a060020a0385166000908152600460209081526040808320939093556005815282822033835290522054612116908363ffffffff611b7216565b600160a060020a03808616600090815260056020908152604080832033845282528083209490945591861681526004909152205461215a908363ffffffff611b1516565b600160a060020a0380851660008181526004602090815260409182902094909455805186815290519193928816926000805160206122d283398151915292918290030190a3506001610d3d565b506000610d3d565b3360009081526004602052604081205482118015906121e75750600160a060020a038316600090815260046020526040902054828101115b15612289573360009081526004602052604090205461220c908363ffffffff611b7216565b3360009081526004602052604080822092909255600160a060020a0385168152205461223e908363ffffffff611b1516565b600160a060020a0384166000818152600460209081526040918290209390935580518581529051919233926000805160206122d28339815191529281900390910190a3506001610bd7565b506000610bd7560052657175697265206f776e657220746f2065786563757465207472616e73616352657175697265206f6e6c79206f776e6572206f72206f707300000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820b2d27dd2545f7b783fc57e7762d2f1c51aaff50fb53eab124809c932a0bf0b430029

Swarm Source

bzzr://b2d27dd2545f7b783fc57e7762d2f1c51aaff50fb53eab124809c932a0bf0b43
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.