ETH Price: $2,666.34 (+1.91%)

Token

Urbit Token (URB)
 

Overview

Max Total Supply

276,000,000 URB

Holders

200

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,450.45045045 URB

Value
$0.00
0x3c2dc10fc3180aabf5effdd7a2aa53c31fdfdd57
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Urbit Data is creating the largest online real estate BigData-Blockchain platform, to offer the best services for rental, purchase, sale and property price valuations.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
UrbitToken

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity ^0.4.21;

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

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

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    if (a == 0) {
      return 0;
    }
    c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    // uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return a / b;
  }

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a + b;
    assert(c >= a);
    return c;
  }
}

/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  uint256 totalSupply_;

  /**
  * @dev total number of tokens in existence
  */
  function totalSupply() public view returns (uint256) {
    return totalSupply_;
  }

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256) {
    return balances[_owner];
  }

}

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {

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


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

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

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public view returns (uint256) {
    return allowed[_owner][_spender];
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}

/**
 * @title Burnable Token
 * @dev Token that can be irreversibly burned (destroyed).
 */
contract BurnableToken is BasicToken {

  event Burn(address indexed burner, uint256 value);

  /**
   * @dev Burns a specific amount of tokens.
   * @param _value The amount of token to be burned.
   */
  function burn(uint256 _value) public {
    _burn(msg.sender, _value);
  }

  function _burn(address _who, uint256 _value) internal {
    require(_value <= balances[_who]);
    // no need to require value <= totalSupply, since that would imply the
    // sender's balance is greater than the totalSupply, which *should* be an assertion failure

    balances[_who] = balances[_who].sub(_value);
    totalSupply_ = totalSupply_.sub(_value);
    emit Burn(_who, _value);
    emit Transfer(_who, address(0), _value);
  }
}

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
  function safeTransfer(ERC20Basic token, address to, uint256 value) internal {
    assert(token.transfer(to, value));
  }

  function safeTransferFrom(
    ERC20 token,
    address from,
    address to,
    uint256 value
  )
    internal
  {
    assert(token.transferFrom(from, to, value));
  }

  function safeApprove(ERC20 token, address spender, uint256 value) internal {
    assert(token.approve(spender, value));
  }
}

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


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


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    emit OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

/* solium-disable security/no-block-members */









/**
 * @title TokenVesting
 * @dev A token holder contract that can release its token balance gradually like a
 * typical vesting scheme, with a cliff and vesting period. Optionally revocable by the
 * owner.
 */
contract TokenVesting is Ownable {
  using SafeMath for uint256;
  using SafeERC20 for ERC20Basic;

  event Released(uint256 amount);
  event Revoked();

  // beneficiary of tokens after they are released
  address public beneficiary;

  uint256 public cliff;
  uint256 public start;
  uint256 public duration;

  bool public revocable;

  mapping (address => uint256) public released;
  mapping (address => bool) public revoked;

  /**
   * @dev Creates a vesting contract that vests its balance of any ERC20 token to the
   * _beneficiary, gradually in a linear fashion until _start + _duration. By then all
   * of the balance will have vested.
   * @param _beneficiary address of the beneficiary to whom vested tokens are transferred
   * @param _cliff duration in seconds of the cliff in which tokens will begin to vest
   * @param _duration duration in seconds of the period in which the tokens will vest
   * @param _revocable whether the vesting is revocable or not
   */
  function TokenVesting(
    address _beneficiary,
    uint256 _start,
    uint256 _cliff,
    uint256 _duration,
    bool _revocable
  )
    public
  {
    require(_beneficiary != address(0));
    require(_cliff <= _duration);

    beneficiary = _beneficiary;
    revocable = _revocable;
    duration = _duration;
    cliff = _start.add(_cliff);
    start = _start;
  }

  /**
   * @notice Transfers vested tokens to beneficiary.
   * @param token ERC20 token which is being vested
   */
  function release(ERC20Basic token) public {
    uint256 unreleased = releasableAmount(token);

    require(unreleased > 0);

    released[token] = released[token].add(unreleased);

    token.safeTransfer(beneficiary, unreleased);

    emit Released(unreleased);
  }

  /**
   * @notice Allows the owner to revoke the vesting. Tokens already vested
   * remain in the contract, the rest are returned to the owner.
   * @param token ERC20 token which is being vested
   */
  function revoke(ERC20Basic token) public onlyOwner {
    require(revocable);
    require(!revoked[token]);

    uint256 balance = token.balanceOf(this);

    uint256 unreleased = releasableAmount(token);
    uint256 refund = balance.sub(unreleased);

    revoked[token] = true;

    token.safeTransfer(owner, refund);

    emit Revoked();
  }

  /**
   * @dev Calculates the amount that has already vested but hasn't been released yet.
   * @param token ERC20 token which is being vested
   */
  function releasableAmount(ERC20Basic token) public view returns (uint256) {
    return vestedAmount(token).sub(released[token]);
  }

  /**
   * @dev Calculates the amount that has already vested.
   * @param token ERC20 token which is being vested
   */
  function vestedAmount(ERC20Basic token) public view returns (uint256) {
    uint256 currentBalance = token.balanceOf(this);
    uint256 totalBalance = currentBalance.add(released[token]);

    if (block.timestamp < cliff) {
      return 0;
    } else if (block.timestamp >= start.add(duration) || revoked[token]) {
      return totalBalance;
    } else {
      return totalBalance.mul(block.timestamp.sub(start)).div(duration);
    }
  }
}

/**
 * @title PresaleTokenVesting
 * @dev PresaleTokenVesting allows for vesting periods which begin at
 * the time the token sale ends.
 */
contract PresaleTokenVesting is TokenVesting {

    function PresaleTokenVesting(address _beneficiary, uint256 _duration) TokenVesting(_beneficiary, 0, _duration, _duration, false) public {
    }

    function vestedAmount(ERC20Basic token) public view returns (uint256) {
        UrbitToken urbit = UrbitToken(token); 
        if (!urbit.saleClosed()) {
            return(0);
        } else {
            uint256 currentBalance = token.balanceOf(this);
            uint256 totalBalance = currentBalance.add(released[token]);
            uint256 saleClosedTime = urbit.saleClosedTimestamp();
            if (block.timestamp >= duration.add(saleClosedTime)) { // solium-disable-line security/no-block-members
                return totalBalance;
            } else {
                return totalBalance.mul(block.timestamp.sub(saleClosedTime)).div(duration); // solium-disable-line security/no-block-members

            }
        }
    }
}

/**
 * @title TokenVault
 * @dev TokenVault is a token holder contract that will allow a
 * beneficiary to spend the tokens from some function of a specified ERC20 token
 */
contract TokenVault {
    using SafeERC20 for ERC20;

    // ERC20 token contract being held
    ERC20 public token;

    function TokenVault(ERC20 _token) public {
        token = _token;
    }

    /**
     * @notice Allow the token itself to send tokens
     * using transferFrom().
     */
    function fillUpAllowance() public {
        uint256 amount = token.balanceOf(this);
        require(amount > 0);

        token.approve(token, amount);
    }
}

/**
 * @title UrbitToken
 * @dev UrbitToken is a contract for the Urbit token sale, creating the
 * tokens and managing the vaults.
 */
