ETH Price: $3,797.71 (+0.23%)
Gas: 5 Gwei

Token

OVCODE (OVC)
 

Overview

Max Total Supply

83,875,000 OVC

Holders

5,011 (0.00%)

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

OVCODE is an award winning verification engine. OVCODE is a patented technology that verifies authenticity, reliability, and integrity of data using Blockchain technology.

ICO Information

ICO Start Date : Nov 19, 2018  
ICO End Date : Dec 22, 2018
ICO Price  : $ 3.00
Country : Switzerland

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
OVC

Compiler Version
v0.4.23+commit.124ca40d

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-04-23
*/

pragma solidity ^0.4.22;

contract Ownable {
    address public owner;
    address public newOwner;

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

    function Ownable() public {
        owner = msg.sender;
        newOwner = address(0);
    }

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        require(address(0) != _newOwner);
        newOwner = _newOwner;
    }

    function acceptOwnership() public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, msg.sender);
        owner = msg.sender;
        newOwner = address(0);
    }
}
/** @author OVCode Switzerland AG */

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
contract SafeMath {
    /**
    * @dev constructor
    */
    function SafeMath() public {
    }

    function safeMul(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

    function safeDiv(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a / b;
        return c;
    }

    function safeSub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(a >= b);
        return a - b;
    }

    function safeAdd(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

/** @author OVCode Switzerland AG */

contract TokenERC20 is SafeMath {
    // Public variables of the token
    string public name;
    string public symbol;
    
    // 18 decimals is the strongly suggested default, avoid changing it
    uint8 public decimals = 18;
    uint256 public totalSupply;

    // This creates an array with all balances
    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;

    // This generates a public event on the blockchain that will notify clients
    event Transfer(address indexed from, address indexed to, uint256 value);
    event ReceiveApproval(address _from, uint256 _value, address _token);

    // This notifies clients about the amount burnt
    event Burn(address indexed from, uint256 value);

    /**
    * For the ERC20 short address attack.
    */
    modifier onlyPayloadSize(uint size) {
        assert(msg.data.length >= size + 4);
        _;
    }

    /**
    * @dev constructor
    */
    function TokenERC20() public {
    }

    /**
     * Internal transfer, only can be called by this contract
     */
    function _transfer(address _from, address _to, uint _value) internal {
        // Prevent transfer to 0x0 address. Use burn() instead
        require(_to != 0x0);
        // Check if the sender has enough
        require(balanceOf[_from] >= _value);
        // Check for overflows
        require(safeAdd(balanceOf[_to],_value) > balanceOf[_to]);
        // Save this for an assertion in the future
        uint previousBalances = safeAdd(balanceOf[_from],balanceOf[_to]);
        // Subtract from the sender
        balanceOf[_from] = safeSub(balanceOf[_from],_value);
        // Add the same to the recipient
        balanceOf[_to] = safeAdd(balanceOf[_to],_value);
        emit Transfer(_from, _to, _value);
        // Asserts are used to use static analysis to find bugs in your code. They should never fail
        assert(balanceOf[_from] + balanceOf[_to] == previousBalances);
    }

    /**
     * Transfer tokens
     *
     * Send `_value` tokens to `_to` from your account
     *
     * @param _to The address of the recipient
     * @param _value the amount to send
     */
    function transfer(address _to, uint256 _value) onlyPayloadSize(2 * 32) public {
        _transfer(msg.sender, _to, _value);
    }

    /**
     * Transfer tokens from other address
     *
     * Send `_value` tokens to `_to` in behalf of `_from`
     *
     * @param _from The address of the sender
     * @param _to The address of the recipient
     * @param _value the amount to send
     */
    function transferFrom(address _from, address _to, uint256 _value) onlyPayloadSize(32 * 3) public returns (bool success) {
        require(_value <= allowance[_from][msg.sender]);     // Check allowance
        allowance[_from][msg.sender] = safeSub(allowance[_from][msg.sender],_value);
        _transfer(_from, _to, _value);
        return true;
    }

    /**
     * Set allowance for other address
     *
     * Allows `_spender` to spend no more than `_value` tokens in your behalf
     *
     * @param _spender The address authorized to spend
     * @param _value the max amount they can spend
     */
    function approve(address _spender, uint256 _value) onlyPayloadSize(32 * 2) public returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        emit ReceiveApproval(msg.sender, _value, this);
        return true;
    }

    /**
     * Destroy tokens
     *
     * Remove `_value` tokens from the system irreversibly
     *
     * @param _value the amount of money to burn
     */
    function burn(uint256 _value) public returns (bool success) {
        require(balanceOf[msg.sender] >= _value);   // Check if the sender has enough
        balanceOf[msg.sender] = safeSub(balanceOf[msg.sender],_value);  // Subtract from the sender
        totalSupply = safeSub(totalSupply,_value);                      // Updates totalSupply
        emit Burn(msg.sender, _value);
        return true;
    }

    /**
     * Destroy tokens from other account
     *
     * Remove `_value` tokens from the system irreversibly on behalf of `_from`.
     *
     * @param _from the address of the sender
     * @param _value the amount of money to burn
     */
    function burnFrom(address _from, uint256 _value) onlyPayloadSize(32 * 2) public returns (bool success) {
        require(balanceOf[_from] >= _value);                // Check if the targeted balance is enough
        require(_value <= allowance[_from][msg.sender]);    // Check allowance
        balanceOf[_from] = safeSub(balanceOf[_from],_value);                         // Subtract from the targeted balance
        allowance[_from][msg.sender] = safeSub(allowance[_from][msg.sender],_value);             // Subtract from the sender's allowance
        totalSupply = safeSub(totalSupply,_value);                              // Update totalSupply
        emit Burn(_from, _value);
        return true;
    }
}

/** @author OVCode Switzerland AG */


contract OVC is Ownable, TokenERC20 {

    uint256 public ovcPerEther = 0;
    uint256 public minOVC;
    uint256 public constant ICO_START_TIME = 1526891400; // 05.21.2018 08:30:00 UTC
    uint256 public constant ICO_END_TIME = 1532131199; // 07.20.2018 11:59:59 UTC

    uint256 public totalOVCSold = 0;
    
    OVCLockAllocation public lockedAllocation;
    mapping (address => bool) public frozenAccount;
  
    /* This generates a public event on the blockchain that will notify clients */
    event FrozenFunds(address target, bool frozen);
    event ChangeOvcEtherConversion(address owner, uint256 amount);
    /* Initializes contract, Total Supply (83,875,000 OVC), name (OVCODE) and symbol (OVC), Min OVC Per Wallet
    // Assign the 30,000,000 of the total supply to the presale account
    // Assign the 10,500,000 of the total supply to the First ICO account
    // Assign the 11,000,000 of the total supply to the Second ICO account
    // Assign the 1,075,000 of the total supply to the bonus account
    // Assign the 2,450,000 of the total supply to the bounty account
    // Assign the 14,850,000 of the total supply to the first investor account
    // Assign the 4,000,000 of the total supply to the second investor account
    // Lock-in the 10,000,000 of the total supply to `OVCLockAllocation` contract within 36 months(unlock 1/3 every 12 months)
    */
    function OVC() public {

        totalSupply = safeMul(83875000,(10 ** uint256(decimals) ));  // Update total supply(83,875,000) with the decimal amount
        name = "OVCODE";  // Set the name for display purposes
        symbol = "OVC";   // Set the symbol for display purposes
        
        // 30,000,000 tokens for Presale 
        balanceOf[msg.sender] = safeMul(30000000,(10 ** uint256(decimals))); 

        // 11,000,000 ICO tokens for direct buy on the smart contract
        /* @notice Transfer this token to OVC Smart Contract Address 
          to enable the puchaser to buy directly on the contract */
        address icoAccount1 = 0xe5aB5D1Da8817bFB4b0Af44eFDcCC850a47E477a;
        balanceOf[icoAccount1] = safeMul(11000000,(10 ** uint256(decimals))); 

        // 10,500,000 ICO tokens for cash and btc purchaser
        /* @notice This account will be used to send token 
            to the purchaser that used BTC or CASH */
        address icoAccount2 = 0xfD382a7478ce3ddCd6a03F6c1848F31659753388;
        balanceOf[icoAccount2] = safeMul(10500000,(10 ** uint256(decimals))); 

        // 1,075,000 tokens for bonus, referrals and discounts
        address bonusAccount = 0xAde1Cf49c41919658132FF003C409fBcb2909472;
        balanceOf[bonusAccount] = safeMul(1075000,(10 ** uint256(decimals)));
        
        // 2,450,000 tokens for bounty
        address bountyAccount = 0xb690acb524BFBD968A91D614654aEEC5041597E0;
        balanceOf[bountyAccount] = safeMul(2450000,(10 ** uint256(decimals)));

        // 14,850,000 & 4,000,000 for our investors
        address investor1 = 0x17dC8dD84bD8DbAC168209360EDc1E8539D965DA;
        balanceOf[investor1] = safeMul(14850000,(10 ** uint256(decimals)));
        address investor2 = 0x5B2213eeFc9b7939D863085f7F2D9D1f3a771D5f;
        balanceOf[investor2] = safeMul(4000000,(10 ** uint256(decimals)));
        
        // Founder and Developer 10,000,000 of the total Supply / Lock-in within 36 months(unlock 1/3 every 12 months)
        uint256 totalAllocation = safeMul(10000000,(10 ** uint256(decimals)));
        
        // Initilize the `OVCLockAllocation` contract with the totalAllocation and 3 allocated wallets
        address firstAllocatedWallet = 0xD0427222388145a1A14F5FC4a376e8412C39c6a4;
        address secondAllocatedWallet = 0xe141c480274376A4eB499ACEeD84c47b5FDF4B39;
        address thirdAllocatedWallet = 0xD46811aBe15a53dd76b309E3e1f8f9C4550D3918;
        lockedAllocation = new OVCLockAllocation(totalAllocation,firstAllocatedWallet,secondAllocatedWallet,thirdAllocatedWallet);
        // Assign the 10,000,000 lock token to the `OVCLockAllocation` contract address
        balanceOf[lockedAllocation] = totalAllocation;

        // @notice Minimum token per wallet 10 OVC
        minOVC = safeMul(10,(10 ** uint256(decimals)));
    }
    
    /* @notice Allow user to send ether directly to the contract address */
    function () public payable {
        buyTokens();
    }
    
    /* @notice private function for buy token, enable the purchaser to 
    // send Ether directly to the contract address */
    function buyTokens() private {
        require(now > ICO_START_TIME );
        require(now < ICO_END_TIME );

        uint256 _value = safeMul(msg.value,ovcPerEther);
        uint256 futureBalance = safeAdd(balanceOf[msg.sender],_value);

        require(futureBalance >= minOVC);
        owner.transfer(address(this).balance);

        _transfer(this, msg.sender, _value);
        totalOVCSold = safeAdd(totalOVCSold,_value);
    }
    
     /* @notice Change the current amount of OVC token per Ether */
    function changeOVCPerEther(uint256 amount) onlyPayloadSize(1 * 32) onlyOwner public {
        require(amount >= 0);
        ovcPerEther = amount;
        emit ChangeOvcEtherConversion(msg.sender, amount);
    }

    /* @notice Transfer all unsold token to the contract owner */
    function transferUnsoldToken() onlyOwner public {
        require(now > ICO_END_TIME );
        require (balanceOf[this] > 0); 
        uint256 unsoldToken = balanceOf[this]; 
        _transfer(this, msg.sender, unsoldToken);
    }

    /* Internal transfer, only can be called by this contract */
    function _transfer(address _from, address _to, uint _value) internal {
        require (_to != 0x0);                               // Prevent transfer to 0x0 address. Use burn() instead
        require (balanceOf[_from] >= _value);               // Check if the sender has enough balance
        require (safeAdd(balanceOf[_to],_value) > balanceOf[_to]); // Check for overflows
        require(!frozenAccount[_from]);                     // Check if sender is frozen
        require(!frozenAccount[_to]);                       // Check if recipient is frozen
        balanceOf[_from] = safeSub(balanceOf[_from],_value);// Subtract from the sender
        balanceOf[_to] = safeAdd(balanceOf[_to],_value);// Add the same to the recipient
        emit Transfer(_from, _to, _value);
    }

    /// @notice Create `mintedAmount` tokens and send it to `target`
    /// @param target Address to receive the tokens
    /// @param mintedAmount the amount of tokens it will receive
    function mintToken(address target, uint256 mintedAmount) onlyPayloadSize(32 * 2) onlyOwner public {
        balanceOf[target] = safeAdd(balanceOf[target],mintedAmount);
        totalSupply = safeAdd(totalSupply,mintedAmount);
        emit Transfer(0, this, mintedAmount);
        emit Transfer(this, target, mintedAmount);
    }

    /// @notice `freeze? Prevent | Allow` `target` from sending & receiving tokens
    /// @param target Address to be frozen
    /// @param freeze either to freeze it or not
    function freezeAccount(address target, bool freeze) onlyOwner public {
        frozenAccount[target] = freeze;
        emit FrozenFunds(target, freeze);
    }
}

/** @author OVCode Switzerland AG */


contract OVCLockAllocation is SafeMath {

    uint256 public totalLockAllocated;
    OVC public ovc;
    /**
    * For the ERC20 short address attack.
    */
    modifier onlyPayloadSize(uint size) {
        assert(msg.data.length >= size + 4);
        _;
    }

    struct Allocations {
        uint256 allocated;
        uint256 unlockedAt;
        bool released;
    }

    mapping (address => Allocations) public allocations;

    /* Initialize the total allocated OVC token */
    // Initialize the 3 wallet address, allocated amount and date unlock
    // @param `totalAllocated` Total allocated token from  `OVC` contract
    // @param `firstAllocatedWallet` wallet address that allowed to unlock the first 1/3 allocated token
    // @param `secondAllocatedWallet` wallet address that allowed to unlock the second 1/3 allocated token
    // @param `thirdAllocatedWallet` wallet address that allowed to unlock the third 1/3 allocated token
    function OVCLockAllocation(uint256 totalAllocated, address firstAllocatedWallet, address secondAllocatedWallet, address thirdAllocatedWallet) public {
        ovc = OVC(msg.sender);
        totalLockAllocated = totalAllocated;
        Allocations memory allocation;

        // Initialize the first allocation wallet address and date unlockedAt
        // Unlock 1/3 or 33% of the token allocated after 12 months
        allocation.allocated = safeDiv(safeMul(totalLockAllocated, 33),100);
        allocation.unlockedAt = safeAdd(now,(safeMul(12,30 days)));
        allocation.released = false;
        allocations[firstAllocatedWallet] = allocation;
        

        // Initialize the second allocation wallet address and date unlockedAt
        // Unlock 1/3 or 33% of the token allocated after 24 months
        allocation.allocated = safeDiv(safeMul(totalLockAllocated, 33),100);
        allocation.unlockedAt = safeAdd(now,(safeMul(24,30 days)));
        allocation.released = false;
        allocations[secondAllocatedWallet] = allocation;

        // Initialize the third allocation wallet address and date unlockedAt
        // Unlock last or 34% of the token allocated after 36 months
        allocation.allocated = safeDiv(safeMul(totalLockAllocated, 34),100);
        allocation.unlockedAt = safeAdd(now,(safeMul(36,30 days))); 
        allocation.released = false;
        allocations[thirdAllocatedWallet] = allocation;
    }
    
        /**
    * @notice called by allocated address to release the token
    */
    function releaseTokens() public {
        Allocations memory allocation;
        allocation = allocations[msg.sender];
        require(allocation.released == false);
        require(allocation.allocated > 0);
        require(allocation.unlockedAt > 0);
        require(now >= allocation.unlockedAt);
            
        uint256 allocated = allocation.allocated;
        ovc.transfer(msg.sender, allocated);

        allocation.allocated = 0;
        allocation.unlockedAt = 0;
        allocation.released = true;
        allocations[msg.sender] = allocation;
    }
} 

/** @author OVCode Switzerland AG */

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"changeOVCPerEther","outputs":[],"payable":false,"stateMutability":"nonpayable","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":true,"inputs":[],"name":"ICO_END_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalOVCSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ICO_START_TIME","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":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minOVC","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ovcPerEther","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"mintedAmount","type":"uint256"}],"name":"mintToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","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":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"transferUnsoldToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lockedAllocation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"ChangeOvcEtherConversion","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":false,"name":"_from","type":"address"},{"indexed":false,"name":"_value","type":"uint256"},{"indexed":false,"name":"_token","type":"address"}],"name":"ReceiveApproval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"oldOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040526012600460006101000a81548160ff021916908360ff16021790555060006008556000600a553480156200003757600080fd5b50600080600080600080600080600080336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000fd6304ffd4b8600460009054906101000a900460ff1660ff16600a0a6200079a640100000000026401000000009004565b6005819055506040805190810160405280600681526020017f4f56434f444500000000000000000000000000000000000000000000000000008152506002908051906020019062000150929190620007d0565b506040805190810160405280600381526020017f4f56430000000000000000000000000000000000000000000000000000000000815250600390805190602001906200019e929190620007d0565b50620001d36301c9c380600460009054906101000a900460ff1660ff16600a0a6200079a640100000000026401000000009004565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073e5ab5d1da8817bfb4b0af44efdccc850a47e477a99506200026062a7d8c0600460009054906101000a900460ff1660ff16600a0a6200079a640100000000026401000000009004565b600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073fd382a7478ce3ddcd6a03f6c1848f316597533889850620002ed62a037a0600460009054906101000a900460ff1660ff16600a0a6200079a640100000000026401000000009004565b600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073ade1cf49c41919658132ff003c409fbcb290947297506200037a62106738600460009054906101000a900460ff1660ff16600a0a6200079a640100000000026401000000009004565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073b690acb524bfbd968a91d614654aeec5041597e096506200040762256250600460009054906101000a900460ff1660ff16600a0a6200079a640100000000026401000000009004565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507317dc8dd84bd8dbac168209360edc1e8539d965da95506200049462e297d0600460009054906101000a900460ff1660ff16600a0a6200079a640100000000026401000000009004565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550735b2213eefc9b7939d863085f7f2d9d1f3a771d5f945062000521623d0900600460009054906101000a900460ff1660ff16600a0a6200079a640100000000026401000000009004565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200059762989680600460009054906101000a900460ff1660ff16600a0a6200079a640100000000026401000000009004565b935073d0427222388145a1a14f5fc4a376e8412c39c6a4925073e141c480274376a4eb499aceed84c47b5fdf4b39915073d46811abe15a53dd76b309e3e1f8f9c4550d3918905083838383620005ec62000857565b808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050604051809103906000f080158015620006ac573d6000803e3d6000fd5b50600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360066000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000784600a600460009054906101000a900460ff1660ff16600a0a6200079a640100000000026401000000009004565b6009819055505050505050505050505062000890565b60008082840290506000841480620007bd5750828482811515620007ba57fe5b04145b1515620007c657fe5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200081357805160ff191683800117855562000844565b8280016001018555821562000844579182015b828111156200084357825182559160200191906001019062000826565b5b50905062000853919062000868565b5090565b6040516108ce806200276183390190565b6200088d91905b80821115620008895760008160009055506001016200086f565b5090565b90565b611ec180620008a06000396000f300608060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ecaca51461015e57806306fdde031461018b578063095ea7b31461021b5780630a87557c1461028057806313844e60146102ab57806318160ddd146102d65780631b4cd2de1461030157806323b872dd1461032c578063313ce567146103b157806342966c68146103e257806344431e52146104275780636b3bc4b61461045257806370a082311461047d57806379ba5097146104d457806379c65068146104eb57806379cc6790146105385780638da5cb5b1461059d57806395d89b41146105f4578063a9059cbb14610684578063ac8aea24146106d1578063b414d4b6146106e8578063d4ee1d9014610743578063db0834cf1461079a578063dd62ed3e146107f1578063e724529c14610868578063f2fde38b146108b7575b61015c6108fa565b005b34801561016a57600080fd5b5061018960048036038101908080359060200190929190505050610a2b565b005b34801561019757600080fd5b506101a0610b21565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e05780820151818401526020810190506101c5565b50505050905090810190601f16801561020d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022757600080fd5b50610266600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bbf565b604051808215151515815260200191505060405180910390f35b34801561028c57600080fd5b50610295610d01565b6040518082815260200191505060405180910390f35b3480156102b757600080fd5b506102c0610d09565b6040518082815260200191505060405180910390f35b3480156102e257600080fd5b506102eb610d0f565b6040518082815260200191505060405180910390f35b34801561030d57600080fd5b50610316610d15565b6040518082815260200191505060405180910390f35b34801561033857600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d1d565b604051808215151515815260200191505060405180910390f35b3480156103bd57600080fd5b506103c6610edc565b604051808260ff1660ff16815260200191505060405180910390f35b3480156103ee57600080fd5b5061040d60048036038101908080359060200190929190505050610eef565b604051808215151515815260200191505060405180910390f35b34801561043357600080fd5b5061043c611034565b6040518082815260200191505060405180910390f35b34801561045e57600080fd5b5061046761103a565b6040518082815260200191505060405180910390f35b34801561048957600080fd5b506104be600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611040565b6040518082815260200191505060405180910390f35b3480156104e057600080fd5b506104e9611058565b005b3480156104f757600080fd5b50610536600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111b3565b005b34801561054457600080fd5b50610583600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061137b565b604051808215151515815260200191505060405180910390f35b3480156105a957600080fd5b506105b2611668565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060057600080fd5b5061060961168d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064957808201518184015260208101905061062e565b50505050905090810190601f1680156106765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561069057600080fd5b506106cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061172b565b005b3480156106dd57600080fd5b506106e6611750565b005b3480156106f457600080fd5b50610729600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061185d565b604051808215151515815260200191505060405180910390f35b34801561074f57600080fd5b5061075861187d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107a657600080fd5b506107af6118a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107fd57600080fd5b50610852600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118c9565b6040518082815260200191505060405180910390f35b34801561087457600080fd5b506108b5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506118ee565b005b3480156108c357600080fd5b506108f8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a13565b005b600080635b0283884211151561090f57600080fd5b635b52777f4210151561092157600080fd5b61092d34600854611aee565b9150610978600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611b21565b9050600954811015151561098b57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610a09573d6000803e3d6000fd5b50610a15303384611b3f565b610a21600a5483611b21565b600a819055505050565b602060048101600036905010151515610a4057fe5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a9b57600080fd5b60008210151515610aab57600080fd5b816008819055507fb0cc770b33c2fb531f540f30ab25c6a4e02126c848430bf37b947da5a66a4eaf3383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bb75780601f10610b8c57610100808354040283529160200191610bb7565b820191906000526020600020905b815481529060010190602001808311610b9a57829003601f168201915b505050505081565b6000604060048101600036905010151515610bd657fe5b82600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f098d215dbf4904f38cce693a04004ed58db6d54491b91c083e277144ce38b4ee338430604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1600191505092915050565b635b52777f81565b600a5481565b60055481565b635b02838881565b6000606060048101600036905010151515610d3457fe5b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311151515610dbf57600080fd5b610e45600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611e7c565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ed0858585611b3f565b60019150509392505050565b600460009054906101000a900460ff1681565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610f3f57600080fd5b610f88600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e7c565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fd760055483611e7c565b6005819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b60095481565b60085481565b60066020528060005260406000206000915090505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110b457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6040600481016000369050101515156111c857fe5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561122357600080fd5b61126c600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611b21565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112bb60055483611b21565b6005819055503073ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b600060406004810160003690501015151561139257fe5b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156113e057600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054831115151561146b57600080fd5b6114b4600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611e7c565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061157d600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611e7c565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061160960055484611e7c565b6005819055508373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5846040518082815260200191505060405180910390a2600191505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117235780601f106116f857610100808354040283529160200191611723565b820191906000526020600020905b81548152906001019060200180831161170657829003601f168201915b505050505081565b60406004810160003690501015151561174057fe5b61174b338484611b3f565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117ad57600080fd5b635b52777f421115156117bf57600080fd5b6000600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561180d57600080fd5b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061185a303383611b3f565b50565b600c6020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561194957600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a6e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614151515611aaa57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082840290506000841480611b0f5750828482811515611b0c57fe5b04145b1515611b1757fe5b8091505092915050565b6000808284019050838110151515611b3557fe5b8091505092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1614151515611b6557600080fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515611bb357600080fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3c600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611b21565b111515611c4857600080fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611ca157600080fd5b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611cfa57600080fd5b611d43600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611e7c565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dcf600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611b21565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000818310151515611e8a57fe5b8183039050929150505600a165627a7a7230582056ca30f09db3852abd13bd07c10599eadd211732f16f404601246dac4e954fd90029608060405234801561001057600080fd5b506040516080806108ce83398101806040528101908080519060200190929190805190602001909291908051906020019092919080519060200190929190505050610059610423565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550846000819055506100d66100c060005460216103b7640100000000026401000000009004565b60646103ea640100000000026401000000009004565b81600001818152505061011442610100600c62278d006103b7640100000000026401000000009004565b610405640100000000026401000000009004565b816020018181525050600081604001901515908115158152505080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050506101da6101c460005460216103b7640100000000026401000000009004565b60646103ea640100000000026401000000009004565b81600001818152505061021842610204601862278d006103b7640100000000026401000000009004565b610405640100000000026401000000009004565b816020018181525050600081604001901515908115158152505080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050506102de6102c860005460226103b7640100000000026401000000009004565b60646103ea640100000000026401000000009004565b81600001818152505061031c42610308602462278d006103b7640100000000026401000000009004565b610405640100000000026401000000009004565b816020018181525050600081604001901515908115158152505080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050505050505050610447565b600080828402905060008414806103d857508284828115156103d557fe5b04145b15156103e057fe5b8091505092915050565b60008082848115156103f857fe5b0490508091505092915050565b600080828401905083811015151561041957fe5b8091505092915050565b60606040519081016040528060008152602001600081526020016000151581525090565b610478806104566000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806329606c5a1461006757806352a9039c146100be578063620d875014610127578063a96f866814610152575b600080fd5b34801561007357600080fd5b5061007c610169565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100ca57600080fd5b506100ff600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061018f565b6040518084815260200183815260200182151515158152602001935050505060405180910390f35b34801561013357600080fd5b5061013c6101c6565b6040518082815260200191505060405180910390f35b34801561015e57600080fd5b506101676101cc565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900460ff16905083565b60005481565b6101d4610428565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206060604051908101604052908160008201548152602001600182015481526020016002820160009054906101000a900460ff1615151515815250509150600015158260400151151514151561026957600080fd5b6000826000015111151561027c57600080fd5b6000826020015111151561028f57600080fd5b816020015142101515156102a257600080fd5b81600001519050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561036e57600080fd5b505af1158015610382573d6000803e3d6000fd5b5050505060008260000181815250506000826020018181525050600182604001901515908115158152505081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050505050565b606060405190810160405280600081526020016000815260200160001515815250905600a165627a7a723058207834c36707f738976c86ec432324fce45b5acb64267a6ccd54aea58403f44afe0029

