ETH Price: $2,676.20 (+1.77%)
Gas: 0.89 Gwei

Token

Royal Kingdom Coin (RKC)
 

Overview

Max Total Supply

0 RKC

Holders

1,158

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Cryptopia 3
Balance
8,181,649.60261021989869056 RKC

Value
$0.00
0x1b3d794bbeecd9240f46dbb3b79f4f71a972e00a
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:
RKCToken

Compiler Version
v0.4.13+commit.fb4cb1a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-07-11
*/

// Royal Kingdom Coin Token
// www.royalkingdomcoin.com
//
// RKC token is a virtual token, governed by ERC20-compatible Ethereum Smart Contract and secured by Ethereum Blockchain
// The official website is https://www.royalkingdomcoin.com/
//
// The uints are all in wei and atto tokens (*10^-18)

// The contract code itself, as usual, is at the end, after all the connected libraries

pragma solidity ^0.4.11;

/**
 * Math operations with safety checks
 */
library SafeMath {
  function mul(uint a, uint b) internal returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint a, uint b) internal returns (uint) {
    assert(b > 0);
    uint c = a / b;
    assert(a == b * c + a % b);
    return c;
  }

  function sub(uint a, uint b) internal returns (uint) {
    assert(b <= a);
    return a - b;
  }

  function add(uint a, uint b) internal returns (uint) {
    uint c = a + b;
    assert(c >= a);
    return c;
  }

  function max64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a >= b ? a : b;
  }

  function min64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a < b ? a : b;
  }

  function max256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a >= b ? a : b;
  }

  function min256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a < b ? a : b;
  }

  function assert(bool assertion) internal {
    if (!assertion) {
      throw;
    }
  }
}


/*
 * ERC20Basic
 * Simpler version of ERC20 interface
 * see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20Basic {
  uint public totalSupply;
  function balanceOf(address who) constant returns (uint);
  function transfer(address to, uint value);
  event Transfer(address indexed from, address indexed to, uint value);
}




/*
 * Basic token
 * Basic version of StandardToken, with no allowances
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint;

  mapping(address => uint) balances;

  /*
   * Fix for the ERC20 short address attack  
   */
  modifier onlyPayloadSize(uint size) {
     if(msg.data.length < size + 4) {
       throw;
     }
     _;
  }

  function transfer(address _to, uint _value) onlyPayloadSize(2 * 32) {
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
  }

  function balanceOf(address _owner) constant returns (uint balance) {
    return balances[_owner];
  }
  
}




/*
 * ERC20 interface
 * see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) constant returns (uint);
  function transferFrom(address from, address to, uint value);
  function approve(address spender, uint value);
  event Approval(address indexed owner, address indexed spender, uint value);
}




/**
 * Standard ERC20 token
 *
 * https://github.com/ethereum/EIPs/issues/20
 * Based on code by FirstBlood:
 * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is BasicToken, ERC20 {

  mapping (address => mapping (address => uint)) allowed;

  function transferFrom(address _from, address _to, uint _value) {
    var _allowance = allowed[_from][msg.sender];

    // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
    // if (_value > _allowance) throw;

    balances[_to] = balances[_to].add(_value);
    balances[_from] = balances[_from].sub(_value);
    allowed[_from][msg.sender] = _allowance.sub(_value);
    Transfer(_from, _to, _value);
  }

  function approve(address _spender, uint _value) {
    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
  }

  function allowance(address _owner, address _spender) constant returns (uint remaining) {
    return allowed[_owner][_spender];
  }

}


/*
 * Ownable
 *
 * Base contract with an owner.
 * Provides onlyOwner modifier, which prevents function from running if it is called by anyone other than the owner.
 */
contract Ownable {
  address public owner;

  function Ownable() {
    owner = msg.sender;
  }

  modifier onlyOwner() {
    if (msg.sender != owner) {
      throw;
    }
    _;
  }

  function transferOwnership(address newOwner) onlyOwner {
    if (newOwner != address(0)) {
      owner = newOwner;
    }
  }

}