contract UrbitToken is BurnableToken, StandardToken {
    string public constant name = "Urbit Token"; // solium-disable-line uppercase
    string public constant symbol = "URB"; // solium-disable-line uppercase
    uint8 public constant decimals = 18; // solium-disable-line uppercase
    uint256 public constant MAGNITUDE = 10**uint256(decimals);

    /// Maximum tokens to be allocated (600 million)
    uint256 public constant HARD_CAP = 600000000 * MAGNITUDE;

    /// This address is used to manage the admin functions and allocate vested tokens
    address public urbitAdminAddress;

    /// This address is used to keep the tokens for sale
    address public saleTokensAddress;

    /// This vault is used to keep the bounty and marketing tokens
    TokenVault public bountyTokensVault;

    /// This vault is used to keep the team and founders tokens
    TokenVault public urbitTeamTokensVault;

    /// This vault is used to keep the advisors tokens
    TokenVault public advisorsTokensVault;

    /// This vault is used to keep the rewards tokens
    TokenVault public rewardsTokensVault;

    /// This vault is used to keep the retained tokens
    TokenVault public retainedTokensVault;

    /// Store the vesting contracts addresses
    mapping(address => address[]) public vestingsOf;

    /// when the token sale is closed, the trading is open
    uint256 public saleClosedTimestamp = 0;

    /// Only allowed to execute before the token sale is closed
    modifier beforeSaleClosed {
        require(!saleClosed());
        _;
    }

    /// Limiting functions to the admins of the token only
    modifier onlyAdmin {
        require(senderIsAdmin());
        _;
    }

    function UrbitToken(
        address _urbitAdminAddress,
        address _saleTokensAddress) public
    {
        require(_urbitAdminAddress != address(0));
        require(_saleTokensAddress != address(0));

        urbitAdminAddress = _urbitAdminAddress;
        saleTokensAddress = _saleTokensAddress;
    }

    /// @dev allows the admin to assign a new admin
    function changeAdmin(address _newUrbitAdminAddress) external onlyAdmin {
        require(_newUrbitAdminAddress != address(0));
        urbitAdminAddress = _newUrbitAdminAddress;
    }

    /// @dev creates the tokens needed for sale
    function createSaleTokens() external onlyAdmin beforeSaleClosed {
        require(bountyTokensVault == address(0));

        /// Maximum tokens to be allocated on the sale
        /// 252,000,000 URB
        createTokens(252000000, saleTokensAddress);

        /// Bounty tokens - 24M URB
        bountyTokensVault = createTokenVault(24000000);
    }

    /// @dev Close the token sale
    function closeSale() external onlyAdmin beforeSaleClosed {
        createAwardTokens();
        saleClosedTimestamp = block.timestamp; // solium-disable-line security/no-block-members
    }

    /// @dev Once the token sale is closed and tokens are distributed,
    /// burn the remaining unsold, undistributed tokens
    function burnUnsoldTokens() external onlyAdmin {
        require(saleClosed());
        _burn(saleTokensAddress, balances[saleTokensAddress]);
        _burn(bountyTokensVault, balances[bountyTokensVault]);
    }

    function lockBountyTokens(uint256 _tokensAmount, address _beneficiary, uint256 _duration) external beforeSaleClosed {
        require(msg.sender == saleTokensAddress || senderIsAdmin());
        _presaleLock(bountyTokensVault, _tokensAmount, _beneficiary, _duration);
    }

    /// @dev Shorter version of vest tokens (lock for a single whole period)
    function lockTokens(address _fromVault, uint256 _tokensAmount, address _beneficiary, uint256 _unlockTime) external onlyAdmin {
        this.vestTokens(_fromVault, _tokensAmount, _beneficiary, _unlockTime, 0, 0, false); // solium-disable-line arg-overflow
    }

    /// @dev Vest tokens
    function vestTokens(
        address _fromVault,
        uint256 _tokensAmount,
        address _beneficiary,
        uint256 _start,
        uint256 _cliff,
        uint256 _duration,
        bool _revocable)
        external onlyAdmin
    {
        TokenVesting vesting = new TokenVesting(_beneficiary, _start, _cliff, _duration, _revocable);
        vestingsOf[_beneficiary].push(address(vesting));

        require(this.transferFrom(_fromVault, vesting, _tokensAmount));
    }

    /// @dev releases vested tokens for the caller's own address
    function releaseVestedTokens() external {
        this.releaseVestedTokensFor(msg.sender);
    }

    /// @dev releases vested tokens for the specified address.
    /// Can be called by any account for any address.
    function releaseVestedTokensFor(address _owner) external {
        ERC20Basic token = ERC20Basic(address(this));
        for (uint i = 0; i < vestingsOf[_owner].length; i++) {
            TokenVesting tv = TokenVesting(vestingsOf[_owner][i]);
            if (tv.releasableAmount(token) > 0) {
                tv.release(token);
            }
        }
    }

    /// @dev returns whether the sender is admin (or the contract itself)
    function senderIsAdmin() public view returns (bool) {
        return (msg.sender == urbitAdminAddress || msg.sender == address(this));
    }

    /// @dev The sale is closed when the saleClosedTimestamp is set.
    function saleClosed() public view returns (bool) {
        return (saleClosedTimestamp > 0);
    }

    /// @dev check the locked balance for an address
    function lockedBalanceOf(address _owner) public view returns (uint256) {
        uint256 result = 0;
        for (uint i = 0; i < vestingsOf[_owner].length; i++) {
            result += balances[vestingsOf[_owner][i]];
        }
        return result;
    }

    /// @dev check the locked but releasable balance for an address
    function releasableBalanceOf(address _owner) public view returns (uint256) {
        uint256 result = 0;
        for (uint i = 0; i < vestingsOf[_owner].length; i++) {
            result += TokenVesting(vestingsOf[_owner][i]).releasableAmount(this);
        }
        return result;
    }

    /// @dev get the number of TokenVesting contracts for an address
    function vestingCountOf(address _owner) public view returns (uint) {
        return vestingsOf[_owner].length;
    }

    /// @dev get the specified TokenVesting contract address for an address
    function vestingOf(address _owner, uint _index) public view returns (address) {
        return vestingsOf[_owner][_index];
    }

    /// @dev Trading is limited before the sale is closed
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        if (saleClosed() || msg.sender == saleTokensAddress || senderIsAdmin()) {
            return super.transferFrom(_from, _to, _value);
        }
        return false;
    }

    /// @dev Trading is limited before the sale is closed
    function transfer(address _to, uint256 _value) public returns (bool) {
        if (saleClosed() || msg.sender == saleTokensAddress || senderIsAdmin()) {
            return super.transfer(_to, _value);
        }
        return false;
    }

    /// @dev Grant tokens which begin vesting upon close of sale.
    function _presaleLock(TokenVault _fromVault, uint256 _tokensAmount, address _beneficiary, uint256 _duration) internal {
        PresaleTokenVesting vesting = new PresaleTokenVesting(_beneficiary, _duration);
        vestingsOf[_beneficiary].push(address(vesting));

        require(this.transferFrom(_fromVault, vesting, _tokensAmount));
    }

    // @dev create specified number of toekns and transfer to destination
    function createTokens(uint32 count, address destination) internal onlyAdmin {
        uint256 tokens = count * MAGNITUDE;
        totalSupply_ = totalSupply_.add(tokens);
        balances[destination] = tokens;
        emit Transfer(0x0, destination, tokens);
    }

    /// @dev Create a TokenVault and fill with the specified newly minted tokens
    function createTokenVault(uint32 count) internal onlyAdmin returns (TokenVault) {
        TokenVault tokenVault = new TokenVault(ERC20(this));
        createTokens(count, tokenVault);
        tokenVault.fillUpAllowance();
        return tokenVault;
    }

    /// @dev Creates the tokens awarded after the sale is closed
    function createAwardTokens() internal onlyAdmin {
        /// Team tokens - 30M URB
        urbitTeamTokensVault = createTokenVault(30000000);

        /// Advisors tokens - 24M URB
        advisorsTokensVault = createTokenVault(24000000);

        /// Rewards tokens - 150M URB
        rewardsTokensVault = createTokenVault(150000000);

        /// Retained tokens - 120M URB
        retainedTokensVault = createTokenVault(120000000);
    }
}

Contract Security Audit

Contract ABI