Deployed Bytecode

0x608060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ecaca51461015e57806306fdde031461018b578063095ea7b31461021b5780630a87557c1461028057806313844e60146102ab57806318160ddd146102d65780631b4cd2de1461030157806323b872dd1461032c578063313ce567146103b157806342966c68146103e257806344431e52146104275780636b3bc4b61461045257806370a082311461047d57806379ba5097146104d457806379c65068146104eb57806379cc6790146105385780638da5cb5b1461059d57806395d89b41146105f4578063a9059cbb14610684578063ac8aea24146106d1578063b414d4b6146106e8578063d4ee1d9014610743578063db0834cf1461079a578063dd62ed3e146107f1578063e724529c14610868578063f2fde38b146108b7575b61015c6108fa565b005b34801561016a57600080fd5b5061018960048036038101908080359060200190929190505050610a2b565b005b34801561019757600080fd5b506101a0610b21565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e05780820151818401526020810190506101c5565b50505050905090810190601f16801561020d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022757600080fd5b50610266600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bbf565b604051808215151515815260200191505060405180910390f35b34801561028c57600080fd5b50610295610d01565b6040518082815260200191505060405180910390f35b3480156102b757600080fd5b506102c0610d09565b6040518082815260200191505060405180910390f35b3480156102e257600080fd5b506102eb610d0f565b6040518082815260200191505060405180910390f35b34801561030d57600080fd5b50610316610d15565b6040518082815260200191505060405180910390f35b34801561033857600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d1d565b604051808215151515815260200191505060405180910390f35b3480156103bd57600080fd5b506103c6610edc565b604051808260ff1660ff16815260200191505060405180910390f35b3480156103ee57600080fd5b5061040d60048036038101908080359060200190929190505050610eef565b604051808215151515815260200191505060405180910390f35b34801561043357600080fd5b5061043c611034565b6040518082815260200191505060405180910390f35b34801561045e57600080fd5b5061046761103a565b6040518082815260200191505060405180910390f35b34801561048957600080fd5b506104be600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611040565b6040518082815260200191505060405180910390f35b3480156104e057600080fd5b506104e9611058565b005b3480156104f757600080fd5b50610536600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111b3565b005b34801561054457600080fd5b50610583600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061137b565b604051808215151515815260200191505060405180910390f35b3480156105a957600080fd5b506105b2611668565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060057600080fd5b5061060961168d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064957808201518184015260208101905061062e565b50505050905090810190601f1680156106765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561069057600080fd5b506106cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061172b565b005b3480156106dd57600080fd5b506106e6611750565b005b3480156106f457600080fd5b50610729600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061185d565b604051808215151515815260200191505060405180910390f35b34801561074f57600080fd5b5061075861187d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107a657600080fd5b506107af6118a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107fd57600080fd5b50610852600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118c9565b6040518082815260200191505060405180910390f35b34801561087457600080fd5b506108b5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506118ee565b005b3480156108c357600080fd5b506108f8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a13565b005b600080635b0283884211151561090f57600080fd5b635b52777f4210151561092157600080fd5b61092d34600854611aee565b9150610978600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611b21565b9050600954811015151561098b57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015610a09573d6000803e3d6000fd5b50610a15303384611b3f565b610a21600a5483611b21565b600a819055505050565b602060048101600036905010151515610a4057fe5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a9b57600080fd5b60008210151515610aab57600080fd5b816008819055507fb0cc770b33c2fb531f540f30ab25c6a4e02126c848430bf37b947da5a66a4eaf3383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bb75780601f10610b8c57610100808354040283529160200191610bb7565b820191906000526020600020905b815481529060010190602001808311610b9a57829003601f168201915b505050505081565b6000604060048101600036905010151515610bd657fe5b82600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f098d215dbf4904f38cce693a04004ed58db6d54491b91c083e277144ce38b4ee338430604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1600191505092915050565b635b52777f81565b600a5481565b60055481565b635b02838881565b6000606060048101600036905010151515610d3457fe5b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311151515610dbf57600080fd5b610e45600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611e7c565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ed0858585611b3f565b60019150509392505050565b600460009054906101000a900460ff1681565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610f3f57600080fd5b610f88600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e7c565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fd760055483611e7c565b6005819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b60095481565b60085481565b60066020528060005260406000206000915090505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110b457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6040600481016000369050101515156111c857fe5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561122357600080fd5b61126c600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611b21565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112bb60055483611b21565b6005819055503073ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a38273ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b600060406004810160003690501015151561139257fe5b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156113e057600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054831115151561146b57600080fd5b6114b4600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611e7c565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061157d600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611e7c565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061160960055484611e7c565b6005819055508373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5846040518082815260200191505060405180910390a2600191505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117235780601f106116f857610100808354040283529160200191611723565b820191906000526020600020905b81548152906001019060200180831161170657829003601f168201915b505050505081565b60406004810160003690501015151561174057fe5b61174b338484611b3f565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117ad57600080fd5b635b52777f421115156117bf57600080fd5b6000600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561180d57600080fd5b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061185a303383611b3f565b50565b600c6020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561194957600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a6e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614151515611aaa57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008082840290506000841480611b0f5750828482811515611b0c57fe5b04145b1515611b1757fe5b8091505092915050565b6000808284019050838110151515611b3557fe5b8091505092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1614151515611b6557600080fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515611bb357600080fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3c600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611b21565b111515611c4857600080fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611ca157600080fd5b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611cfa57600080fd5b611d43600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611e7c565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dcf600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611b21565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000818310151515611e8a57fe5b8183039050929150505600a165627a7a7230582056ca30f09db3852abd13bd07c10599eadd211732f16f404601246dac4e954fd90029

Swarm Source

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