contract RKCToken is StandardToken, Ownable {
    using SafeMath for uint;

    //--------------   Info for ERC20 explorers  -----------------//
    string public name = "Royal Kingdom Coin";
    string public symbol = "RKC";
    uint public decimals = 18;

    //---------------------   Constants   ------------------------//
    bool public constant TEST_MODE = false;
    uint public constant atto = 1000000000000000000;
    uint public constant INITIAL_SUPPLY = 15000000 * atto; // 15 mln RKC. Impossible to mint more than this
    address public teamWallet = 0xb79F963f200f85D0e3dD60C82ABB8F80b5869CB9;
    // Made up ICO address (designating the token pool reserved for ICO, no one has access to it)
    address public ico_address = 0x1c01C01C01C01c01C01c01c01c01C01c01c01c01;
    uint public constant ICO_START_TIME = 1499810400;

    //----------------------  Variables  -------------------------//
    uint public current_supply = 0; // Holding the number of all the coins in existence
    uint public ico_starting_supply = 0; // How many atto tokens *were* available for sale at the beginning of the ICO
    uint public current_price_atto_tokens_per_wei = 0; // Holding current price (determined by the algorithm in buy())

    //-------------   Flags describing ICO stages   --------------//
    bool public preSoldSharesDistributed = false; // Prevents accidental re-distribution of shares
    bool public isICOOpened = false;
    bool public isICOClosed = false;
    // 3 stages:
    // Contract has just been deployed and initialized. isICOOpened == false, isICOClosed == false
    // ICO has started, now anybody can buy(). isICOOpened == true, isICOClosed == false
    // ICO has finished, now the team can receive the ether. isICOOpened == false, isICOClosed == true

    //---------------------   Premiums   -------------------------//
    uint[] public premiumPacks;
    mapping(address => uint) premiumPacksPaid;

    //----------------------   Events  ---------------------------//
    event ICOOpened();
    event ICOClosed();
    event PriceChanged(uint old_price, uint new_price);
    event SupplyChanged(uint supply, uint old_supply);
    event RKCAcquired(address account, uint amount_in_wei, uint amount_in_rkc);

    // ***************************************************************************

    // Constructor
    function RKCToken() {
        // Some percentage of the tokens is already reserved by early employees and investors
        // Here we're initializing their balances
        distributePreSoldShares();

        // Starting price
        current_price_atto_tokens_per_wei = calculateCurrentPrice(1);

        // Some other initializations
        premiumPacks.length = 0;
    }

    // Sending ether directly to the contract invokes buy() and assigns tokens to the sender
    function () payable {
        buy();
    }

    // ***************************************************************************

    // Buy token by sending ether here
    //
    // Price is being determined by the algorithm in recalculatePrice()
    // You can also send the ether directly to the contract address
    function buy() payable {
        if (msg.value == 0) throw; // no tokens for you

        // Only works in the ICO stage, after that the token is going to be traded on the exchanges
        if (!isICOOpened) throw;
        if (isICOClosed) throw;

        // Deciding how many tokens can be bought with the ether received
        uint tokens = getAttoTokensAmountPerWeiInternal(msg.value);

        // Don't allow to buy more than 1% per transaction (secures from huge investors swalling the whole thing in 1 second)
        uint allowedInOneTransaction = current_supply / 100;
        if (tokens > allowedInOneTransaction) throw;

        // Just in case
        if (tokens > balances[ico_address]) throw;

        // Transfer from the ICO pool
        balances[ico_address] = balances[ico_address].sub(tokens); // if not enough, will throw
        balances[msg.sender] = balances[msg.sender].add(tokens);

        // Kick the price changing algo
        uint old_price = current_price_atto_tokens_per_wei;
        current_price_atto_tokens_per_wei = calculateCurrentPrice(getAttoTokensBoughtInICO());
        if (current_price_atto_tokens_per_wei == 0) current_price_atto_tokens_per_wei = 1; // in case it is too small that it gets rounded to zero
        if (current_price_atto_tokens_per_wei > old_price) current_price_atto_tokens_per_wei = old_price; // in case some weird overflow happens

        // Broadcasting price change event
        if (old_price != current_price_atto_tokens_per_wei) PriceChanged(old_price, current_price_atto_tokens_per_wei);

        // Broadcasting the buying event
        RKCAcquired(msg.sender, msg.value, tokens);
    }

    // Formula for the dynamic price change algorithm
    function calculateCurrentPrice(uint attoTokensBought) constant returns (uint result) {
        // see http://www.wolframalpha.com/input/?i=f(x)+%3D+395500000+%2F+(x+%2B+150000)+-+136
        return (395500000 / ((attoTokensBought / atto) + 150000)).sub(136); // mixing safe and usual math here because the division will throw on inconsistency
    }

    // ***************************************************************************

    // Functions for the contract owner

    function openICO() onlyOwner {
        if (isICOOpened) throw;
        if (isICOClosed) throw;
        isICOOpened = true;

        ICOOpened();
    }
    function closeICO() onlyOwner {
        if (isICOClosed) throw;
        if (!isICOOpened) throw;

        isICOOpened = false;
        isICOClosed = true;

        // Redistribute ICO Tokens that were not bought as the first premiums
        premiumPacks.length = 1;
        premiumPacks[0] = balances[ico_address];
        balances[ico_address] = 0;

        ICOClosed();
    }
    function pullEtherFromContract() onlyOwner {
        // Only when ICO is closed
        if (!isICOClosed) throw;

        if (!teamWallet.send(this.balance)) {
            throw;
        }
    }

    // ***************************************************************************

    // Some percentage of the tokens is already reserved by early employees and investors
    // Here we're initializing their balances
    function distributePreSoldShares() onlyOwner {
        // Making it impossible to call this function twice
        if (preSoldSharesDistributed) throw;
        preSoldSharesDistributed = true;

        // Values are in atto tokens
        balances[0x7A3c869603E28b0242c129440c9dD97F8A5bEe80] = 7508811 * atto;
        balances[0x24a541dEAe0Fc87C990A208DE28a293fb2A982d9] = 4025712 * atto;
        balances[0xEcF843458e76052E6363fFb78C7535Cd87AA3AB2] = 300275 * atto;
        balances[0x947963ED2da750a0712AE0BF96E08C798813F277] = 150000 * atto;
        balances[0x82Bc8452Ab76fBA446e16b57C080F5258F557734] = 150000 * atto;
        balances[0x0959Ed48d55e580BB58df6E5ee01BAa787d80848] = 90000 * atto;
        balances[0x530A8016fB5B3d7A0F92910b4814e383835Bd51E] = 75000 * atto;
        balances[0xC3e934D3ADE0Ab9F61F824a9a824462c790e47B0] = 202 * atto;
        current_supply = (7508811 + 4025712 + 300275 + 150000 + 150000 + 90000 + 75000 + 202) * atto;

        // Sending the rest to ICO pool
        balances[ico_address] = INITIAL_SUPPLY.sub(current_supply);

        // Initializing the supply variables
        ico_starting_supply = balances[ico_address];
        current_supply = INITIAL_SUPPLY;
        SupplyChanged(0, current_supply);
    }

    // ***************************************************************************

    // Some useful getters (although you can just query the public variables)

    function getCurrentPriceAttoTokensPerWei() constant returns (uint result) {
        return current_price_atto_tokens_per_wei;
    }
    function getAttoTokensAmountPerWeiInternal(uint value) payable returns (uint result) {
        return value * current_price_atto_tokens_per_wei;
    }
    function getAttoTokensAmountPerWei(uint value) constant returns (uint result) {
        return value * current_price_atto_tokens_per_wei;
    }
    function getSupply() constant returns (uint result) {
        return current_supply;
    }
    function getAttoTokensLeftForICO() constant returns (uint result) {
        return balances[ico_address];
    }
    function getAttoTokensBoughtInICO() constant returns (uint result) {
        return ico_starting_supply - getAttoTokensLeftForICO();
    }
    function getBalance(address addr) constant returns (uint balance) {
        return balances[addr];
    }
    function getPremiumPack(uint index) constant returns (uint premium) {
        return premiumPacks[index];
    }
    function getPremiumCount() constant returns (uint length) {
        return premiumPacks.length;
    }
    function getBalancePremiumsPaid(address account) constant returns (uint result) {
        return premiumPacksPaid[account];
    }

    // ***************************************************************************

    // Premiums

    function sendPremiumPack(uint amount) onlyOwner allowedPayments(msg.sender, amount) {
        premiumPacks.length += 1;
        premiumPacks[premiumPacks.length-1] = amount;
        balances[msg.sender] = balances[msg.sender].sub(amount); // will throw and revert the whole thing if doesn't have this amount
    }

    function updatePremiums(address account) private {
        if (premiumPacks.length > premiumPacksPaid[account]) {
            uint startPackIndex = premiumPacksPaid[account];
            uint finishPackIndex = premiumPacks.length - 1;
            for(uint i = startPackIndex; i <= finishPackIndex; i++) {
                if (current_supply != 0) { // just in case
                    uint owing = balances[account] * premiumPacks[i] / current_supply;
                    balances[account] = balances[account].add(owing);
                }
            }
            premiumPacksPaid[account] = premiumPacks.length;
        }
    }

    // ***************************************************************************

    // Overriding payment functions to take control over the logic

    modifier allowedPayments(address payer, uint value) {
        // Don't allow to transfer coins until the ICO ends
        if (isICOOpened) throw;
        if (!isICOClosed) throw;

        // Limit the quick dump possibility
        uint diff = 0;
        uint allowed = 0;
        if (balances[payer] > current_supply / 100) { // for balances > 1% of total supply
            if (block.timestamp > ICO_START_TIME) {
                diff = block.timestamp - ICO_START_TIME;
            } else {
                diff = ICO_START_TIME - block.timestamp;
            }

            allowed = (current_supply / 20) * (diff / (60 * 60 * 24 * 30)); // 5% unlocked every month

            if (value > allowed) throw;
        }

        _;
    }

    function transferFrom(address _from, address _to, uint _value) allowedPayments(_from, _value) {
        updatePremiums(_from);
        updatePremiums(_to);
        super.transferFrom(_from, _to, _value);
    }
    function transfer(address _to, uint _value) onlyPayloadSize(2 * 32) allowedPayments(msg.sender, _value) {
        updatePremiums(msg.sender);
        updatePremiums(_to);
        super.transfer(_to, _value);
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ico_address","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ICO_START_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"atto","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isICOOpened","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"current_price_atto_tokens_per_wei","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"closeICO","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"teamWallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getPremiumCount","outputs":[{"name":"length","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"preSoldSharesDistributed","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"current_supply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getSupply","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"getAttoTokensAmountPerWeiInternal","outputs":[{"name":"result","type":"uint256"}],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"sendPremiumPack","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"getBalancePremiumsPaid","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getPremiumPack","outputs":[{"name":"premium","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"TEST_MODE","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"attoTokensBought","type":"uint256"}],"name":"calculateCurrentPrice","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"openICO","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pullEtherFromContract","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"value","type":"uint256"}],"name":"getAttoTokensAmountPerWei","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getCurrentPriceAttoTokensPerWei","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isICOClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getAttoTokensBoughtInICO","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getAttoTokensLeftForICO","outputs":[{"name":"result","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ico_starting_supply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"premiumPacks","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"distributePreSoldShares","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"getBalance","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[],"name":"ICOOpened","type":"event"},{"anonymous":false,"inputs":[],"name":"ICOClosed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"old_price","type":"uint256"},{"indexed":false,"name":"new_price","type":"uint256"}],"name":"PriceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"supply","type":"uint256"},{"indexed":false,"name":"old_supply","type":"uint256"}],"name":"SupplyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"},{"indexed":false,"name":"amount_in_wei","type":"uint256"},{"indexed":false,"name":"amount_in_rkc","type":"uint256"}],"name":"RKCAcquired","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"},{"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"}]