[{"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":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_fromVault","type":"address"},{"name":"_tokensAmount","type":"uint256"},{"name":"_beneficiary","type":"address"},{"name":"_unlockTime","type":"uint256"}],"name":"lockTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"vestingCountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"urbitTeamTokensVault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"HARD_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"saleClosedTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"releasableBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"releaseVestedTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokensAmount","type":"uint256"},{"name":"_beneficiary","type":"address"},{"name":"_duration","type":"uint256"}],"name":"lockBountyTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"lockedBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"retainedTokensVault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"senderIsAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAGNITUDE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_index","type":"uint256"}],"name":"vestingOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newUrbitAdminAddress","type":"address"}],"name":"changeAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"burnUnsoldTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","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":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"createSaleTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardsTokensVault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleTokensAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_fromVault","type":"address"},{"name":"_tokensAmount","type":"uint256"},{"name":"_beneficiary","type":"address"},{"name":"_start","type":"uint256"},{"name":"_cliff","type":"uint256"},{"name":"_duration","type":"uint256"},{"name":"_revocable","type":"bool"}],"name":"vestTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"releaseVestedTokensFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bountyTokensVault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"vestingsOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"urbitAdminAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"closeSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"advisorsTokensVault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_urbitAdminAddress","type":"address"},{"name":"_saleTokensAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","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"}]