606060405260408051908101604052601281527f526f79616c204b696e67646f6d20436f696e0000000000000000000000000000602082015260049080516200004d9291602001906200045f565b5060408051908101604052600381527f524b43000000000000000000000000000000000000000000000000000000000060208201526005908051620000979291602001906200045f565b50601260065560078054600160a060020a031990811673b79f963f200f85d0e3dd60c82abb8f80b5869cb91790915560088054909116731c01c01c01c01c01c01c01c01c01c01c01c01c0117905560006009819055600a819055600b55600c805462ffffff1916905534156200010c57600080fd5b5b5b60038054600160a060020a03191633600160a060020a03161790555b620001426401000000006200136e6200017682021704565b6200015c60016401000000006200113d620003df82021704565b600b5560006200016e600d82620004e5565b505b62000536565b60035433600160a060020a039081169116146200019257600080fd5b600c5460ff1615620001a357600080fd5b600c805460ff191660019081179091556020526a06360d75bf3a48764c00007f131373111e2eedc15fb303affb2bbae7ee29c4dd90c9a1d1a3cad68a4b940037556a03547a48e94fb2cfc000007fe9d21bc637986a772ea41ecf6ce0fd6095a4f82e78652710e3b8e6c58bb1627f55693f95f0bbe6ddb3ec00007f9dcc144c43b788967b997fe02c362eabb5ae5890ed806e2237d32d5dcd0fc50755691fc3842bd1f071c000007f335b2f96aaac85586e022de483b169ce07fe13b4baed8352bf4b101fe1e544d98190557f90d93c94078fbab9e66df1135ddce8dbcca027ec004337d1e0a90fc587c681095569130ee8e71790444000007f767ed4b0ad4eae3b2686dc98ad42f0becadfb15e03be4c4e88c7134f0e8b4f9f55690fe1c215e8f838e000007f0ac515c7b2d9ca1f6b2dca6b8396c0b2ed77616e3fa0f1e006a3e989af38baf85573c3e934d3ade0ab9f61f824a9a824462c790e47b0600052680af35029c214e800007f260615d68afb9c70d931e9a35de2526983e4efbac6553509064f500d229181b0556a0a2ca056093f046f800000600981905562000365906a0c685fa11e01ec6f00000090640100000000620015ea6200042582021704565b60088054600160a060020a0390811660009081526001602052604080822094909455915416815281812054600a556a0c685fa11e01ec6f00000060098190557fed89e864eaa767d73408242ff6a09be53504bda6578087e3cc94dc198390488c925191825260208201526040908101905180910390a15b5b565b60006200041d6088670de0b6b3a7640000845b04620249f001631792d9e08115156200040757fe5b0490640100000000620015ea6200042582021704565b90505b919050565b60006200044383831115640100000000620019166200044e82021704565b508082035b92915050565b8015156200045b57600080fd5b5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004a257805160ff1916838001178555620004d2565b82800160010185558215620004d2579182015b82811115620004d2578251825591602001919060010190620004b5565b5b50620004e192915062000512565b5090565b8154818355818115116200050c576000838152602090206200050c91810190830162000512565b5b505050565b6200053391905b80821115620004e1576000815560010162000519565b5090565b90565b61199d80620005466000396000f300606060405236156101f65763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610207578063095ea7b31461029257806318160ddd146102b6578063182499fe146102db5780631b4cd2de1461030a57806323b872dd1461032f57806324b94ac6146103595780632cc92b2b1461037e5780632ff2e9dc146103a5578063313ce567146103ca57806337a30d3b146103ef5780635423864514610414578063599270441461042957806367d5fae114610458578063680add7b1461047d5780636aea5f1b146104a45780636c9c2faf146104c957806370a08231146104ee57806372f52a3e1461051f5780638ba677fa1461053c5780638da5cb5b1461055457806394f0080c1461058357806395d89b41146105b45780639ec272b41461063f578063a4009e2314610667578063a6f2ae3a1461068e578063a9059cbb14610698578063ad74f9bc146106bc578063b587dc57146106e4578063b6761717146106f9578063ba49e21f1461070e578063c84ca86714610736578063c97ab7ca1461075b578063c99380c914610782578063dd62ed3e146107a7578063ed45e578146107de578063ef4a0c6114610803578063f2fde38b14610828578063f464e64e14610849578063f6f17bba14610871578063f8b2cb4f146104ee575b6102055b6102026108b7565b5b565b005b341561021257600080fd5b61021a610a94565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102575780820151818401525b60200161023e565b50505050905090810190601f1680156102845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561029d57600080fd5b610205600160a060020a0360043516602435610b32565b005b34156102c157600080fd5b6102c9610b97565b60405190815260200160405180910390f35b34156102e657600080fd5b6102ee610b9d565b604051600160a060020a03909116815260200160405180910390f35b341561031557600080fd5b6102c9610bac565b60405190815260200160405180910390f35b341561033a57600080fd5b610205600160a060020a0360043581169060243516604435610bb4565b005b341561036457600080fd5b6102c9610c8e565b60405190815260200160405180910390f35b341561038957600080fd5b610391610c9a565b604051901515815260200160405180910390f35b34156103b057600080fd5b6102c9610ca8565b60405190815260200160405180910390f35b34156103d557600080fd5b6102c9610cb7565b60405190815260200160405180910390f35b34156103fa57600080fd5b6102c9610cbd565b60405190815260200160405180910390f35b341561041f57600080fd5b610205610cc3565b005b341561043457600080fd5b6102ee610db2565b604051600160a060020a03909116815260200160405180910390f35b341561046357600080fd5b6102c9610dc1565b60405190815260200160405180910390f35b341561048857600080fd5b610391610dc8565b604051901515815260200160405180910390f35b34156104af57600080fd5b6102c9610dd1565b60405190815260200160405180910390f35b34156104d457600080fd5b6102c9610dd7565b60405190815260200160405180910390f35b34156104f957600080fd5b6102c9600160a060020a0360043516610dde565b60405190815260200160405180910390f35b6102c9600435610dfd565b60405190815260200160405180910390f35b341561054757600080fd5b610205600435610e08565b005b341561055f57600080fd5b6102ee610f59565b604051600160a060020a03909116815260200160405180910390f35b341561058e57600080fd5b6102c9600160a060020a0360043516610f68565b60405190815260200160405180910390f35b34156105bf57600080fd5b61021a610f87565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102575780820151818401525b60200161023e565b50505050905090810190601f1680156102845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561064a57600080fd5b6102c9600435611025565b60405190815260200160405180910390f35b341561067257600080fd5b61039161104e565b604051901515815260200160405180910390f35b6102056108b7565b005b34156106a357600080fd5b610205600160a060020a0360043516602435611053565b005b34156106c757600080fd5b6102c960043561113d565b60405190815260200160405180910390f35b34156106ef57600080fd5b610205611178565b005b341561070457600080fd5b6102056111fd565b005b341561051f57600080fd5b6102c9600435610dfd565b60405190815260200160405180910390f35b341561074157600080fd5b6102c9611277565b60405190815260200160405180910390f35b341561076657600080fd5b61039161127e565b604051901515815260200160405180910390f35b341561078d57600080fd5b6102c961128d565b60405190815260200160405180910390f35b34156107b257600080fd5b6102c9600160a060020a03600435811690602435166112a1565b60405190815260200160405180910390f35b34156107e957600080fd5b6102c96112ce565b60405190815260200160405180910390f35b341561080e57600080fd5b6102c96112ed565b60405190815260200160405180910390f35b341561083357600080fd5b610205600160a060020a03600435166112f3565b005b341561085457600080fd5b6102c960043561134b565b60405190815260200160405180910390f35b341561087c57600080fd5b61020561136e565b005b34156104f957600080fd5b6102c9600160a060020a0360043516610dde565b60405190815260200160405180910390f35b600080803415156108c757600080fd5b600c54610100900460ff1615156108dd57600080fd5b600c5462010000900460ff16156108f357600080fd5b6108fc34610dfd565b6009549093506064905b0491508183111561091657600080fd5b600854600160a060020a031660009081526001602052604090205483111561093d57600080fd5b600854600160a060020a0316600090815260016020526040902054610968908463ffffffff6115ea16565b600854600160a060020a039081166000908152600160205260408082209390935533909116815220546109a1908463ffffffff61160316565b600160a060020a03331660009081526001602052604090205550600b546109ce6109c961128d565b61113d565b600b81905515156109df576001600b555b80600b5411156109ef57600b8190555b600b548114610a35577f8aa4fa52648a6d15edce8a179c792c86f3719d0cc3c572cf90f91948f0f2cb6881600b5460405191825260208201526040908101905180910390a15b7f81f1fa93288598099616e7c4d6397cd187aa1fcb03c520b8106dc9084d0a69d63334856040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a15b505050565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b2a5780601f10610aff57610100808354040283529160200191610b2a565b820191906000526020600020905b815481529060010190602001808311610b0d57829003601f168201915b505050505081565b600160a060020a03338116600081815260026020908152604080832094871680845294909152908190208490557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259084905190815260200160405180910390a35b5050565b60005481565b600854600160a060020a031681565b6359654a6081565b8281600080600c60019054906101000a900460ff1615610bd357600080fd5b600c5462010000900460ff161515610bea57600080fd5b505060095460009081906064905b600160a060020a038616600090815260016020526040902054919004901115610c65576359654a60421115610c35576359654a6042039150610c3f565b426359654a600391505b62278d00825b046014600954811515610c5457fe5b0402905080831115610c6557600080fd5b5b610c6f8761161f565b610c788661161f565b610c8387878761173d565b5b5b50505050505050565b670de0b6b3a764000081565b600c54610100900460ff1681565b6a0c685fa11e01ec6f00000081565b60065481565b600b5481565b60035433600160a060020a03908116911614610cde57600080fd5b600c5462010000900460ff1615610cf457600080fd5b600c54610100900460ff161515610d0a57600080fd5b600c805462ffff001916620100001790556001610d28600d82611926565b50600854600160a060020a0316600090815260016020526040812054600d8054919290918110610d5457fe5b906000526020600020900160005b5055600854600160a060020a0316600090815260016020526040808220919091557f6274c3e3ca2e096d0f959bbf291d960a8dc9f1a6ba856fcea564a14957c57590905160405180910390a15b5b565b600754600160a060020a031681565b600d545b90565b600c5460ff1681565b60095481565b6009545b90565b600160a060020a0381166000908152600160205260409020545b919050565b600b5481025b919050565b60035433600160a060020a03908116911614610e2357600080fd5b3381600080600c60019054906101000a900460ff1615610e4257600080fd5b600c5462010000900460ff161515610e5957600080fd5b505060095460009081906064905b600160a060020a038616600090815260016020526040902054919004901115610ed4576359654a60421115610ea4576359654a6042039150610eae565b426359654a600391505b62278d00825b046014600954811515610ec357fe5b0402905080831115610ed457600080fd5b5b600d805460010190610ee79082611926565b50600d80548691906000198101908110610efd57fe5b906000526020600020900160005b5055600160a060020a033316600090815260016020526040902054610f36908663ffffffff6115ea16565b600160a060020a0333166000908152600160205260409020555b5b505050505b50565b600354600160a060020a031681565b600160a060020a0381166000908152600e60205260409020545b919050565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b2a5780601f10610aff57610100808354040283529160200191610b2a565b820191906000526020600020905b815481529060010190602001808311610b0d57829003601f168201915b505050505081565b6000600d8281548110151561103657fe5b906000526020600020900160005b505490505b919050565b600081565b6040604436101561106357600080fd5b3382600080600c60019054906101000a900460ff161561108257600080fd5b600c5462010000900460ff16151561109957600080fd5b505060095460009081906064905b600160a060020a038616600090815260016020526040902054919004901115611114576359654a604211156110e4576359654a60420391506110ee565b426359654a600391505b62278d00825b04601460095481151561110357fe5b040290508083111561111457600080fd5b5b61111e3361161f565b6111278761161f565b610c838787611849565b5b5b505050505b505050565b60006111706088670de0b6b3a7640000845b04620249f001631792d9e081151561116357fe5b049063ffffffff6115ea16565b90505b919050565b60035433600160a060020a0390811691161461119357600080fd5b600c54610100900460ff16156111a857600080fd5b600c5462010000900460ff16156111be57600080fd5b600c805461ff0019166101001790557f173e40d07c811a18c48d8909de69668f0650168f0296922007f8a479b7a0a08760405160405180910390a15b5b565b60035433600160a060020a0390811691161461121857600080fd5b600c5462010000900460ff16151561122f57600080fd5b600754600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561020257600080fd5b5b5b565b600b5481025b919050565b600b545b90565b600c5462010000900460ff1681565b60006112976112ce565b600a540390505b90565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b600854600160a060020a03166000908152600160205260409020545b90565b600a5481565b60035433600160a060020a0390811691161461130e57600080fd5b600160a060020a03811615610f56576003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600d80548290811061135957fe5b906000526020600020900160005b5054905081565b60035433600160a060020a0390811691161461138957600080fd5b600c5460ff161561139957600080fd5b600c805460ff191660019081179091556020526a06360d75bf3a48764c00007f131373111e2eedc15fb303affb2bbae7ee29c4dd90c9a1d1a3cad68a4b940037556a03547a48e94fb2cfc000007fe9d21bc637986a772ea41ecf6ce0fd6095a4f82e78652710e3b8e6c58bb1627f55693f95f0bbe6ddb3ec00007f9dcc144c43b788967b997fe02c362eabb5ae5890ed806e2237d32d5dcd0fc50755691fc3842bd1f071c000007f335b2f96aaac85586e022de483b169ce07fe13b4baed8352bf4b101fe1e544d98190557f90d93c94078fbab9e66df1135ddce8dbcca027ec004337d1e0a90fc587c681095569130ee8e71790444000007f767ed4b0ad4eae3b2686dc98ad42f0becadfb15e03be4c4e88c7134f0e8b4f9f55690fe1c215e8f838e000007f0ac515c7b2d9ca1f6b2dca6b8396c0b2ed77616e3fa0f1e006a3e989af38baf85573c3e934d3ade0ab9f61f824a9a824462c790e47b0600052680af35029c214e800007f260615d68afb9c70d931e9a35de2526983e4efbac6553509064f500d229181b0556a0a2ca056093f046f8000006009819055611551906a0c685fa11e01ec6f0000009063ffffffff6115ea16565b60088054600160a060020a0390811660009081526001602052604080822094909455915416815281812054600a556a0c685fa11e01ec6f00000060098190557fed89e864eaa767d73408242ff6a09be53504bda6578087e3cc94dc198390488c925191825260208201526040908101905180910390a15b5b565b600160a060020a0381166000908152600160205260409020545b919050565b60006115f883831115611916565b508082035b92915050565b600082820161161484821015611916565b8091505b5092915050565b600160a060020a0381166000908152600e6020526040812054600d54829182918291901115610f5057600160a060020a0385166000908152600e6020526040902054600d549094506000190192508391505b828211611718576009541561170c57600954600d80548490811061169157fe5b906000526020600020900160005b5054600160a060020a038716600090815260016020526040902054028115156116c457fe5b600160a060020a03871660009081526001602052604090205491900491506116f2908263ffffffff61160316565b600160a060020a0386166000908152600160205260409020555b5b600190910190611671565b600d54600160a060020a0386166000908152600e60205260409020555b5b5050505050565b600160a060020a038084166000908152600260209081526040808320338516845282528083205493861683526001909152902054611781908363ffffffff61160316565b600160a060020a0380851660009081526001602052604080822093909355908616815220546117b6908363ffffffff6115ea16565b600160a060020a0385166000908152600160205260409020556117df818363ffffffff6115ea16565b600160a060020a03808616600081815260026020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35b50505050565b6040604436101561185957600080fd5b600160a060020a033316600090815260016020526040902054611882908363ffffffff6115ea16565b600160a060020a0333811660009081526001602052604080822093909355908516815220546118b7908363ffffffff61160316565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35b5b505050565b801515610f5657600080fd5b5b50565b815481835581811511610a8f57600083815260209020610a8f918101908301611950565b5b505050565b610dc591905b8082111561196a5760008155600101611956565b5090565b905600a165627a7a723058201903faf596718d0283e874dd664c283ad78e72ef1398fc0fa4fe33376495c6d10029