60806040526000600b5534801561001557600080fd5b5060405160408061306e833981016040528051602090910151600160a060020a038216151561004357600080fd5b600160a060020a038116151561005857600080fd5b60038054600160a060020a03938416600160a060020a03199182161790915560048054929093169116179055612fdb806100936000396000f300608060405260043610620001e55763ffffffff60e060020a60003504166306fdde038114620001ea578063095ea7b3146200027a5780630f98a9cc14620002b557806318160ddd14620002e857806323b872dd1462000312578063257341a8146200033f5780632740509d1462000363578063313ce56714620003975780633a03171c14620003c557806342966c6814620003dd57806348a50a5414620003f85780634f801270146200041057806354dd1da4146200043457806356d40468146200044c5780635935573614620004765780636117c9db146200049a578063621d388c14620004b25780636618846314620004ca5780636d3036a714620004f15780636f503e67146200050957806370a0823114620005305780638f2839701462000554578063940bb344146200057857806395d89b411462000590578063a9059cbb14620005a8578063ab90a8ac14620005cf578063ae75c4f714620005e7578063afa3174414620005ff578063b8c766b81462000617578063bccb8fc0146200062f578063c26fe7ce146200066b578063d73dd623146200068f578063dc16565214620006b6578063dd62ed3e14620006ce578063dfb9366d14620006f8578063e19136a4146200071f578063ee55efee1462000737578063fd82a59f146200074f575b600080fd5b348015620001f757600080fd5b506200020262000767565b6040805160208082528351818301528351919283929083019185019080838360005b838110156200023e57818101518382015260200162000224565b50505050905090810190601f1680156200026c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200028757600080fd5b50620002a1600160a060020a03600435166024356200079e565b604080519115158252519081900360200190f35b348015620002c257600080fd5b50620002e6600160a060020a03600435811690602435906044351660643562000805565b005b348015620002f557600080fd5b5062000300620008c4565b60408051918252519081900360200190f35b3480156200031f57600080fd5b50620002a1600160a060020a0360043581169060243516604435620008ca565b3480156200034c57600080fd5b5062000300600160a060020a036004351662000923565b3480156200037057600080fd5b506200037b6200093e565b60408051600160a060020a039092168252519081900360200190f35b348015620003a457600080fd5b50620003af6200094d565b6040805160ff9092168252519081900360200190f35b348015620003d257600080fd5b506200030062000952565b348015620003ea57600080fd5b50620002e660043562000962565b3480156200040557600080fd5b506200030062000971565b3480156200041d57600080fd5b5062000300600160a060020a036004351662000977565b3480156200044157600080fd5b50620002e662000a76565b3480156200045957600080fd5b50620002e6600435600160a060020a036024351660443562000ae9565b3480156200048357600080fd5b5062000300600160a060020a036004351662000b48565b348015620004a757600080fd5b506200037b62000bc9565b348015620004bf57600080fd5b50620002a162000bd8565b348015620004d757600080fd5b50620002a1600160a060020a036004351660243562000bf9565b348015620004fe57600080fd5b506200030062000ced565b3480156200051657600080fd5b506200037b600160a060020a036004351660243562000cf9565b3480156200053d57600080fd5b5062000300600160a060020a036004351662000d3a565b3480156200056157600080fd5b50620002e6600160a060020a036004351662000d55565b3480156200058557600080fd5b50620002e662000da3565b3480156200059d57600080fd5b506200020262000e1f565b348015620005b557600080fd5b50620002a1600160a060020a036004351660243562000e56565b348015620005dc57600080fd5b50620002e662000eac565b348015620005f457600080fd5b506200037b62000f3c565b3480156200060c57600080fd5b506200037b62000f4b565b3480156200062457600080fd5b50620002a162000f5a565b3480156200063c57600080fd5b50620002e6600160a060020a03600435811690602435906044351660643560843560a43560c435151562000f63565b3480156200067857600080fd5b50620002e6600160a060020a0360043516620010b2565b3480156200069c57600080fd5b50620002a1600160a060020a036004351660243562001226565b348015620006c357600080fd5b506200037b620012c1565b348015620006db57600080fd5b5062000300600160a060020a0360043581169060243516620012d0565b3480156200070557600080fd5b506200037b600160a060020a0360043516602435620012fb565b3480156200072c57600080fd5b506200037b62001333565b3480156200074457600080fd5b50620002e662001342565b3480156200075c57600080fd5b506200037b6200137d565b60408051808201909152600b81527f557262697420546f6b656e000000000000000000000000000000000000000000602082015281565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b6200080f62000bd8565b15156200081b57600080fd5b604080517fbccb8fc0000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015260248201869052841660448201526064810183905260006084820181905260a4820181905260c482018190529151309263bccb8fc09260e4808201939182900301818387803b158015620008a557600080fd5b505af1158015620008ba573d6000803e3d6000fd5b5050505050505050565b60015490565b6000620008d662000f5a565b80620008ec5750600454600160a060020a031633145b80620008fd5750620008fd62000bd8565b156200091857620009108484846200138c565b90506200091c565b5060005b9392505050565b600160a060020a03166000908152600a602052604090205490565b600654600160a060020a031681565b601281565b6b01f04ef12cb04cf15800000081565b6200096e3382620014fb565b50565b600b5481565b600080805b600160a060020a0384166000908152600a602052604090205481101562000a6f57600160a060020a0384166000908152600a60205260409020805482908110620009c257fe5b6000918252602080832090910154604080517f1726cbc80000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a0390921693631726cbc89360248084019491939192918390030190829087803b15801562000a3357600080fd5b505af115801562000a48573d6000803e3d6000fd5b505050506040513d602081101562000a5f57600080fd5b505191909101906001016200097c565b5092915050565b604080517fc26fe7ce0000000000000000000000000000000000000000000000000000000081523360048201529051309163c26fe7ce91602480830192600092919082900301818387803b15801562000ace57600080fd5b505af115801562000ae3573d6000803e3d6000fd5b50505050565b62000af362000f5a565b1562000afe57600080fd5b600454600160a060020a031633148062000b1d575062000b1d62000bd8565b151562000b2957600080fd5b60055462000b4390600160a060020a0316848484620015f0565b505050565b600080805b600160a060020a0384166000908152600a602052604090205481101562000a6f57600160a060020a0384166000908152600a6020526040812080548291908490811062000b9657fe5b6000918252602080832090910154600160a060020a03168352820192909252604001902054919091019060010162000b4d565b600954600160a060020a031681565b600354600090600160a060020a031633148062000bf457503330145b905090565b336000908152600260209081526040808320600160a060020a03861684529091528120548083111562000c5057336000908152600260209081526040808320600160a060020a038816845290915281205562000c87565b62000c62818463ffffffff6200171516565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b670de0b6b3a764000081565b600160a060020a0382166000908152600a6020526040812080548390811062000d1e57fe5b600091825260209091200154600160a060020a03169392505050565b600160a060020a031660009081526020819052604090205490565b62000d5f62000bd8565b151562000d6b57600080fd5b600160a060020a038116151562000d8157600080fd5b60038054600160a060020a031916600160a060020a0392909216919091179055565b62000dad62000bd8565b151562000db957600080fd5b62000dc362000f5a565b151562000dcf57600080fd5b600454600160a060020a031660008181526020819052604090205462000df69190620014fb565b600554600160a060020a031660008181526020819052604090205462000e1d9190620014fb565b565b60408051808201909152600381527f5552420000000000000000000000000000000000000000000000000000000000602082015281565b600062000e6262000f5a565b8062000e785750600454600160a060020a031633145b8062000e89575062000e8962000bd8565b1562000ea35762000e9b838362001728565b9050620007ff565b50600092915050565b62000eb662000bd8565b151562000ec257600080fd5b62000ecc62000f5a565b1562000ed757600080fd5b600554600160a060020a03161562000eee57600080fd5b60045462000f0b90630f05370090600160a060020a0316620017fe565b62000f1a63016e360062001880565b60058054600160a060020a031916600160a060020a0392909216919091179055565b600854600160a060020a031681565b600454600160a060020a031681565b600b5460001090565b600062000f6f62000bd8565b151562000f7b57600080fd5b858585858562000f8a62001a22565b600160a060020a039095168552602085019390935260408085019290925260608401529015156080830152519081900360a001906000f08015801562000fd4573d6000803e3d6000fd5b50600160a060020a038781166000908152600a602090815260408083208054600181018255908452828420018054600160a060020a03191686861690811790915581517f23b872dd000000000000000000000000000000000000000000000000000000008152948e1660048601526024850152604484018c90525193945030936323b872dd93606480820194918390030190829087803b1580156200107857600080fd5b505af11580156200108d573d6000803e3d6000fd5b505050506040513d6020811015620010a457600080fd5b50511515620008ba57600080fd5b306000805b600160a060020a0384166000908152600a602052604090205482101562000ae357600160a060020a0384166000908152600a60205260409020805483908110620010fd57fe5b6000918252602080832090910154604080517f1726cbc8000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015291519190921694508492631726cbc8926024808201939182900301818787803b1580156200116f57600080fd5b505af115801562001184573d6000803e3d6000fd5b505050506040513d60208110156200119b57600080fd5b505111156200121a5780600160a060020a03166319165587846040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b1580156200120057600080fd5b505af115801562001215573d6000803e3d6000fd5b505050505b600190910190620010b7565b336000908152600260209081526040808320600160a060020a03861684529091528120546200125c908363ffffffff6200194016565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600554600160a060020a031681565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600a602052816000526040600020818154811015156200131757fe5b600091825260209091200154600160a060020a03169150829050565b600354600160a060020a031681565b6200134c62000bd8565b15156200135857600080fd5b6200136262000f5a565b156200136d57600080fd5b620013776200194e565b42600b55565b600754600160a060020a031681565b6000600160a060020a0383161515620013a457600080fd5b600160a060020a038416600090815260208190526040902054821115620013ca57600080fd5b600160a060020a0384166000908152600260209081526040808320338452909152902054821115620013fb57600080fd5b600160a060020a03841660009081526020819052604090205462001426908363ffffffff6200171516565b600160a060020a0380861660009081526020819052604080822093909355908516815220546200145d908363ffffffff6200194016565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054620014a1908363ffffffff6200171516565b600160a060020a038086166000818152600260209081526040808320338452825291829020949094558051868152905192871693919260008051602062002f90833981519152929181900390910190a35060019392505050565b600160a060020a0382166000908152602081905260409020548111156200152157600080fd5b600160a060020a0382166000908152602081905260409020546200154c908263ffffffff6200171516565b600160a060020a0383166000908152602081905260409020556001546200157a908263ffffffff6200171516565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a0385169160008051602062002f908339815191529181900360200190a35050565b60008282620015fe62001a33565b600160a060020a0390921682526020820152604080519182900301906000f08015801562001630573d6000803e3d6000fd5b50600160a060020a038481166000908152600a602090815260408083208054600181018255908452828420018054600160a060020a03191686861690811790915581517f23b872dd000000000000000000000000000000000000000000000000000000008152948b1660048601526024850152604484018990525193945030936323b872dd93606480820194918390030190829087803b158015620016d457600080fd5b505af1158015620016e9573d6000803e3d6000fd5b505050506040513d60208110156200170057600080fd5b505115156200170e57600080fd5b5050505050565b6000828211156200172257fe5b50900390565b6000600160a060020a03831615156200174057600080fd5b336000908152602081905260409020548211156200175d57600080fd5b336000908152602081905260409020546200177f908363ffffffff6200171516565b3360009081526020819052604080822092909255600160a060020a03851681522054620017b3908363ffffffff6200194016565b600160a060020a0384166000818152602081815260409182902093909355805185815290519192339260008051602062002f908339815191529281900390910190a350600192915050565b60006200180a62000bd8565b15156200181657600080fd5b5060015463ffffffff808416670de0b6b3a764000002916200183b9183906200194016565b600155600160a060020a0382166000818152602081815260408083208590558051858152905160008051602062002f90833981519152929181900390910190a3505050565b6000806200188d62000bd8565b15156200189957600080fd5b30620018a462001a44565b600160a060020a03909116815260405190819003602001906000f080158015620018d2573d6000803e3d6000fd5b509050620018e18382620017fe565b80600160a060020a03166312d60f866040518163ffffffff1660e060020a028152600401600060405180830381600087803b1580156200192057600080fd5b505af115801562001935573d6000803e3d6000fd5b509295945050505050565b81810182811015620007ff57fe5b6200195862000bd8565b15156200196457600080fd5b620019736301c9c38062001880565b60068054600160a060020a031916600160a060020a0392909216919091179055620019a263016e360062001880565b60078054600160a060020a031916600160a060020a0392909216919091179055620019d16308f0d18062001880565b60088054600160a060020a031916600160a060020a039290921691909117905562001a006307270e0062001880565b60098054600160a060020a031916600160a060020a0392909216919091179055565b6040516108fb8062001a5683390190565b6040516109a5806200235183390190565b60405161029a8062002cf6833901905600608060405234801561001057600080fd5b5060405160a0806108fb8339810160409081528151602083015191830151606084015160809094015160008054600160a060020a0319163317905591939091600160a060020a038516151561006457600080fd5b8183111561007157600080fd5b60018054600160a060020a031916600160a060020a0387161790556005805460ff191682151517905560048290556100b684846401000000006100c581026107011704565b600255505050600355506100d8565b818101828110156100d257fe5b92915050565b610814806100e76000396000f3006080604052600436106100ab5763ffffffff60e060020a6000350416630fb5a6b481146100b057806313d033c0146100d75780631726cbc8146100ec578063191655871461010d578063384711cc1461013057806338af3eed1461015157806374a8f10314610182578063872a7810146101a35780638da5cb5b146101cc5780639852595c146101e1578063be9a655514610202578063f2fde38b14610217578063fa01dc0614610238575b600080fd5b3480156100bc57600080fd5b506100c5610259565b60408051918252519081900360200190f35b3480156100e357600080fd5b506100c561025f565b3480156100f857600080fd5b506100c5600160a060020a0360043516610265565b34801561011957600080fd5b5061012e600160a060020a036004351661029d565b005b34801561013c57600080fd5b506100c5600160a060020a0360043516610349565b34801561015d57600080fd5b506101666104a0565b60408051600160a060020a039092168252519081900360200190f35b34801561018e57600080fd5b5061012e600160a060020a03600435166104af565b3480156101af57600080fd5b506101b8610616565b604080519115158252519081900360200190f35b3480156101d857600080fd5b5061016661061f565b3480156101ed57600080fd5b506100c5600160a060020a036004351661062e565b34801561020e57600080fd5b506100c5610640565b34801561022357600080fd5b5061012e600160a060020a0360043516610646565b34801561024457600080fd5b506101b8600160a060020a03600435166106da565b60045481565b60025481565b600160a060020a0381166000908152600660205260408120546102979061028b84610349565b9063ffffffff6106ef16565b92915050565b60006102a882610265565b9050600081116102b757600080fd5b600160a060020a0382166000908152600660205260409020546102e0908263ffffffff61070116565b600160a060020a038084166000818152600660205260409020929092556001546103129291168363ffffffff61070e16565b6040805182815290517ffb81f9b30d73d830c3544b34d827c08142579ee75710b490bab0b3995468c5659181900360200190a15050565b600080600083600160a060020a03166370a08231306040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505050506040513d60208110156103d357600080fd5b5051600160a060020a03851660009081526006602052604090205490925061040290839063ffffffff61070116565b90506002544210156104175760009250610499565b60045460035461042c9163ffffffff61070116565b421015806104525750600160a060020a03841660009081526007602052604090205460ff165b1561045f57809250610499565b61049660045461048a61047d600354426106ef90919063ffffffff16565b849063ffffffff6107aa16565b9063ffffffff6107d316565b92505b5050919050565b600154600160a060020a031681565b6000805481908190600160a060020a031633146104cb57600080fd5b60055460ff1615156104dc57600080fd5b600160a060020a03841660009081526007602052604090205460ff161561050257600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038616916370a082319160248083019260209291908290030181600087803b15801561056357600080fd5b505af1158015610577573d6000803e3d6000fd5b505050506040513d602081101561058d57600080fd5b5051925061059a84610265565b91506105ac838363ffffffff6106ef16565b600160a060020a038086166000818152600760205260408120805460ff19166001179055549293506105e7929091168363ffffffff61070e16565b6040517f44825a4b2df8acb19ce4e1afba9aa850c8b65cdb7942e2078f27d0b0960efee690600090a150505050565b60055460ff1681565b600054600160a060020a031681565b60066020526000908152604090205481565b60035481565b600054600160a060020a0316331461065d57600080fd5b600160a060020a038116151561067257600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60076020526000908152604090205460ff1681565b6000828211156106fb57fe5b50900390565b8181018281101561029757fe5b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561077157600080fd5b505af1158015610785573d6000803e3d6000fd5b505050506040513d602081101561079b57600080fd5b505115156107a557fe5b505050565b60008215156107bb57506000610297565b508181028183828115156107cb57fe5b041461029757fe5b600081838115156107e057fe5b0493925050505600a165627a7a723058203b912808ba389219e34f80a7eafe3b87073bdb93e2915516f5ef68eee3f7619c0029608060405234801561001057600080fd5b506040516040806109a583398101604052805160209091015160008054600160a060020a031916331781558290828082600160a060020a038516151561005557600080fd5b8183111561006257600080fd5b60018054600160a060020a031916600160a060020a0387161790556005805460ff191682151517905560048290556100a784846401000000006100b981026107b71704565b600255505050600355506100cc915050565b818101828110156100c657fe5b92915050565b6108ca806100db6000396000f3006080604052600436106100ab5763ffffffff60e060020a6000350416630fb5a6b481146100b057806313d033c0146100d75780631726cbc8146100ec578063191655871461010d578063384711cc1461013057806338af3eed1461015157806374a8f10314610182578063872a7810146101a35780638da5cb5b146101cc5780639852595c146101e1578063be9a655514610202578063f2fde38b14610217578063fa01dc0614610238575b600080fd5b3480156100bc57600080fd5b506100c5610259565b60408051918252519081900360200190f35b3480156100e357600080fd5b506100c561025f565b3480156100f857600080fd5b506100c5600160a060020a0360043516610265565b34801561011957600080fd5b5061012e600160a060020a036004351661029d565b005b34801561013c57600080fd5b506100c5600160a060020a0360043516610349565b34801561015d57600080fd5b50610166610556565b60408051600160a060020a039092168252519081900360200190f35b34801561018e57600080fd5b5061012e600160a060020a0360043516610565565b3480156101af57600080fd5b506101b86106cc565b604080519115158252519081900360200190f35b3480156101d857600080fd5b506101666106d5565b3480156101ed57600080fd5b506100c5600160a060020a03600435166106e4565b34801561020e57600080fd5b506100c56106f6565b34801561022357600080fd5b5061012e600160a060020a03600435166106fc565b34801561024457600080fd5b506101b8600160a060020a0360043516610790565b60045481565b60025481565b600160a060020a0381166000908152600660205260408120546102979061028b84610349565b9063ffffffff6107a516565b92915050565b60006102a882610265565b9050600081116102b757600080fd5b600160a060020a0382166000908152600660205260409020546102e0908263ffffffff6107b716565b600160a060020a038084166000818152600660205260409020929092556001546103129291168363ffffffff6107c416565b6040805182815290517ffb81f9b30d73d830c3544b34d827c08142579ee75710b490bab0b3995468c5659181900360200190a15050565b600080600080600085935083600160a060020a031663b8c766b86040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050506040513d60208110156103bc57600080fd5b505115156103cd576000945061054d565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038816916370a082319160248083019260209291908290030181600087803b15801561042e57600080fd5b505af1158015610442573d6000803e3d6000fd5b505050506040513d602081101561045857600080fd5b5051600160a060020a03871660009081526006602052604090205490935061048790849063ffffffff6107b716565b915083600160a060020a03166348a50a546040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505050506040513d60208110156104f157600080fd5b5051600454909150610509908263ffffffff6107b716565b42106105175781945061054d565b60045461054a9061053e610531428563ffffffff6107a516565b859063ffffffff61086016565b9063ffffffff61088916565b94505b50505050919050565b600154600160a060020a031681565b6000805481908190600160a060020a0316331461058157600080fd5b60055460ff16151561059257600080fd5b600160a060020a03841660009081526007602052604090205460ff16156105b857600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038616916370a082319160248083019260209291908290030181600087803b15801561061957600080fd5b505af115801561062d573d6000803e3d6000fd5b505050506040513d602081101561064357600080fd5b5051925061065084610265565b9150610662838363ffffffff6107a516565b600160a060020a038086166000818152600760205260408120805460ff191660011790555492935061069d929091168363ffffffff6107c416565b6040517f44825a4b2df8acb19ce4e1afba9aa850c8b65cdb7942e2078f27d0b0960efee690600090a150505050565b60055460ff1681565b600054600160a060020a031681565b60066020526000908152604090205481565b60035481565b600054600160a060020a0316331461071357600080fd5b600160a060020a038116151561072857600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60076020526000908152604090205460ff1681565b6000828211156107b157fe5b50900390565b8181018281101561029757fe5b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561082757600080fd5b505af115801561083b573d6000803e3d6000fd5b505050506040513d602081101561085157600080fd5b5051151561085b57fe5b505050565b600082151561087157506000610297565b5081810281838281151561088157fe5b041461029757fe5b6000818381151561089657fe5b0493925050505600a165627a7a72305820090d3609ffa968c348e8a3208acb00fa74ee04c1c03bde4fe66ae5e40ae6a2280029608060405234801561001057600080fd5b5060405160208061029a833981016040525160008054600160a060020a03909216600160a060020a0319909216919091179055610248806100526000396000f30060806040526004361061004b5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166312d60f868114610050578063fc0c546a14610067575b600080fd5b34801561005c57600080fd5b506100656100a5565b005b34801561007357600080fd5b5061007c610200565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b60008054604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a082319160248082019260209290919082900301818787803b15801561011857600080fd5b505af115801561012c573d6000803e3d6000fd5b505050506040513d602081101561014257600080fd5b505190506000811161015357600080fd5b60008054604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301819052602483018590529051909263095ea7b392604480820193602093909283900390910190829087803b1580156101d157600080fd5b505af11580156101e5573d6000803e3d6000fd5b505050506040513d60208110156101fb57600080fd5b505050565b60005473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a723058202bfa62ee38c281890e875eca316ef27bd61689576e6c80f47775ff21bfea65fd0029ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058207d19386b1e5069e7d8e149a0f387ed0f482293224638a8d19762906f30d9ebda0029000000000000000000000000e39f321390c7c1f4b3bc182d88cf78db4b3a02a10000000000000000000000009f8ac07005e8347271d326ab50418bfb017506bc

Deployed Bytecode

0x608060405260043610620001e55763ffffffff60e060020a60003504166306fdde038114620001ea578063095ea7b3146200027a5780630f98a9cc14620002b557806318160ddd14620002e857806323b872dd1462000312578063257341a8146200033f5780632740509d1462000363578063313ce56714620003975780633a03171c14620003c557806342966c6814620003dd57806348a50a5414620003f85780634f801270146200041057806354dd1da4146200043457806356d40468146200044c5780635935573614620004765780636117c9db146200049a578063621d388c14620004b25780636618846314620004ca5780636d3036a714620004f15780636f503e67146200050957806370a0823114620005305780638f2839701462000554578063940bb344146200057857806395d89b411462000590578063a9059cbb14620005a8578063ab90a8ac14620005cf578063ae75c4f714620005e7578063afa3174414620005ff578063b8c766b81462000617578063bccb8fc0146200062f578063c26fe7ce146200066b578063d73dd623146200068f578063dc16565214620006b6578063dd62ed3e14620006ce578063dfb9366d14620006f8578063e19136a4146200071f578063ee55efee1462000737578063fd82a59f146200074f575b600080fd5b348015620001f757600080fd5b506200020262000767565b6040805160208082528351818301528351919283929083019185019080838360005b838110156200023e57818101518382015260200162000224565b50505050905090810190601f1680156200026c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200028757600080fd5b50620002a1600160a060020a03600435166024356200079e565b604080519115158252519081900360200190f35b348015620002c257600080fd5b50620002e6600160a060020a03600435811690602435906044351660643562000805565b005b348015620002f557600080fd5b5062000300620008c4565b60408051918252519081900360200190f35b3480156200031f57600080fd5b50620002a1600160a060020a0360043581169060243516604435620008ca565b3480156200034c57600080fd5b5062000300600160a060020a036004351662000923565b3480156200037057600080fd5b506200037b6200093e565b60408051600160a060020a039092168252519081900360200190f35b348015620003a457600080fd5b50620003af6200094d565b6040805160ff9092168252519081900360200190f35b348015620003d257600080fd5b506200030062000952565b348015620003ea57600080fd5b50620002e660043562000962565b3480156200040557600080fd5b506200030062000971565b3480156200041d57600080fd5b5062000300600160a060020a036004351662000977565b3480156200044157600080fd5b50620002e662000a76565b3480156200045957600080fd5b50620002e6600435600160a060020a036024351660443562000ae9565b3480156200048357600080fd5b5062000300600160a060020a036004351662000b48565b348015620004a757600080fd5b506200037b62000bc9565b348015620004bf57600080fd5b50620002a162000bd8565b348015620004d757600080fd5b50620002a1600160a060020a036004351660243562000bf9565b348015620004fe57600080fd5b506200030062000ced565b3480156200051657600080fd5b506200037b600160a060020a036004351660243562000cf9565b3480156200053d57600080fd5b5062000300600160a060020a036004351662000d3a565b3480156200056157600080fd5b50620002e6600160a060020a036004351662000d55565b3480156200058557600080fd5b50620002e662000da3565b3480156200059d57600080fd5b506200020262000e1f565b348015620005b557600080fd5b50620002a1600160a060020a036004351660243562000e56565b348015620005dc57600080fd5b50620002e662000eac565b348015620005f457600080fd5b506200037b62000f3c565b3480156200060c57600080fd5b506200037b62000f4b565b3480156200062457600080fd5b50620002a162000f5a565b3480156200063c57600080fd5b50620002e6600160a060020a03600435811690602435906044351660643560843560a43560c435151562000f63565b3480156200067857600080fd5b50620002e6600160a060020a0360043516620010b2565b3480156200069c57600080fd5b50620002a1600160a060020a036004351660243562001226565b348015620006c357600080fd5b506200037b620012c1565b348015620006db57600080fd5b5062000300600160a060020a0360043581169060243516620012d0565b3480156200070557600080fd5b506200037b600160a060020a0360043516602435620012fb565b3480156200072c57600080fd5b506200037b62001333565b3480156200074457600080fd5b50620002e662001342565b3480156200075c57600080fd5b506200037b6200137d565b60408051808201909152600b81527f557262697420546f6b656e000000000000000000000000000000000000000000602082015281565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b6200080f62000bd8565b15156200081b57600080fd5b604080517fbccb8fc0000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015260248201869052841660448201526064810183905260006084820181905260a4820181905260c482018190529151309263bccb8fc09260e4808201939182900301818387803b158015620008a557600080fd5b505af1158015620008ba573d6000803e3d6000fd5b5050505050505050565b60015490565b6000620008d662000f5a565b80620008ec5750600454600160a060020a031633145b80620008fd5750620008fd62000bd8565b156200091857620009108484846200138c565b90506200091c565b5060005b9392505050565b600160a060020a03166000908152600a602052604090205490565b600654600160a060020a031681565b601281565b6b01f04ef12cb04cf15800000081565b6200096e3382620014fb565b50565b600b5481565b600080805b600160a060020a0384166000908152600a602052604090205481101562000a6f57600160a060020a0384166000908152600a60205260409020805482908110620009c257fe5b6000918252602080832090910154604080517f1726cbc80000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a0390921693631726cbc89360248084019491939192918390030190829087803b15801562000a3357600080fd5b505af115801562000a48573d6000803e3d6000fd5b505050506040513d602081101562000a5f57600080fd5b505191909101906001016200097c565b5092915050565b604080517fc26fe7ce0000000000000000000000000000000000000000000000000000000081523360048201529051309163c26fe7ce91602480830192600092919082900301818387803b15801562000ace57600080fd5b505af115801562000ae3573d6000803e3d6000fd5b50505050565b62000af362000f5a565b1562000afe57600080fd5b600454600160a060020a031633148062000b1d575062000b1d62000bd8565b151562000b2957600080fd5b60055462000b4390600160a060020a0316848484620015f0565b505050565b600080805b600160a060020a0384166000908152600a602052604090205481101562000a6f57600160a060020a0384166000908152600a6020526040812080548291908490811062000b9657fe5b6000918252602080832090910154600160a060020a03168352820192909252604001902054919091019060010162000b4d565b600954600160a060020a031681565b600354600090600160a060020a031633148062000bf457503330145b905090565b336000908152600260209081526040808320600160a060020a03861684529091528120548083111562000c5057336000908152600260209081526040808320600160a060020a038816845290915281205562000c87565b62000c62818463ffffffff6200171516565b336000908152600260209081526040808320600160a060020a03891684529091529020555b336000818152600260209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b670de0b6b3a764000081565b600160a060020a0382166000908152600a6020526040812080548390811062000d1e57fe5b600091825260209091200154600160a060020a03169392505050565b600160a060020a031660009081526020819052604090205490565b62000d5f62000bd8565b151562000d6b57600080fd5b600160a060020a038116151562000d8157600080fd5b60038054600160a060020a031916600160a060020a0392909216919091179055565b62000dad62000bd8565b151562000db957600080fd5b62000dc362000f5a565b151562000dcf57600080fd5b600454600160a060020a031660008181526020819052604090205462000df69190620014fb565b600554600160a060020a031660008181526020819052604090205462000e1d9190620014fb565b565b60408051808201909152600381527f5552420000000000000000000000000000000000000000000000000000000000602082015281565b600062000e6262000f5a565b8062000e785750600454600160a060020a031633145b8062000e89575062000e8962000bd8565b1562000ea35762000e9b838362001728565b9050620007ff565b50600092915050565b62000eb662000bd8565b151562000ec257600080fd5b62000ecc62000f5a565b1562000ed757600080fd5b600554600160a060020a03161562000eee57600080fd5b60045462000f0b90630f05370090600160a060020a0316620017fe565b62000f1a63016e360062001880565b60058054600160a060020a031916600160a060020a0392909216919091179055565b600854600160a060020a031681565b600454600160a060020a031681565b600b5460001090565b600062000f6f62000bd8565b151562000f7b57600080fd5b858585858562000f8a62001a22565b600160a060020a039095168552602085019390935260408085019290925260608401529015156080830152519081900360a001906000f08015801562000fd4573d6000803e3d6000fd5b50600160a060020a038781166000908152600a602090815260408083208054600181018255908452828420018054600160a060020a03191686861690811790915581517f23b872dd000000000000000000000000000000000000000000000000000000008152948e1660048601526024850152604484018c90525193945030936323b872dd93606480820194918390030190829087803b1580156200107857600080fd5b505af11580156200108d573d6000803e3d6000fd5b505050506040513d6020811015620010a457600080fd5b50511515620008ba57600080fd5b306000805b600160a060020a0384166000908152600a602052604090205482101562000ae357600160a060020a0384166000908152600a60205260409020805483908110620010fd57fe5b6000918252602080832090910154604080517f1726cbc8000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015291519190921694508492631726cbc8926024808201939182900301818787803b1580156200116f57600080fd5b505af115801562001184573d6000803e3d6000fd5b505050506040513d60208110156200119b57600080fd5b505111156200121a5780600160a060020a03166319165587846040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b1580156200120057600080fd5b505af115801562001215573d6000803e3d6000fd5b505050505b600190910190620010b7565b336000908152600260209081526040808320600160a060020a03861684529091528120546200125c908363ffffffff6200194016565b336000818152600260209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600554600160a060020a031681565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600a602052816000526040600020818154811015156200131757fe5b600091825260209091200154600160a060020a03169150829050565b600354600160a060020a031681565b6200134c62000bd8565b15156200135857600080fd5b6200136262000f5a565b156200136d57600080fd5b620013776200194e565b42600b55565b600754600160a060020a031681565b6000600160a060020a0383161515620013a457600080fd5b600160a060020a038416600090815260208190526040902054821115620013ca57600080fd5b600160a060020a0384166000908152600260209081526040808320338452909152902054821115620013fb57600080fd5b600160a060020a03841660009081526020819052604090205462001426908363ffffffff6200171516565b600160a060020a0380861660009081526020819052604080822093909355908516815220546200145d908363ffffffff6200194016565b600160a060020a03808516600090815260208181526040808320949094559187168152600282528281203382529091522054620014a1908363ffffffff6200171516565b600160a060020a038086166000818152600260209081526040808320338452825291829020949094558051868152905192871693919260008051602062002f90833981519152929181900390910190a35060019392505050565b600160a060020a0382166000908152602081905260409020548111156200152157600080fd5b600160a060020a0382166000908152602081905260409020546200154c908263ffffffff6200171516565b600160a060020a0383166000908152602081905260409020556001546200157a908263ffffffff6200171516565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a0385169160008051602062002f908339815191529181900360200190a35050565b60008282620015fe62001a33565b600160a060020a0390921682526020820152604080519182900301906000f08015801562001630573d6000803e3d6000fd5b50600160a060020a038481166000908152600a602090815260408083208054600181018255908452828420018054600160a060020a03191686861690811790915581517f23b872dd000000000000000000000000000000000000000000000000000000008152948b1660048601526024850152604484018990525193945030936323b872dd93606480820194918390030190829087803b158015620016d457600080fd5b505af1158015620016e9573d6000803e3d6000fd5b505050506040513d60208110156200170057600080fd5b505115156200170e57600080fd5b5050505050565b6000828211156200172257fe5b50900390565b6000600160a060020a03831615156200174057600080fd5b336000908152602081905260409020548211156200175d57600080fd5b336000908152602081905260409020546200177f908363ffffffff6200171516565b3360009081526020819052604080822092909255600160a060020a03851681522054620017b3908363ffffffff6200194016565b600160a060020a0384166000818152602081815260409182902093909355805185815290519192339260008051602062002f908339815191529281900390910190a350600192915050565b60006200180a62000bd8565b15156200181657600080fd5b5060015463ffffffff808416670de0b6b3a764000002916200183b9183906200194016565b600155600160a060020a0382166000818152602081815260408083208590558051858152905160008051602062002f90833981519152929181900390910190a3505050565b6000806200188d62000bd8565b15156200189957600080fd5b30620018a462001a44565b600160a060020a03909116815260405190819003602001906000f080158015620018d2573d6000803e3d6000fd5b509050620018e18382620017fe565b80600160a060020a03166312d60f866040518163ffffffff1660e060020a028152600401600060405180830381600087803b1580156200192057600080fd5b505af115801562001935573d6000803e3d6000fd5b509295945050505050565b81810182811015620007ff57fe5b6200195862000bd8565b15156200196457600080fd5b620019736301c9c38062001880565b60068054600160a060020a031916600160a060020a0392909216919091179055620019a263016e360062001880565b60078054600160a060020a031916600160a060020a0392909216919091179055620019d16308f0d18062001880565b60088054600160a060020a031916600160a060020a039290921691909117905562001a006307270e0062001880565b60098054600160a060020a031916600160a060020a0392909216919091179055565b6040516108fb8062001a5683390190565b6040516109a5806200235183390190565b60405161029a8062002cf6833901905600608060405234801561001057600080fd5b5060405160a0806108fb8339810160409081528151602083015191830151606084015160809094015160008054600160a060020a0319163317905591939091600160a060020a038516151561006457600080fd5b8183111561007157600080fd5b60018054600160a060020a031916600160a060020a0387161790556005805460ff191682151517905560048290556100b684846401000000006100c581026107011704565b600255505050600355506100d8565b818101828110156100d257fe5b92915050565b610814806100e76000396000f3006080604052600436106100ab5763ffffffff60e060020a6000350416630fb5a6b481146100b057806313d033c0146100d75780631726cbc8146100ec578063191655871461010d578063384711cc1461013057806338af3eed1461015157806374a8f10314610182578063872a7810146101a35780638da5cb5b146101cc5780639852595c146101e1578063be9a655514610202578063f2fde38b14610217578063fa01dc0614610238575b600080fd5b3480156100bc57600080fd5b506100c5610259565b60408051918252519081900360200190f35b3480156100e357600080fd5b506100c561025f565b3480156100f857600080fd5b506100c5600160a060020a0360043516610265565b34801561011957600080fd5b5061012e600160a060020a036004351661029d565b005b34801561013c57600080fd5b506100c5600160a060020a0360043516610349565b34801561015d57600080fd5b506101666104a0565b60408051600160a060020a039092168252519081900360200190f35b34801561018e57600080fd5b5061012e600160a060020a03600435166104af565b3480156101af57600080fd5b506101b8610616565b604080519115158252519081900360200190f35b3480156101d857600080fd5b5061016661061f565b3480156101ed57600080fd5b506100c5600160a060020a036004351661062e565b34801561020e57600080fd5b506100c5610640565b34801561022357600080fd5b5061012e600160a060020a0360043516610646565b34801561024457600080fd5b506101b8600160a060020a03600435166106da565b60045481565b60025481565b600160a060020a0381166000908152600660205260408120546102979061028b84610349565b9063ffffffff6106ef16565b92915050565b60006102a882610265565b9050600081116102b757600080fd5b600160a060020a0382166000908152600660205260409020546102e0908263ffffffff61070116565b600160a060020a038084166000818152600660205260409020929092556001546103129291168363ffffffff61070e16565b6040805182815290517ffb81f9b30d73d830c3544b34d827c08142579ee75710b490bab0b3995468c5659181900360200190a15050565b600080600083600160a060020a03166370a08231306040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b1580156103a957600080fd5b505af11580156103bd573d6000803e3d6000fd5b505050506040513d60208110156103d357600080fd5b5051600160a060020a03851660009081526006602052604090205490925061040290839063ffffffff61070116565b90506002544210156104175760009250610499565b60045460035461042c9163ffffffff61070116565b421015806104525750600160a060020a03841660009081526007602052604090205460ff165b1561045f57809250610499565b61049660045461048a61047d600354426106ef90919063ffffffff16565b849063ffffffff6107aa16565b9063ffffffff6107d316565b92505b5050919050565b600154600160a060020a031681565b6000805481908190600160a060020a031633146104cb57600080fd5b60055460ff1615156104dc57600080fd5b600160a060020a03841660009081526007602052604090205460ff161561050257600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038616916370a082319160248083019260209291908290030181600087803b15801561056357600080fd5b505af1158015610577573d6000803e3d6000fd5b505050506040513d602081101561058d57600080fd5b5051925061059a84610265565b91506105ac838363ffffffff6106ef16565b600160a060020a038086166000818152600760205260408120805460ff19166001179055549293506105e7929091168363ffffffff61070e16565b6040517f44825a4b2df8acb19ce4e1afba9aa850c8b65cdb7942e2078f27d0b0960efee690600090a150505050565b60055460ff1681565b600054600160a060020a031681565b60066020526000908152604090205481565b60035481565b600054600160a060020a0316331461065d57600080fd5b600160a060020a038116151561067257600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60076020526000908152604090205460ff1681565b6000828211156106fb57fe5b50900390565b8181018281101561029757fe5b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561077157600080fd5b505af1158015610785573d6000803e3d6000fd5b505050506040513d602081101561079b57600080fd5b505115156107a557fe5b505050565b60008215156107bb57506000610297565b508181028183828115156107cb57fe5b041461029757fe5b600081838115156107e057fe5b0493925050505600a165627a7a723058203b912808ba389219e34f80a7eafe3b87073bdb93e2915516f5ef68eee3f7619c0029608060405234801561001057600080fd5b506040516040806109a583398101604052805160209091015160008054600160a060020a031916331781558290828082600160a060020a038516151561005557600080fd5b8183111561006257600080fd5b60018054600160a060020a031916600160a060020a0387161790556005805460ff191682151517905560048290556100a784846401000000006100b981026107b71704565b600255505050600355506100cc915050565b818101828110156100c657fe5b92915050565b6108ca806100db6000396000f3006080604052600436106100ab5763ffffffff60e060020a6000350416630fb5a6b481146100b057806313d033c0146100d75780631726cbc8146100ec578063191655871461010d578063384711cc1461013057806338af3eed1461015157806374a8f10314610182578063872a7810146101a35780638da5cb5b146101cc5780639852595c146101e1578063be9a655514610202578063f2fde38b14610217578063fa01dc0614610238575b600080fd5b3480156100bc57600080fd5b506100c5610259565b60408051918252519081900360200190f35b3480156100e357600080fd5b506100c561025f565b3480156100f857600080fd5b506100c5600160a060020a0360043516610265565b34801561011957600080fd5b5061012e600160a060020a036004351661029d565b005b34801561013c57600080fd5b506100c5600160a060020a0360043516610349565b34801561015d57600080fd5b50610166610556565b60408051600160a060020a039092168252519081900360200190f35b34801561018e57600080fd5b5061012e600160a060020a0360043516610565565b3480156101af57600080fd5b506101b86106cc565b604080519115158252519081900360200190f35b3480156101d857600080fd5b506101666106d5565b3480156101ed57600080fd5b506100c5600160a060020a03600435166106e4565b34801561020e57600080fd5b506100c56106f6565b34801561022357600080fd5b5061012e600160a060020a03600435166106fc565b34801561024457600080fd5b506101b8600160a060020a0360043516610790565b60045481565b60025481565b600160a060020a0381166000908152600660205260408120546102979061028b84610349565b9063ffffffff6107a516565b92915050565b60006102a882610265565b9050600081116102b757600080fd5b600160a060020a0382166000908152600660205260409020546102e0908263ffffffff6107b716565b600160a060020a038084166000818152600660205260409020929092556001546103129291168363ffffffff6107c416565b6040805182815290517ffb81f9b30d73d830c3544b34d827c08142579ee75710b490bab0b3995468c5659181900360200190a15050565b600080600080600085935083600160a060020a031663b8c766b86040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561039257600080fd5b505af11580156103a6573d6000803e3d6000fd5b505050506040513d60208110156103bc57600080fd5b505115156103cd576000945061054d565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038816916370a082319160248083019260209291908290030181600087803b15801561042e57600080fd5b505af1158015610442573d6000803e3d6000fd5b505050506040513d602081101561045857600080fd5b5051600160a060020a03871660009081526006602052604090205490935061048790849063ffffffff6107b716565b915083600160a060020a03166348a50a546040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505050506040513d60208110156104f157600080fd5b5051600454909150610509908263ffffffff6107b716565b42106105175781945061054d565b60045461054a9061053e610531428563ffffffff6107a516565b859063ffffffff61086016565b9063ffffffff61088916565b94505b50505050919050565b600154600160a060020a031681565b6000805481908190600160a060020a0316331461058157600080fd5b60055460ff16151561059257600080fd5b600160a060020a03841660009081526007602052604090205460ff16156105b857600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038616916370a082319160248083019260209291908290030181600087803b15801561061957600080fd5b505af115801561062d573d6000803e3d6000fd5b505050506040513d602081101561064357600080fd5b5051925061065084610265565b9150610662838363ffffffff6107a516565b600160a060020a038086166000818152600760205260408120805460ff191660011790555492935061069d929091168363ffffffff6107c416565b6040517f44825a4b2df8acb19ce4e1afba9aa850c8b65cdb7942e2078f27d0b0960efee690600090a150505050565b60055460ff1681565b600054600160a060020a031681565b60066020526000908152604090205481565b60035481565b600054600160a060020a0316331461071357600080fd5b600160a060020a038116151561072857600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60076020526000908152604090205460ff1681565b6000828211156107b157fe5b50900390565b8181018281101561029757fe5b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561082757600080fd5b505af115801561083b573d6000803e3d6000fd5b505050506040513d602081101561085157600080fd5b5051151561085b57fe5b505050565b600082151561087157506000610297565b5081810281838281151561088157fe5b041461029757fe5b6000818381151561089657fe5b0493925050505600a165627a7a72305820090d3609ffa968c348e8a3208acb00fa74ee04c1c03bde4fe66ae5e40ae6a2280029608060405234801561001057600080fd5b5060405160208061029a833981016040525160008054600160a060020a03909216600160a060020a0319909216919091179055610248806100526000396000f30060806040526004361061004b5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166312d60f868114610050578063fc0c546a14610067575b600080fd5b34801561005c57600080fd5b506100656100a5565b005b34801561007357600080fd5b5061007c610200565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b60008054604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a082319160248082019260209290919082900301818787803b15801561011857600080fd5b505af115801561012c573d6000803e3d6000fd5b505050506040513d602081101561014257600080fd5b505190506000811161015357600080fd5b60008054604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301819052602483018590529051909263095ea7b392604480820193602093909283900390910190829087803b1580156101d157600080fd5b505af11580156101e5573d6000803e3d6000fd5b505050506040513d60208110156101fb57600080fd5b505050565b60005473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a723058202bfa62ee38c281890e875eca316ef27bd61689576e6c80f47775ff21bfea65fd0029ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058207d19386b1e5069e7d8e149a0f387ed0f482293224638a8d19762906f30d9ebda0029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000e39f321390c7c1f4b3bc182d88cf78db4b3a02a10000000000000000000000009f8ac07005e8347271d326ab50418bfb017506bc

-----Decoded View---------------
Arg [0] : _urbitAdminAddress (address): 0xE39F321390c7C1F4b3BC182D88Cf78db4B3A02a1
Arg [1] : _saleTokensAddress (address): 0x9f8ac07005E8347271d326ab50418Bfb017506Bc

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000e39f321390c7c1f4b3bc182d88cf78db4b3a02a1
Arg [1] : 0000000000000000000000009f8ac07005e8347271d326ab50418bfb017506bc


Swarm Source

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