Deployed Bytecode

0x606060405236156101f65763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610207578063095ea7b31461029257806318160ddd146102b6578063182499fe146102db5780631b4cd2de1461030a57806323b872dd1461032f57806324b94ac6146103595780632cc92b2b1461037e5780632ff2e9dc146103a5578063313ce567146103ca57806337a30d3b146103ef5780635423864514610414578063599270441461042957806367d5fae114610458578063680add7b1461047d5780636aea5f1b146104a45780636c9c2faf146104c957806370a08231146104ee57806372f52a3e1461051f5780638ba677fa1461053c5780638da5cb5b1461055457806394f0080c1461058357806395d89b41146105b45780639ec272b41461063f578063a4009e2314610667578063a6f2ae3a1461068e578063a9059cbb14610698578063ad74f9bc146106bc578063b587dc57146106e4578063b6761717146106f9578063ba49e21f1461070e578063c84ca86714610736578063c97ab7ca1461075b578063c99380c914610782578063dd62ed3e146107a7578063ed45e578146107de578063ef4a0c6114610803578063f2fde38b14610828578063f464e64e14610849578063f6f17bba14610871578063f8b2cb4f146104ee575b6102055b6102026108b7565b5b565b005b341561021257600080fd5b61021a610a94565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102575780820151818401525b60200161023e565b50505050905090810190601f1680156102845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561029d57600080fd5b610205600160a060020a0360043516602435610b32565b005b34156102c157600080fd5b6102c9610b97565b60405190815260200160405180910390f35b34156102e657600080fd5b6102ee610b9d565b604051600160a060020a03909116815260200160405180910390f35b341561031557600080fd5b6102c9610bac565b60405190815260200160405180910390f35b341561033a57600080fd5b610205600160a060020a0360043581169060243516604435610bb4565b005b341561036457600080fd5b6102c9610c8e565b60405190815260200160405180910390f35b341561038957600080fd5b610391610c9a565b604051901515815260200160405180910390f35b34156103b057600080fd5b6102c9610ca8565b60405190815260200160405180910390f35b34156103d557600080fd5b6102c9610cb7565b60405190815260200160405180910390f35b34156103fa57600080fd5b6102c9610cbd565b60405190815260200160405180910390f35b341561041f57600080fd5b610205610cc3565b005b341561043457600080fd5b6102ee610db2565b604051600160a060020a03909116815260200160405180910390f35b341561046357600080fd5b6102c9610dc1565b60405190815260200160405180910390f35b341561048857600080fd5b610391610dc8565b604051901515815260200160405180910390f35b34156104af57600080fd5b6102c9610dd1565b60405190815260200160405180910390f35b34156104d457600080fd5b6102c9610dd7565b60405190815260200160405180910390f35b34156104f957600080fd5b6102c9600160a060020a0360043516610dde565b60405190815260200160405180910390f35b6102c9600435610dfd565b60405190815260200160405180910390f35b341561054757600080fd5b610205600435610e08565b005b341561055f57600080fd5b6102ee610f59565b604051600160a060020a03909116815260200160405180910390f35b341561058e57600080fd5b6102c9600160a060020a0360043516610f68565b60405190815260200160405180910390f35b34156105bf57600080fd5b61021a610f87565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102575780820151818401525b60200161023e565b50505050905090810190601f1680156102845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561064a57600080fd5b6102c9600435611025565b60405190815260200160405180910390f35b341561067257600080fd5b61039161104e565b604051901515815260200160405180910390f35b6102056108b7565b005b34156106a357600080fd5b610205600160a060020a0360043516602435611053565b005b34156106c757600080fd5b6102c960043561113d565b60405190815260200160405180910390f35b34156106ef57600080fd5b610205611178565b005b341561070457600080fd5b6102056111fd565b005b341561051f57600080fd5b6102c9600435610dfd565b60405190815260200160405180910390f35b341561074157600080fd5b6102c9611277565b60405190815260200160405180910390f35b341561076657600080fd5b61039161127e565b604051901515815260200160405180910390f35b341561078d57600080fd5b6102c961128d565b60405190815260200160405180910390f35b34156107b257600080fd5b6102c9600160a060020a03600435811690602435166112a1565b60405190815260200160405180910390f35b34156107e957600080fd5b6102c96112ce565b60405190815260200160405180910390f35b341561080e57600080fd5b6102c96112ed565b60405190815260200160405180910390f35b341561083357600080fd5b610205600160a060020a03600435166112f3565b005b341561085457600080fd5b6102c960043561134b565b60405190815260200160405180910390f35b341561087c57600080fd5b61020561136e565b005b34156104f957600080fd5b6102c9600160a060020a0360043516610dde565b60405190815260200160405180910390f35b600080803415156108c757600080fd5b600c54610100900460ff1615156108dd57600080fd5b600c5462010000900460ff16156108f357600080fd5b6108fc34610dfd565b6009549093506064905b0491508183111561091657600080fd5b600854600160a060020a031660009081526001602052604090205483111561093d57600080fd5b600854600160a060020a0316600090815260016020526040902054610968908463ffffffff6115ea16565b600854600160a060020a039081166000908152600160205260408082209390935533909116815220546109a1908463ffffffff61160316565b600160a060020a03331660009081526001602052604090205550600b546109ce6109c961128d565b61113d565b600b81905515156109df576001600b555b80600b5411156109ef57600b8190555b600b548114610a35577f8aa4fa52648a6d15edce8a179c792c86f3719d0cc3c572cf90f91948f0f2cb6881600b5460405191825260208201526040908101905180910390a15b7f81f1fa93288598099616e7c4d6397cd187aa1fcb03c520b8106dc9084d0a69d63334856040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a15b505050565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b2a5780601f10610aff57610100808354040283529160200191610b2a565b820191906000526020600020905b815481529060010190602001808311610b0d57829003601f168201915b505050505081565b600160a060020a03338116600081815260026020908152604080832094871680845294909152908190208490557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259084905190815260200160405180910390a35b5050565b60005481565b600854600160a060020a031681565b6359654a6081565b8281600080600c60019054906101000a900460ff1615610bd357600080fd5b600c5462010000900460ff161515610bea57600080fd5b505060095460009081906064905b600160a060020a038616600090815260016020526040902054919004901115610c65576359654a60421115610c35576359654a6042039150610c3f565b426359654a600391505b62278d00825b046014600954811515610c5457fe5b0402905080831115610c6557600080fd5b5b610c6f8761161f565b610c788661161f565b610c8387878761173d565b5b5b50505050505050565b670de0b6b3a764000081565b600c54610100900460ff1681565b6a0c685fa11e01ec6f00000081565b60065481565b600b5481565b60035433600160a060020a03908116911614610cde57600080fd5b600c5462010000900460ff1615610cf457600080fd5b600c54610100900460ff161515610d0a57600080fd5b600c805462ffff001916620100001790556001610d28600d82611926565b50600854600160a060020a0316600090815260016020526040812054600d8054919290918110610d5457fe5b906000526020600020900160005b5055600854600160a060020a0316600090815260016020526040808220919091557f6274c3e3ca2e096d0f959bbf291d960a8dc9f1a6ba856fcea564a14957c57590905160405180910390a15b5b565b600754600160a060020a031681565b600d545b90565b600c5460ff1681565b60095481565b6009545b90565b600160a060020a0381166000908152600160205260409020545b919050565b600b5481025b919050565b60035433600160a060020a03908116911614610e2357600080fd5b3381600080600c60019054906101000a900460ff1615610e4257600080fd5b600c5462010000900460ff161515610e5957600080fd5b505060095460009081906064905b600160a060020a038616600090815260016020526040902054919004901115610ed4576359654a60421115610ea4576359654a6042039150610eae565b426359654a600391505b62278d00825b046014600954811515610ec357fe5b0402905080831115610ed457600080fd5b5b600d805460010190610ee79082611926565b50600d80548691906000198101908110610efd57fe5b906000526020600020900160005b5055600160a060020a033316600090815260016020526040902054610f36908663ffffffff6115ea16565b600160a060020a0333166000908152600160205260409020555b5b505050505b50565b600354600160a060020a031681565b600160a060020a0381166000908152600e60205260409020545b919050565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b2a5780601f10610aff57610100808354040283529160200191610b2a565b820191906000526020600020905b815481529060010190602001808311610b0d57829003601f168201915b505050505081565b6000600d8281548110151561103657fe5b906000526020600020900160005b505490505b919050565b600081565b6040604436101561106357600080fd5b3382600080600c60019054906101000a900460ff161561108257600080fd5b600c5462010000900460ff16151561109957600080fd5b505060095460009081906064905b600160a060020a038616600090815260016020526040902054919004901115611114576359654a604211156110e4576359654a60420391506110ee565b426359654a600391505b62278d00825b04601460095481151561110357fe5b040290508083111561111457600080fd5b5b61111e3361161f565b6111278761161f565b610c838787611849565b5b5b505050505b505050565b60006111706088670de0b6b3a7640000845b04620249f001631792d9e081151561116357fe5b049063ffffffff6115ea16565b90505b919050565b60035433600160a060020a0390811691161461119357600080fd5b600c54610100900460ff16156111a857600080fd5b600c5462010000900460ff16156111be57600080fd5b600c805461ff0019166101001790557f173e40d07c811a18c48d8909de69668f0650168f0296922007f8a479b7a0a08760405160405180910390a15b5b565b60035433600160a060020a0390811691161461121857600080fd5b600c5462010000900460ff16151561122f57600080fd5b600754600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561020257600080fd5b5b5b565b600b5481025b919050565b600b545b90565b600c5462010000900460ff1681565b60006112976112ce565b600a540390505b90565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b600854600160a060020a03166000908152600160205260409020545b90565b600a5481565b60035433600160a060020a0390811691161461130e57600080fd5b600160a060020a03811615610f56576003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600d80548290811061135957fe5b906000526020600020900160005b5054905081565b60035433600160a060020a0390811691161461138957600080fd5b600c5460ff161561139957600080fd5b600c805460ff191660019081179091556020526a06360d75bf3a48764c00007f131373111e2eedc15fb303affb2bbae7ee29c4dd90c9a1d1a3cad68a4b940037556a03547a48e94fb2cfc000007fe9d21bc637986a772ea41ecf6ce0fd6095a4f82e78652710e3b8e6c58bb1627f55693f95f0bbe6ddb3ec00007f9dcc144c43b788967b997fe02c362eabb5ae5890ed806e2237d32d5dcd0fc50755691fc3842bd1f071c000007f335b2f96aaac85586e022de483b169ce07fe13b4baed8352bf4b101fe1e544d98190557f90d93c94078fbab9e66df1135ddce8dbcca027ec004337d1e0a90fc587c681095569130ee8e71790444000007f767ed4b0ad4eae3b2686dc98ad42f0becadfb15e03be4c4e88c7134f0e8b4f9f55690fe1c215e8f838e000007f0ac515c7b2d9ca1f6b2dca6b8396c0b2ed77616e3fa0f1e006a3e989af38baf85573c3e934d3ade0ab9f61f824a9a824462c790e47b0600052680af35029c214e800007f260615d68afb9c70d931e9a35de2526983e4efbac6553509064f500d229181b0556a0a2ca056093f046f8000006009819055611551906a0c685fa11e01ec6f0000009063ffffffff6115ea16565b60088054600160a060020a0390811660009081526001602052604080822094909455915416815281812054600a556a0c685fa11e01ec6f00000060098190557fed89e864eaa767d73408242ff6a09be53504bda6578087e3cc94dc198390488c925191825260208201526040908101905180910390a15b5b565b600160a060020a0381166000908152600160205260409020545b919050565b60006115f883831115611916565b508082035b92915050565b600082820161161484821015611916565b8091505b5092915050565b600160a060020a0381166000908152600e6020526040812054600d54829182918291901115610f5057600160a060020a0385166000908152600e6020526040902054600d549094506000190192508391505b828211611718576009541561170c57600954600d80548490811061169157fe5b906000526020600020900160005b5054600160a060020a038716600090815260016020526040902054028115156116c457fe5b600160a060020a03871660009081526001602052604090205491900491506116f2908263ffffffff61160316565b600160a060020a0386166000908152600160205260409020555b5b600190910190611671565b600d54600160a060020a0386166000908152600e60205260409020555b5b5050505050565b600160a060020a038084166000908152600260209081526040808320338516845282528083205493861683526001909152902054611781908363ffffffff61160316565b600160a060020a0380851660009081526001602052604080822093909355908616815220546117b6908363ffffffff6115ea16565b600160a060020a0385166000908152600160205260409020556117df818363ffffffff6115ea16565b600160a060020a03808616600081815260026020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35b50505050565b6040604436101561185957600080fd5b600160a060020a033316600090815260016020526040902054611882908363ffffffff6115ea16565b600160a060020a0333811660009081526001602052604080822093909355908516815220546118b7908363ffffffff61160316565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35b5b505050565b801515610f5657600080fd5b5b50565b815481835581811511610a8f57600083815260209020610a8f918101908301611950565b5b505050565b610dc591905b8082111561196a5760008155600101611956565b5090565b905600a165627a7a723058201903faf596718d0283e874dd664c283ad78e72ef1398fc0fa4fe33376495c6d10029

Swarm Source

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