ETH Price: $2,061.15 (-5.43%)
 

Overview

Max Total Supply

10,000,000,000 TBT

Holders

155

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
16,666.6 TBT

Value
$0.00
0x94f5388960052fb02ff038e8c111bb1b03199dd1
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TimeBankToken

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-06-01
*/

pragma solidity ^0.4.21;

contract EIP20Interface {
    function name() public view returns (string);
    
    function symbol() public view returns (string);
    
    function decimals() public view returns (uint8);
    
    function totalSupply() public view returns (uint256);

    /// @param _owner The address from which the balance will be retrieved
    /// @return The balance
    function balanceOf(address _owner) public view returns (uint256 balance);

    /// @notice send `_value` token to `_to` from `msg.sender`
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transfer(address _to, uint256 _value) public returns (bool success);

    /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
    /// @param _from The address of the sender
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);

    /// @notice `msg.sender` approves `_spender` to spend `_value` tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @param _value The amount of tokens to be approved for transfer
    /// @return Whether the approval was successful or not
    function approve(address _spender, uint256 _value) public returns (bool success);

    /// @param _owner The address of the account owning tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @return Amount of remaining tokens allowed to spent
    function allowance(address _owner, address _spender) public view returns (uint256 remaining);

    // solhint-disable-next-line no-simple-event-func-name
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

contract EIP20 is EIP20Interface {

    uint256 constant private MAX_UINT256 = 2**256 - 1;
    mapping (address => uint256) public balances;
    mapping (address => mapping (address => uint256)) public allowed;
    /*
    NOTE:
    The following variables are OPTIONAL vanities. One does not have to include them.
    They allow one to customise the token contract & in no way influences the core functionality.
    Some wallets/interfaces might not even bother to look at this information.
    */
    string public tokenName;                   //fancy name: eg Simon Bucks
    uint8 public tokenDecimals;                //How many decimals to show.
    string public tokenSymbol;                 //An identifier: eg SBX
    uint256 public tokenTotalSupply;

    constructor(
        uint256 _initialAmount,
        string _tokenName,
        uint8 _decimalUnits,
        string _tokenSymbol
    ) public {
        balances[msg.sender] = _initialAmount;               // Give the creator all initial tokens
        tokenTotalSupply = _initialAmount;                        // Update total supply
        tokenName = _tokenName;                                   // Set the name for display purposes
        tokenDecimals = _decimalUnits;                            // Amount of decimals for display purposes
        tokenSymbol = _tokenSymbol;                               // Set the symbol for display purposes
    }
    
    function name() public view returns (string) {
        return tokenName;
    }
    
    function symbol() public view returns (string) {
        return tokenSymbol;
    }
    
    function decimals() public view returns (uint8) {
        return tokenDecimals;
    }
    
    function totalSupply() public view returns (uint256) {
        return tokenTotalSupply;
    }

    function transfer(address _to, uint256 _value) public returns (bool success) {
        require(balances[msg.sender] >= _value);
        balances[msg.sender] -= _value;
        balances[_to] += _value;
        emit Transfer(msg.sender, _to, _value); //solhint-disable-line indent, no-unused-vars
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        uint256 allowance = allowed[_from][msg.sender];
        require(balances[_from] >= _value && allowance >= _value);
        balances[_to] += _value;
        balances[_from] -= _value;
        if (allowance < MAX_UINT256) {
            allowed[_from][msg.sender] -= _value;
        }
        emit Transfer(_from, _to, _value); //solhint-disable-line indent, no-unused-vars
        return true;
    }

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

    function approve(address _spender, uint256 _value) public returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value); //solhint-disable-line indent, no-unused-vars
        return true;
    }

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

/**
 * @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;
  }
}

contract TimeBankToken is EIP20 {
  using SafeMath for uint;

  struct Vesting {
    uint256 startTime; // vesting start time
    uint256 initReleaseAmount;
    uint256 amount;
    uint256 interval; // release N% of amount each interval.
    uint256 periods; // count of periods
    uint256 withdrawed; // already used amount of released part
  }

  mapping (address => Vesting[]) vestings;
  
  address[] managerList;
  mapping (address => bool) managers;
  mapping (bytes32 => mapping (address => bool)) confirms;
  
  /*
  at least <threshold> confirmations
  */
  uint majorityThreshold;
  uint managementThreshold;

  address coinbase;
  address master;
  bool public paused;

  function checkAddress(address _addr) internal pure returns (bool) {
    return _addr != address(0);
  }

  // 1 with 28 zeros
  constructor(address _master, address[] _managers, uint _majorityThreshold, uint _managementThreshold) EIP20(10000000000000000000000000000, "Time Bank Token", 18, "TBT") public {
    require(checkAddress(_master));
    require(_managers.length >= _majorityThreshold);
    require(_managers.length >= _managementThreshold);
    
    paused = false;
    master = _master;
    coinbase = msg.sender;
    majorityThreshold = _majorityThreshold;
    managementThreshold = _managementThreshold;

    for (uint i=0; i<_managers.length; i++) {
      require(checkAddress(_managers[i]));
      managers[_managers[i]] = true;
    }
    managerList = _managers;

    // initial batch operations
    // internalPresaleVesting(0x0095F9DffeE386B650230eD3eC28891c1053aBE0, 10000, 60, 120, 240);
    // internalPresaleVesting(0x00D4fC2CC18B96c44D9755afB6D4e6804cF827ee, 20000, 60, 120, 240);
    // internalPresale(0x0092E41D42E834705fd07c9136Fd0b1028226bE3, 30000);
  }

  function pause() public isMaster isNotPaused {
    require(isEnoughConfirmed(msg.data, 1));
    paused = true;
  }

  function resume() public isMaster isPaused {
    require(isEnoughConfirmed(msg.data, 1));
    paused = false;
  }

  modifier isPaused {
    require(paused == true);
    _;
  }

  modifier isNotPaused {
    require(paused == false);
    _;
  }

  modifier isManager {
    require(managers[msg.sender]);
    _;
  }

  modifier isMaster {
    require(msg.sender == master);
    _;
  }

  modifier isNotCoinbase {
    require(msg.sender != coinbase);
    _;
  }

  function managersCount() public view returns (uint) {
    return managerList.length;
  }

  function isAddressManager(address _to) public view returns (bool) {
    return managers[_to];
  }

  function getMajorityThreshold() public view  returns (uint) {
    return majorityThreshold;
  }

  event MajorityThresholdChanged(uint oldThreshold, uint newThreshold);
  event ReplaceManager(address oldAddr, address newAddr);
  event RemoveManager(address manager);
  event AddManager(address manager);

  function setMajorityThreshold(uint _threshold) public isMaster isNotPaused {
    require(_threshold > 0);
    require(isEnoughConfirmed(msg.data, managementThreshold));
    uint oldThreshold = majorityThreshold;
    majorityThreshold = _threshold;
    removeConfirm(msg.data);
    emit MajorityThresholdChanged(oldThreshold, majorityThreshold);
  }

  function replaceManager(address _old, address _new) public isMaster isNotPaused {
    require(checkAddress(_old));
    require(checkAddress(_new));
    require(isEnoughConfirmed(msg.data, managementThreshold));
    internalRemoveManager(_old);
    internalAddManager(_new);
    rebuildManagerList();
    removeConfirm(msg.data);
    emit ReplaceManager(_old, _new);
  }

  function removeManager(address _manager) public isMaster isNotPaused {
    require(checkAddress(_manager));
    require(isEnoughConfirmed(msg.data, managementThreshold));
    require(managerList.length > managementThreshold);
    internalRemoveManager(_manager);
    rebuildManagerList();
    removeConfirm(msg.data);
    emit RemoveManager(_manager);
  }

  function internalRemoveManager(address _manager) internal {
    require(checkAddress(_manager));
    managers[_manager] = false;
  }

  function addManager(address _manager) public isMaster isNotPaused {
    require(checkAddress(_manager));
    require(isEnoughConfirmed(msg.data, managementThreshold));
    internalAddManager(_manager);
    rebuildManagerList();
    removeConfirm(msg.data);
    emit AddManager(_manager);
  }

  function internalAddManager(address _manager) internal {
    require(checkAddress(_manager));
    managers[_manager] = true;
    managerList.push(_manager);
  }

  mapping (address => bool) checked;

  function rebuildManagerList() internal {
    address[] memory res = new address[](managerList.length);
    for (uint k=0; k<managerList.length; k++) {
      checked[managerList[k]] = false;
    }
    uint j=0;
    for (uint i=0; i<managerList.length; i++) {
      address manager = managerList[i];
      if (managers[manager] && checked[manager] == false) {
        res[j] = manager;
        checked[manager] = true;
        j++;
      }
    }
    managerList = res;
    managerList.length = j;
  }

  function checkData(bytes data) internal pure returns (bool) {
    return data.length != 0;
  }

  event Confirm(address manager, bytes data);
  event Revoke(address manager, bytes data);

  /*
  manager use this function to confirm a operation
  confirm will not be call inside other functions, so it can be external to save some gas
  @param {bytes} data is the transaction's raw input
  */
  function confirm(bytes data) external isManager {
    checkData(data);
    bytes32 op = keccak256(data);
    if (confirms[op][msg.sender] == false) {
      confirms[op][msg.sender] = true;
    }
    emit Confirm(msg.sender, data);
  }

  /*
  manager use this function to revoke a confirm of the operation
  revoke will not be call inside other functions, so it can be external to save some gas
  @param {bytes} data is the transaction's raw input
  */
  function revoke(bytes data) external isManager {
    checkData(data);
    bytes32 op = keccak256(data);
    if (confirms[op][msg.sender] == true) {
      confirms[op][msg.sender] = false;
    }
    emit Revoke(msg.sender, data);
  }

  /*
  check a operation is confirmed or not
  */
  function isConfirmed(bytes data) public view isManager returns (bool) {
    bytes32 op = keccak256(data);
    return confirms[op][msg.sender];
  }

  function isConfirmedBy(bytes data, address manager) public view returns (bool) {
    bytes32 op = keccak256(data);
    return confirms[op][manager];
  } 

  function isMajorityConfirmed(bytes data) public view returns (bool) {
    return isEnoughConfirmed(data, majorityThreshold);
  }

  function isEnoughConfirmed(bytes data, uint count) internal view returns (bool) {
    bytes32 op = keccak256(data);
    uint confirmsCount = 0;
    for (uint i=0; i<managerList.length; i++) {
      if (confirms[op][managerList[i]] == true) {
        confirmsCount = confirmsCount.add(1);
      }
    }
    return confirmsCount >= count;
  }

  /*
  once the operation is executed, the confirm of the operation should be removed
  */
  function removeConfirm(bytes data) internal {
    bytes32 op = keccak256(data);
    for (uint i=0; i<managerList.length; i++) {
      confirms[op][managerList[i]] = false;
    }
  }

  /*
  sale coin with time locking
  only the manager can call this function
  and this operation should be confirmed
  */
  function presaleVesting(address _to, uint256 _startTime, uint256 _initReleaseAmount, uint256 _amount, uint256 _interval, uint256 _periods) public isManager isNotPaused {
    checkAddress(_to);
    require(isMajorityConfirmed(msg.data));
    internalPresaleVesting(_to, _startTime, _initReleaseAmount, _amount, _interval, _periods);
    removeConfirm(msg.data);
  }

  function batchPresaleVesting(address[] _to, uint256[] _startTime, uint256[] _initReleaseAmount, uint256[] _amount, uint256[] _interval, uint256[] _periods) public isManager isNotPaused {
    require(isMajorityConfirmed(msg.data));
    for (uint i=0; i<_to.length; i++) {
      internalPresaleVesting(_to[i], _startTime[i], _initReleaseAmount[i], _amount[i], _interval[i], _periods[i]);
    }
    removeConfirm(msg.data);
  }

  function internalPresaleVesting(address _to, uint256 _startTime, uint256 _initReleaseAmount, uint256 _amount, uint256 _interval, uint256 _periods) internal {
    require(balances[coinbase] >= _amount);
    require(_initReleaseAmount <= _amount);
    require(checkAddress(_to));
    vestings[_to].push(Vesting(
      _startTime, _initReleaseAmount, _amount, _interval, _periods, 0
    ));
    balances[coinbase] = balances[coinbase].sub(_amount);
    emit PresaleVesting(_to, _startTime, _amount, _interval, _periods);
  }

  /*
  sale coin without time locking
  only the manager can call this function
  and this operation should be confirmed
  */
  function presale(address _to, uint256 _value) public isManager isNotPaused {
    require(isMajorityConfirmed(msg.data));
    internalPresale(_to, _value);
    removeConfirm(msg.data);
  }

  function batchPresale(address[] _to, uint256[] _amount) public isManager isNotPaused {
    require(isMajorityConfirmed(msg.data));
    for (uint i=0; i<_to.length; i++) {
      internalPresale(_to[i], _amount[i]);
    }
    removeConfirm(msg.data);
  }

  function internalPresale(address _to, uint256 _value) internal {
    require(balances[coinbase] >= _value);
    require(checkAddress(_to));
    balances[_to] = balances[_to].add(_value);
    balances[coinbase] = balances[coinbase].sub(_value);
    emit Presale(_to, _value);
  }

  /*
  events
  */
  event Presale(address indexed to, uint256 value);
  event PresaleVesting(address indexed to, uint256 startTime, uint256 amount, uint256 interval, uint256 periods);

  /*
  math function used to calculate vesting curve
  */
  function vestingFunc(uint256 _currentTime, uint256 _startTime, uint256 _initReleaseAmount, uint256 _amount, uint256 _interval, uint256 _periods) public pure returns (uint256) {
    if (_currentTime < _startTime) {
      return 0;
    }
    uint256 t = _currentTime.sub(_startTime);
    uint256 end = _periods.mul(_interval);
    if (t >= end) {
      return _amount;
    }
    uint256 i_amount = _amount.sub(_initReleaseAmount).div(_periods);
    uint256 i = t.div(_interval);
    return i_amount.mul(i).add(_initReleaseAmount);
  }

  function queryWithdrawed(uint _idx) public view returns (uint256) {
    return vestings[msg.sender][_idx].withdrawed;
  }

  function queryVestingRemain(uint256 _currentTime, uint _idx) public view returns (uint256) {
    uint256 released = vestingFunc(
      _currentTime,
      vestings[msg.sender][_idx].startTime, vestings[msg.sender][_idx].initReleaseAmount, vestings[msg.sender][_idx].amount,
      vestings[msg.sender][_idx].interval, vestings[msg.sender][_idx].periods
    );
    return released.sub(vestings[msg.sender][_idx].withdrawed);
  }

  /*
  calculate the released amount of vesting coin
  it cannot be view, because this function relays on 'now'
  */
  function vestingReleased(uint256 _startTime, uint256 _initReleaseAmount, uint256 _amount, uint256 _interval, uint256 _periods) internal view returns (uint256) {
    return vestingFunc(now, _startTime, _initReleaseAmount, _amount, _interval, _periods);
  }

  /*
  withdraw all released vesting coin to balance
  */
  function withdrawVestings(address _to) internal {
    uint256 sum = 0;
    for (uint i=0; i<vestings[_to].length; i++) {
      if (vestings[_to][i].amount == vestings[_to][i].withdrawed) {
        continue;
      }

      uint256 released = vestingReleased(
        vestings[_to][i].startTime, vestings[_to][i].initReleaseAmount, vestings[_to][i].amount,
        vestings[_to][i].interval, vestings[_to][i].periods
      );
      uint256 remain = released.sub(vestings[_to][i].withdrawed);
      if (remain >= 0) {
        vestings[_to][i].withdrawed = released;
        sum = sum.add(remain);
      }
    }
    balances[_to] = balances[_to].add(sum);
  }

  /*
  sum of all vestings balance (regardless of released or not)
  each vesting is amount - withdrawed
  */
  function vestingsBalance(address _to) public view returns (uint256) {
    uint256 sum = 0;
    for (uint i=0; i<vestings[_to].length; i++) {
      sum = sum.add(vestings[_to][i].amount.sub(vestings[_to][i].withdrawed));
    }
    return sum;
  }

  /*
  sum of all remaining vestings balance (only the released part)
  released - withdrawed
  */
  function vestingsReleasedRemain(address _to) internal view returns (uint256) {
    uint256 sum = 0;
    for (uint i=0; i<vestings[_to].length; i++) {
      uint256 released = vestingReleased(
        vestings[_to][i].startTime, vestings[_to][i].initReleaseAmount, vestings[_to][i].amount,
        vestings[_to][i].interval, vestings[_to][i].periods
      );
      sum = sum.add(released.sub(vestings[_to][i].withdrawed));
    }
    return sum;
  }

  /*
  total balance
  sum of vestings balance (includes not released part) and unlocking coin balance
  */
  function balanceOf(address _to) public view returns (uint256) {
    uint256 vbalance = vestingsBalance(_to);
    return vbalance.add(super.balanceOf(_to));
  }

  /*
  sum of vestings balance and unlocking coin balance
  */
  function vestingsRemainBalance(address _to) internal view returns (uint256) {
    return vestingsReleasedRemain(_to).add(super.balanceOf(_to));
  }

  /*
  transfer <_value> coin from <msg.sender> to <_to> address
  1. check remain balance
  2. withdraw all vesting coin to balance
  3. call original ERC20 transafer function
  */
  function transfer(address _to, uint256 _value) public isNotCoinbase isNotPaused returns (bool) {
    checkAddress(_to);
    uint256 remain = vestingsRemainBalance(msg.sender);
    require(remain >= _value);
    withdrawVestings(msg.sender);
    return super.transfer(_to, _value);
  }

  /*
  transferFrom <_value> coin from <_from> to <_to> address
  1. check remain balance
  2. withdraw all vesting coin to balance
  3. call original ERC20 transafer function
  */
  function transferFrom(address _from, address _to, uint256 _value) public isNotPaused returns (bool) {
    checkAddress(_from);
    checkAddress(_to);
    uint256 remain = vestingsRemainBalance(_from);
    require(remain >= _value);
    withdrawVestings(_from);
    return super.transferFrom(_from, _to, _value);
  }

  /*
  approve <_value> coin from <_from> to <_to> address
  1. check remain balance
  2. withdraw all vesting coin to balance
  3. call original ERC20 transafer function
  */
  function approve(address _spender, uint256 _value) public isNotCoinbase isNotPaused returns (bool) {
    checkAddress(_spender);
    uint256 remain = vestingsRemainBalance(msg.sender);
    require(remain >= _value);
    withdrawVestings(msg.sender);
    return super.approve(_spender, _value);
  }

  function allowance(address _owner, address _spender) public view returns (uint256) {
    return super.allowance(_owner, _spender);
  }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"_old","type":"address"},{"name":"_new","type":"address"}],"name":"replaceManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"resume","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":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"data","type":"bytes"}],"name":"revoke","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":"_currentTime","type":"uint256"},{"name":"_startTime","type":"uint256"},{"name":"_initReleaseAmount","type":"uint256"},{"name":"_amount","type":"uint256"},{"name":"_interval","type":"uint256"},{"name":"_periods","type":"uint256"}],"name":"vestingFunc","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"}],"name":"addManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenDecimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_threshold","type":"uint256"}],"name":"setMajorityThreshold","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address[]"},{"name":"_amount","type":"uint256[]"}],"name":"batchPresale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_idx","type":"uint256"}],"name":"queryWithdrawed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"managersCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address[]"},{"name":"_startTime","type":"uint256[]"},{"name":"_initReleaseAmount","type":"uint256[]"},{"name":"_amount","type":"uint256[]"},{"name":"_interval","type":"uint256[]"},{"name":"_periods","type":"uint256[]"}],"name":"batchPresaleVesting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenName","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_to","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenSymbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_to","type":"address"}],"name":"isAddressManager","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_startTime","type":"uint256"},{"name":"_initReleaseAmount","type":"uint256"},{"name":"_amount","type":"uint256"},{"name":"_interval","type":"uint256"},{"name":"_periods","type":"uint256"}],"name":"presaleVesting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_to","type":"address"}],"name":"vestingsBalance","outputs":[{"name":"","type":"uint256"}],"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":true,"inputs":[{"name":"data","type":"bytes"}],"name":"isConfirmed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"}],"name":"removeManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMajorityThreshold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"data","type":"bytes"}],"name":"isMajorityConfirmed","outputs":[{"name":"","type":"bool"}],"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":"_currentTime","type":"uint256"},{"name":"_idx","type":"uint256"}],"name":"queryVestingRemain","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"data","type":"bytes"}],"name":"confirm","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenTotalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"presale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"data","type":"bytes"},{"name":"manager","type":"address"}],"name":"isConfirmedBy","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_master","type":"address"},{"name":"_managers","type":"address[]"},{"name":"_majorityThreshold","type":"uint256"},{"name":"_managementThreshold","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldThreshold","type":"uint256"},{"indexed":false,"name":"newThreshold","type":"uint256"}],"name":"MajorityThresholdChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldAddr","type":"address"},{"indexed":false,"name":"newAddr","type":"address"}],"name":"ReplaceManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"manager","type":"address"}],"name":"RemoveManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"manager","type":"address"}],"name":"AddManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"manager","type":"address"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Confirm","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"manager","type":"address"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Revoke","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Presale","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"startTime","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"interval","type":"uint256"},{"indexed":false,"name":"periods","type":"uint256"}],"name":"PresaleVesting","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]

60806040523480156200001157600080fd5b5060405162002f2d38038062002f2d83398101604081815282516020808501518386015160608701518587018652600f87527f54696d652042616e6b20546f6b656e000000000000000000000000000000000084880190815286518088018852600381527f544254000000000000000000000000000000000000000000000000000000000081870152336000908152958690529685206b204fce5e3e250261100000009081905560058190558851969994909401979296919560129291620000dd91600291906200024f565b506003805460ff191660ff84161790558051620001029060049060208401906200024f565b5050505050620001218562000241640100000000026401000000009004565b15156200012d57600080fd5b83518311156200013c57600080fd5b83518211156200014b57600080fd5b50600d8054600160a060020a038616600160a860020a0319909116179055600c8054600160a060020a03191633179055600a829055600b81905560005b83518110156200022057620001c48482815181101515620001a557fe5b9060200190602002015162000241640100000000026401000000009004565b1515620001d057600080fd5b6001600860008684815181101515620001e557fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff191691151591909117905560010162000188565b835162000235906007906020870190620002d4565b50505050505062000381565b600160a060020a0316151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200029257805160ff1916838001178555620002c2565b82800160010185558215620002c2579182015b82811115620002c2578251825591602001919060010190620002a5565b50620002d09291506200033a565b5090565b8280548282559060005260206000209081019282156200032c579160200282015b828111156200032c5782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190620002f5565b50620002d09291506200035a565b6200035791905b80821115620002d0576000815560010162000341565b90565b6200035791905b80821115620002d0578054600160a060020a031916815560010162000361565b612b9c80620003916000396000f3006080604052600436106101d75763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301d8715f81146101dc578063046f7da21461020557806306fdde031461021a578063095ea7b3146102a45780630b467b9b146102dc57806318160ddd146102fc57806323b872dd14610323578063246275471461034d57806327e235e3146103745780632d06177a14610395578063313ce567146103b65780633b97e856146103e15780633d4ba37a146103f65780635a778cf91461040e5780635bfdab261461049c5780635c658165146104b45780635c975abb146104db5780636308ae65146104f05780636b5396dc146105055780636c02a9311461067757806370a082311461068c5780637b61c320146106ad5780637c2b606a146106c25780638456cb59146106e35780638d012295146106f857806395d89b4114610728578063a4bad0ae1461073d578063a9059cbb1461075e578063aa95484514610782578063ac18de43146107db578063b43716a0146107fc578063cb1e438914610811578063dd62ed3e1461086a578063eb1fa69014610891578063f2ddc772146108ac578063f7abab9e146108cc578063f8a34b26146108e1578063fafd6bcb14610905575b600080fd5b3480156101e857600080fd5b50610203600160a060020a0360043581169060243516610969565b005b34801561021157600080fd5b50610203610aa5565b34801561022657600080fd5b5061022f610b3f565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610269578181015183820152602001610251565b50505050905090810190601f1680156102965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102b057600080fd5b506102c8600160a060020a0360043516602435610bd3565b604080519115158252519081900360200190f35b3480156102e857600080fd5b506102036004803560248101910135610c44565b34801561030857600080fd5b50610311610d65565b60408051918252519081900360200190f35b34801561032f57600080fd5b506102c8600160a060020a0360043581169060243516604435610d6b565b34801561035957600080fd5b5061031160043560243560443560643560843560a435610dd0565b34801561038057600080fd5b50610311600160a060020a0360043516610e81565b3480156103a157600080fd5b50610203600160a060020a0360043516610e93565b3480156103c257600080fd5b506103cb610fa8565b6040805160ff9092168252519081900360200190f35b3480156103ed57600080fd5b506103cb610fb1565b34801561040257600080fd5b50610203600435610fba565b34801561041a57600080fd5b506040805160206004803580820135838102808601850190965280855261020395369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506110c39650505050505050565b3480156104a857600080fd5b506103116004356111c9565b3480156104c057600080fd5b50610311600160a060020a03600435811690602435166111fd565b3480156104e757600080fd5b506102c861121a565b3480156104fc57600080fd5b5061031161122a565b34801561051157600080fd5b506040805160206004803580820135838102808601850190965280855261020395369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506112309650505050505050565b34801561068357600080fd5b5061022f61139a565b34801561069857600080fd5b50610311600160a060020a0360043516611425565b3480156106b957600080fd5b5061022f611453565b3480156106ce57600080fd5b506102c8600160a060020a03600435166114ae565b3480156106ef57600080fd5b506102036114cc565b34801561070457600080fd5b50610203600160a060020a036004351660243560443560643560843560a435611568565b34801561073457600080fd5b5061022f61163c565b34801561074957600080fd5b50610311600160a060020a036004351661169d565b34801561076a57600080fd5b506102c8600160a060020a0360043516602435611760565b34801561078e57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102c89436949293602493928401919081908401838280828437509497506117c99650505050505050565b3480156107e757600080fd5b50610203600160a060020a0360043516611865565b34801561080857600080fd5b5061031161198a565b34801561081d57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102c89436949293602493928401919081908401838280828437509497506119909650505050505050565b34801561087657600080fd5b50610311600160a060020a03600435811690602435166119a4565b34801561089d57600080fd5b506103116004356024356119b0565b3480156108b857600080fd5b506102036004803560248101910135611ad7565b3480156108d857600080fd5b50610311611bf7565b3480156108ed57600080fd5b50610203600160a060020a0360043516602435611bfd565b34801561091157600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102c894369492936024939284019190819084018382808284375094975050509235600160a060020a03169350611cbf92505050565b600d54600160a060020a0316331461098057600080fd5b600d5460a060020a900460ff161561099757600080fd5b6109a082611d48565b15156109ab57600080fd5b6109b481611d48565b15156109bf57600080fd5b6109fd6000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375050600b549350611d5692505050565b1515610a0857600080fd5b610a1182611e48565b610a1a81611e7d565b610a22611f04565b610a5c6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750612090945050505050565b60408051600160a060020a0380851682528316602082015281517fd220e07888d0f77e9de72a8091a24508f2e353caeb84535ef03a5d51369ee93e929181900390910190a15050565b600d54600160a060020a03163314610abc57600080fd5b600d5460a060020a900460ff161515600114610ad757600080fd5b610b146000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375060019450611d569350505050565b1515610b1f57600080fd5b600d805474ff000000000000000000000000000000000000000019169055565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610bc85780601f10610b9d57610100808354040283529160200191610bc8565b820191906000526020600020905b815481529060010190602001808311610bab57829003601f168201915b505050505090505b90565b600c546000908190600160a060020a0316331415610bf057600080fd5b600d5460a060020a900460ff1615610c0757600080fd5b610c1084611d48565b50610c1a3361215c565b905082811015610c2957600080fd5b610c3233612173565b610c3c8484612416565b949350505050565b3360009081526008602052604081205460ff161515610c6257600080fd5b610c9b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375061247c945050505050565b5082826040518083838082843760408051919093018190039020600081815260096020908152848220338352905292909220549195505060ff161515600114159250610d069150505760008181526009602090815260408083203384529091529020805460ff191690555b6040805133808252602082018381529282018590527f29bae56ce9ae5ab0e825fdf15a46c9741be5c31407c09950829f7d12f73564ad9290918691869190606082018484808284376040519201829003965090945050505050a1505050565b60055490565b600d54600090819060a060020a900460ff1615610d8757600080fd5b610d9085611d48565b50610d9a84611d48565b50610da48561215c565b905082811015610db357600080fd5b610dbc85612173565b610dc7858585612482565b95945050505050565b6000806000806000898b1015610de95760009450610e73565b610df98b8b63ffffffff61258516565b9350610e0b868863ffffffff61259716565b9250828410610e1c57879450610e73565b610e3c86610e308a8c63ffffffff61258516565b9063ffffffff6125c016565b9150610e4e848863ffffffff6125c016565b9050610e7089610e64848463ffffffff61259716565b9063ffffffff6125d516565b94505b505050509695505050505050565b60006020819052908152604090205481565b600d54600160a060020a03163314610eaa57600080fd5b600d5460a060020a900460ff1615610ec157600080fd5b610eca81611d48565b1515610ed557600080fd5b610f136000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375050600b549350611d5692505050565b1515610f1e57600080fd5b610f2781611e7d565b610f2f611f04565b610f696000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750612090945050505050565b60408051600160a060020a038316815290517f3630096a7f9a158ab9fae41e86bfe31fd2202585a26a9668242672566dae028d9181900360200190a150565b60035460ff1690565b60035460ff1681565b600d54600090600160a060020a03163314610fd457600080fd5b600d5460a060020a900460ff1615610feb57600080fd5b60008211610ff857600080fd5b6110366000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375050600b549350611d5692505050565b151561104157600080fd5b50600a80549082905560408051602036601f8101829004820283018201909352828252611081926000918190840183828082843750612090945050505050565b600a5460408051838152602081019290925280517f54f7348cdd7784993530bea78eaac4850e302c25150d79711738c4b926161dda9281900390910190a15050565b3360009081526008602052604081205460ff1615156110e157600080fd5b600d5460a060020a900460ff16156110f857600080fd5b6111326000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750611990945050505050565b151561113d57600080fd5b5060005b825181101561118a57611182838281518110151561115b57fe5b90602001906020020151838381518110151561117357fe5b906020019060200201516125e2565b600101611141565b6111c46000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750612090945050505050565b505050565b3360009081526006602052604081208054839081106111e457fe5b9060005260206000209060060201600501549050919050565b600160209081526000928352604080842090915290825290205481565b600d5460a060020a900460ff1681565b60075490565b3360009081526008602052604081205460ff16151561124e57600080fd5b600d5460a060020a900460ff161561126557600080fd5b61129f6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750611990945050505050565b15156112aa57600080fd5b5060005b86518110156113575761134f87828151811015156112c857fe5b9060200190602002015187838151811015156112e057fe5b9060200190602002015187848151811015156112f857fe5b90602001906020020151878581518110151561131057fe5b90602001906020020151878681518110151561132857fe5b90602001906020020151878781518110151561134057fe5b906020019060200201516126d8565b6001016112ae565b6113916000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750612090945050505050565b50505050505050565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561141d5780601f106113f25761010080835404028352916020019161141d565b820191906000526020600020905b81548152906001019060200180831161140057829003601f168201915b505050505081565b6000806114318361169d565b905061144c61143f84612838565b829063ffffffff6125d516565b9392505050565b6004805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561141d5780601f106113f25761010080835404028352916020019161141d565b600160a060020a031660009081526008602052604090205460ff1690565b600d54600160a060020a031633146114e357600080fd5b600d5460a060020a900460ff16156114fa57600080fd5b6115376000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375060019450611d569350505050565b151561154257600080fd5b600d805474ff0000000000000000000000000000000000000000191660a060020a179055565b3360009081526008602052604090205460ff16151561158657600080fd5b600d5460a060020a900460ff161561159d57600080fd5b6115a686611d48565b506115e16000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750611990945050505050565b15156115ec57600080fd5b6115fa8686868686866126d8565b6116346000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750612090945050505050565b505050505050565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bc85780601f10610b9d57610100808354040283529160200191610bc8565b600080805b600160a060020a03841660009081526006602052604090205481101561175957600160a060020a0384166000908152600660205260409020805461174f9161174291849081106116ee57fe5b6000918252602080832060069283020160050154600160a060020a038a168452919052604090912080548590811061172257fe5b90600052602060002090600602016002015461258590919063ffffffff16565b839063ffffffff6125d516565b91506001016116a2565b5092915050565b600c546000908190600160a060020a031633141561177d57600080fd5b600d5460a060020a900460ff161561179457600080fd5b61179d84611d48565b506117a73361215c565b9050828110156117b657600080fd5b6117bf33612173565b610c3c8484612853565b33600090815260086020526040812054819060ff1615156117e957600080fd5b826040518082805190602001908083835b602083106118195780518252601f1990920191602091820191016117fa565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600090815260098252838120338252909152919091205460ff169695505050505050565b600d54600160a060020a0316331461187c57600080fd5b600d5460a060020a900460ff161561189357600080fd5b61189c81611d48565b15156118a757600080fd5b6118e56000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375050600b549350611d5692505050565b15156118f057600080fd5b600b546007541161190057600080fd5b61190981611e48565b611911611f04565b61194b6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750612090945050505050565b60408051600160a060020a038316815290517f1e25ed4cabec84d314dc176241019653f237da01f2bdd3a10cb0f38b33da67639181900360200190a150565b600a5490565b600061199e82600a54611d56565b92915050565b600061144c83836128db565b33600090815260066020526040812080548291611a9491869190869081106119d457fe5b600091825260208083206006928302015433845291905260409091208054879081106119fc57fe5b60009182526020808320600692830201600101543384529190526040909120805488908110611a2757fe5b60009182526020808320600692830201600201543384529190526040909120805489908110611a5257fe5b6000918252602080832060069283020160030154338452919052604090912080548a908110611a7d57fe5b906000526020600020906006020160040154610dd0565b3360009081526006602052604090208054919250610c3c9185908110611ab657fe5b9060005260206000209060060201600501548261258590919063ffffffff16565b3360009081526008602052604081205460ff161515611af557600080fd5b611b2e83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375061247c945050505050565b5082826040518083838082843760408051919093018190039020600081815260096020908152848220338352905292909220549195505060ff1615159250611b989150505760008181526009602090815260408083203384529091529020805460ff191660011790555b6040805133808252602082018381529282018590527f38c05f29d828729711b9543dbd38ccdca2ad37ac7051ea119b9403c1dccb7fec9290918691869190606082018484808284376040519201829003965090945050505050a1505050565b60055481565b3360009081526008602052604090205460ff161515611c1b57600080fd5b600d5460a060020a900460ff1615611c3257600080fd5b611c6c6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750611990945050505050565b1515611c7757600080fd5b611c8182826125e2565b611cbb6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750612090945050505050565b5050565b600080836040518082805190602001908083835b60208310611cf25780518252601f199092019160209182019101611cd3565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600090815260098252838120600160a060020a03999099168152979052509094205460ff1695945050505050565b600160a060020a0316151590565b600080600080856040518082805190602001908083835b60208310611d8c5780518252601f199092019160209182019101611d6d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020925060009150600090505b600754811015611e3b5760008381526009602052604081206007805491929184908110611ded57fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff16151560011415611e3357611e3082600163ffffffff6125d516565b91505b600101611dc4565b5092909210159392505050565b611e5181611d48565b1515611e5c57600080fd5b600160a060020a03166000908152600860205260409020805460ff19169055565b611e8681611d48565b1515611e9157600080fd5b600160a060020a03166000818152600860205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b6060600080600080600780549050604051908082528060200260200182016040528015611f3b578160200160208202803883390190505b509450600093505b600754841015611fa2576000600e6000600787815481101515611f6257fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff191691151591909117905560019390930192611f43565b60009250600091505b600754821015612070576007805483908110611fc357fe5b6000918252602080832090910154600160a060020a0316808352600890915260409091205490915060ff1680156120135750600160a060020a0381166000908152600e602052604090205460ff16155b156120655780858481518110151561202757fe5b600160a060020a0392831660209182029092018101919091529082166000908152600e90915260409020805460ff1916600190811790915592909201915b600190910190611fab565b8451612083906007906020880190612a8f565b5082611634600782612b01565b600080826040518082805190602001908083835b602083106120c35780518252601f1990920191602091820191016120a4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600090505b6007548110156111c4576000828152600960205260408120600780548391908590811061212057fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff19169115159190911790556001016120f7565b600061199e61216a83612838565b610e6484612906565b60008080805b600160a060020a0385166000908152600660205260409020548310156123ca57600160a060020a03851660009081526006602052604090208054849081106121bd57fe5b6000918252602080832060069283020160050154600160a060020a038916845291905260409091208054859081106121f157fe5b906000526020600020906006020160020154141561220e576123bf565b600160a060020a0385166000908152600660205260409020805461231b91908590811061223757fe5b6000918252602080832060069283020154600160a060020a038a168452919052604090912080548690811061226857fe5b6000918252602080832060069283020160010154600160a060020a038b168452919052604090912080548790811061229c57fe5b6000918252602080832060069283020160020154600160a060020a038c16845291905260409091208054889081106122d057fe5b6000918252602080832060069283020160030154600160a060020a038d168452919052604090912080548990811061230457fe5b906000526020600020906006020160040154612a75565b600160a060020a03861660009081526006602052604090208054919350612367918590811061234657fe5b9060005260206000209060060201600501548361258590919063ffffffff16565b9050600081106123bf57600160a060020a038516600090815260066020526040902080548391908590811061239857fe5b60009182526020909120600560069092020101556123bc848263ffffffff6125d516565b93505b600190920191612179565b600160a060020a0385166000908152602081905260409020546123f3908563ffffffff6125d516565b600160a060020a0390951660009081526020819052604090209490945550505050565b336000818152600160209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b51151590565b600160a060020a03831660008181526001602090815260408083203384528252808320549383529082905281205490919083118015906124c25750828110155b15156124cd57600080fd5b600160a060020a038085166000908152602081905260408082208054870190559187168152208054849003905560001981101561252f57600160a060020a03851660009081526001602090815260408083203384529091529020805484900390555b83600160a060020a031685600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3506001949350505050565b60008282111561259157fe5b50900390565b60008215156125a85750600061199e565b508181028183828115156125b857fe5b041461199e57fe5b600081838115156125cd57fe5b049392505050565b8181018281101561199e57fe5b600c54600160a060020a031660009081526020819052604090205481111561260957600080fd5b61261282611d48565b151561261d57600080fd5b600160a060020a038216600090815260208190526040902054612646908263ffffffff6125d516565b600160a060020a0380841660009081526020819052604080822093909355600c549091168152205461267e908263ffffffff61258516565b600c54600160a060020a03908116600090815260208181526040918290209390935580518481529051918516927f10fcc92ce3ae296b6d2813de054ab2cf2d6dd59a1eed235681bc8bf6c36a5cb792918290030190a25050565b600c54600160a060020a03166000908152602081905260409020548311156126ff57600080fd5b8284111561270c57600080fd5b61271586611d48565b151561272057600080fd5b600160a060020a038087166000908152600660208181526040808420815160c0810183528b81528084018b81528184018b8152606083018b8152608084018b815260a085018a8152865460018181018955978c52898c2096519a02909501988955925194880194909455516002870155915160038601559051600485015551600590930192909255600c5490931682529181905220546127c6908463ffffffff61258516565b600c54600160a060020a03908116600090815260208181526040918290209390935580518881529283018690528281018590526060830184905251908816917f2d4afe38387afa0f5d58486162a04c4e854134e75bf89e68f2a4ad38894dedac919081900360800190a2505050505050565b600160a060020a031660009081526020819052604090205490565b3360009081526020819052604081205482111561286f57600080fd5b3360008181526020818152604080832080548790039055600160a060020a03871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b60008080805b600160a060020a038516600090815260066020526040902054821015612a6c57600160a060020a03851660009081526006602052604090208054612a2291908490811061295557fe5b6000918252602080832060069283020154600160a060020a038a168452919052604090912080548590811061298657fe5b6000918252602080832060069283020160010154600160a060020a038b16845291905260409091208054869081106129ba57fe5b6000918252602080832060069283020160020154600160a060020a038c16845291905260409091208054879081106129ee57fe5b6000918252602080832060069283020160030154600160a060020a038d168452919052604090912080548890811061230457fe5b600160a060020a03861660009081526006602052604090208054919250612a5f91612a5291908590811061234657fe5b849063ffffffff6125d516565b925060019091019061290c565b50909392505050565b6000612a85428787878787610dd0565b9695505050505050565b828054828255906000526020600020908101928215612af1579160200282015b82811115612af1578251825473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909116178255602090920191600190910190612aaf565b50612afd929150612b25565b5090565b8154818355818111156111c4576000838152602090206111c4918101908301612b56565b610bd091905b80821115612afd57805473ffffffffffffffffffffffffffffffffffffffff19168155600101612b2b565b610bd091905b80821115612afd5760008155600101612b5c5600a165627a7a72305820f5c9c277aa2e9e5056ad7f187a7c516ffafff2e69be67bdb32c08cba0ecfc2b80029000000000000000000000000a5ae2048af02cde6720b30b7ac17c9cb26092eb20000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000004000000000000000000000000b6e44f6e5551718d1fd2adaf8a210fc4fd8e74f0000000000000000000000000b8da7ec01033007ab396d27b45253882484f93fa000000000000000000000000f28f8eb05252bc1e2a689cb8db9ee7aff5c8310c0000000000000000000000009fec6f021616e4fddd65d03faa6da1bbde9029c5

Deployed Bytecode

0x6080604052600436106101d75763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301d8715f81146101dc578063046f7da21461020557806306fdde031461021a578063095ea7b3146102a45780630b467b9b146102dc57806318160ddd146102fc57806323b872dd14610323578063246275471461034d57806327e235e3146103745780632d06177a14610395578063313ce567146103b65780633b97e856146103e15780633d4ba37a146103f65780635a778cf91461040e5780635bfdab261461049c5780635c658165146104b45780635c975abb146104db5780636308ae65146104f05780636b5396dc146105055780636c02a9311461067757806370a082311461068c5780637b61c320146106ad5780637c2b606a146106c25780638456cb59146106e35780638d012295146106f857806395d89b4114610728578063a4bad0ae1461073d578063a9059cbb1461075e578063aa95484514610782578063ac18de43146107db578063b43716a0146107fc578063cb1e438914610811578063dd62ed3e1461086a578063eb1fa69014610891578063f2ddc772146108ac578063f7abab9e146108cc578063f8a34b26146108e1578063fafd6bcb14610905575b600080fd5b3480156101e857600080fd5b50610203600160a060020a0360043581169060243516610969565b005b34801561021157600080fd5b50610203610aa5565b34801561022657600080fd5b5061022f610b3f565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610269578181015183820152602001610251565b50505050905090810190601f1680156102965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102b057600080fd5b506102c8600160a060020a0360043516602435610bd3565b604080519115158252519081900360200190f35b3480156102e857600080fd5b506102036004803560248101910135610c44565b34801561030857600080fd5b50610311610d65565b60408051918252519081900360200190f35b34801561032f57600080fd5b506102c8600160a060020a0360043581169060243516604435610d6b565b34801561035957600080fd5b5061031160043560243560443560643560843560a435610dd0565b34801561038057600080fd5b50610311600160a060020a0360043516610e81565b3480156103a157600080fd5b50610203600160a060020a0360043516610e93565b3480156103c257600080fd5b506103cb610fa8565b6040805160ff9092168252519081900360200190f35b3480156103ed57600080fd5b506103cb610fb1565b34801561040257600080fd5b50610203600435610fba565b34801561041a57600080fd5b506040805160206004803580820135838102808601850190965280855261020395369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506110c39650505050505050565b3480156104a857600080fd5b506103116004356111c9565b3480156104c057600080fd5b50610311600160a060020a03600435811690602435166111fd565b3480156104e757600080fd5b506102c861121a565b3480156104fc57600080fd5b5061031161122a565b34801561051157600080fd5b506040805160206004803580820135838102808601850190965280855261020395369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506112309650505050505050565b34801561068357600080fd5b5061022f61139a565b34801561069857600080fd5b50610311600160a060020a0360043516611425565b3480156106b957600080fd5b5061022f611453565b3480156106ce57600080fd5b506102c8600160a060020a03600435166114ae565b3480156106ef57600080fd5b506102036114cc565b34801561070457600080fd5b50610203600160a060020a036004351660243560443560643560843560a435611568565b34801561073457600080fd5b5061022f61163c565b34801561074957600080fd5b50610311600160a060020a036004351661169d565b34801561076a57600080fd5b506102c8600160a060020a0360043516602435611760565b34801561078e57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102c89436949293602493928401919081908401838280828437509497506117c99650505050505050565b3480156107e757600080fd5b50610203600160a060020a0360043516611865565b34801561080857600080fd5b5061031161198a565b34801561081d57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102c89436949293602493928401919081908401838280828437509497506119909650505050505050565b34801561087657600080fd5b50610311600160a060020a03600435811690602435166119a4565b34801561089d57600080fd5b506103116004356024356119b0565b3480156108b857600080fd5b506102036004803560248101910135611ad7565b3480156108d857600080fd5b50610311611bf7565b3480156108ed57600080fd5b50610203600160a060020a0360043516602435611bfd565b34801561091157600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102c894369492936024939284019190819084018382808284375094975050509235600160a060020a03169350611cbf92505050565b600d54600160a060020a0316331461098057600080fd5b600d5460a060020a900460ff161561099757600080fd5b6109a082611d48565b15156109ab57600080fd5b6109b481611d48565b15156109bf57600080fd5b6109fd6000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375050600b549350611d5692505050565b1515610a0857600080fd5b610a1182611e48565b610a1a81611e7d565b610a22611f04565b610a5c6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750612090945050505050565b60408051600160a060020a0380851682528316602082015281517fd220e07888d0f77e9de72a8091a24508f2e353caeb84535ef03a5d51369ee93e929181900390910190a15050565b600d54600160a060020a03163314610abc57600080fd5b600d5460a060020a900460ff161515600114610ad757600080fd5b610b146000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375060019450611d569350505050565b1515610b1f57600080fd5b600d805474ff000000000000000000000000000000000000000019169055565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610bc85780601f10610b9d57610100808354040283529160200191610bc8565b820191906000526020600020905b815481529060010190602001808311610bab57829003601f168201915b505050505090505b90565b600c546000908190600160a060020a0316331415610bf057600080fd5b600d5460a060020a900460ff1615610c0757600080fd5b610c1084611d48565b50610c1a3361215c565b905082811015610c2957600080fd5b610c3233612173565b610c3c8484612416565b949350505050565b3360009081526008602052604081205460ff161515610c6257600080fd5b610c9b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375061247c945050505050565b5082826040518083838082843760408051919093018190039020600081815260096020908152848220338352905292909220549195505060ff161515600114159250610d069150505760008181526009602090815260408083203384529091529020805460ff191690555b6040805133808252602082018381529282018590527f29bae56ce9ae5ab0e825fdf15a46c9741be5c31407c09950829f7d12f73564ad9290918691869190606082018484808284376040519201829003965090945050505050a1505050565b60055490565b600d54600090819060a060020a900460ff1615610d8757600080fd5b610d9085611d48565b50610d9a84611d48565b50610da48561215c565b905082811015610db357600080fd5b610dbc85612173565b610dc7858585612482565b95945050505050565b6000806000806000898b1015610de95760009450610e73565b610df98b8b63ffffffff61258516565b9350610e0b868863ffffffff61259716565b9250828410610e1c57879450610e73565b610e3c86610e308a8c63ffffffff61258516565b9063ffffffff6125c016565b9150610e4e848863ffffffff6125c016565b9050610e7089610e64848463ffffffff61259716565b9063ffffffff6125d516565b94505b505050509695505050505050565b60006020819052908152604090205481565b600d54600160a060020a03163314610eaa57600080fd5b600d5460a060020a900460ff1615610ec157600080fd5b610eca81611d48565b1515610ed557600080fd5b610f136000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375050600b549350611d5692505050565b1515610f1e57600080fd5b610f2781611e7d565b610f2f611f04565b610f696000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750612090945050505050565b60408051600160a060020a038316815290517f3630096a7f9a158ab9fae41e86bfe31fd2202585a26a9668242672566dae028d9181900360200190a150565b60035460ff1690565b60035460ff1681565b600d54600090600160a060020a03163314610fd457600080fd5b600d5460a060020a900460ff1615610feb57600080fd5b60008211610ff857600080fd5b6110366000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375050600b549350611d5692505050565b151561104157600080fd5b50600a80549082905560408051602036601f8101829004820283018201909352828252611081926000918190840183828082843750612090945050505050565b600a5460408051838152602081019290925280517f54f7348cdd7784993530bea78eaac4850e302c25150d79711738c4b926161dda9281900390910190a15050565b3360009081526008602052604081205460ff1615156110e157600080fd5b600d5460a060020a900460ff16156110f857600080fd5b6111326000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750611990945050505050565b151561113d57600080fd5b5060005b825181101561118a57611182838281518110151561115b57fe5b90602001906020020151838381518110151561117357fe5b906020019060200201516125e2565b600101611141565b6111c46000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750612090945050505050565b505050565b3360009081526006602052604081208054839081106111e457fe5b9060005260206000209060060201600501549050919050565b600160209081526000928352604080842090915290825290205481565b600d5460a060020a900460ff1681565b60075490565b3360009081526008602052604081205460ff16151561124e57600080fd5b600d5460a060020a900460ff161561126557600080fd5b61129f6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750611990945050505050565b15156112aa57600080fd5b5060005b86518110156113575761134f87828151811015156112c857fe5b9060200190602002015187838151811015156112e057fe5b9060200190602002015187848151811015156112f857fe5b90602001906020020151878581518110151561131057fe5b90602001906020020151878681518110151561132857fe5b90602001906020020151878781518110151561134057fe5b906020019060200201516126d8565b6001016112ae565b6113916000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750612090945050505050565b50505050505050565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561141d5780601f106113f25761010080835404028352916020019161141d565b820191906000526020600020905b81548152906001019060200180831161140057829003601f168201915b505050505081565b6000806114318361169d565b905061144c61143f84612838565b829063ffffffff6125d516565b9392505050565b6004805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561141d5780601f106113f25761010080835404028352916020019161141d565b600160a060020a031660009081526008602052604090205460ff1690565b600d54600160a060020a031633146114e357600080fd5b600d5460a060020a900460ff16156114fa57600080fd5b6115376000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375060019450611d569350505050565b151561154257600080fd5b600d805474ff0000000000000000000000000000000000000000191660a060020a179055565b3360009081526008602052604090205460ff16151561158657600080fd5b600d5460a060020a900460ff161561159d57600080fd5b6115a686611d48565b506115e16000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750611990945050505050565b15156115ec57600080fd5b6115fa8686868686866126d8565b6116346000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750612090945050505050565b505050505050565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bc85780601f10610b9d57610100808354040283529160200191610bc8565b600080805b600160a060020a03841660009081526006602052604090205481101561175957600160a060020a0384166000908152600660205260409020805461174f9161174291849081106116ee57fe5b6000918252602080832060069283020160050154600160a060020a038a168452919052604090912080548590811061172257fe5b90600052602060002090600602016002015461258590919063ffffffff16565b839063ffffffff6125d516565b91506001016116a2565b5092915050565b600c546000908190600160a060020a031633141561177d57600080fd5b600d5460a060020a900460ff161561179457600080fd5b61179d84611d48565b506117a73361215c565b9050828110156117b657600080fd5b6117bf33612173565b610c3c8484612853565b33600090815260086020526040812054819060ff1615156117e957600080fd5b826040518082805190602001908083835b602083106118195780518252601f1990920191602091820191016117fa565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600090815260098252838120338252909152919091205460ff169695505050505050565b600d54600160a060020a0316331461187c57600080fd5b600d5460a060020a900460ff161561189357600080fd5b61189c81611d48565b15156118a757600080fd5b6118e56000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375050600b549350611d5692505050565b15156118f057600080fd5b600b546007541161190057600080fd5b61190981611e48565b611911611f04565b61194b6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750612090945050505050565b60408051600160a060020a038316815290517f1e25ed4cabec84d314dc176241019653f237da01f2bdd3a10cb0f38b33da67639181900360200190a150565b600a5490565b600061199e82600a54611d56565b92915050565b600061144c83836128db565b33600090815260066020526040812080548291611a9491869190869081106119d457fe5b600091825260208083206006928302015433845291905260409091208054879081106119fc57fe5b60009182526020808320600692830201600101543384529190526040909120805488908110611a2757fe5b60009182526020808320600692830201600201543384529190526040909120805489908110611a5257fe5b6000918252602080832060069283020160030154338452919052604090912080548a908110611a7d57fe5b906000526020600020906006020160040154610dd0565b3360009081526006602052604090208054919250610c3c9185908110611ab657fe5b9060005260206000209060060201600501548261258590919063ffffffff16565b3360009081526008602052604081205460ff161515611af557600080fd5b611b2e83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375061247c945050505050565b5082826040518083838082843760408051919093018190039020600081815260096020908152848220338352905292909220549195505060ff1615159250611b989150505760008181526009602090815260408083203384529091529020805460ff191660011790555b6040805133808252602082018381529282018590527f38c05f29d828729711b9543dbd38ccdca2ad37ac7051ea119b9403c1dccb7fec9290918691869190606082018484808284376040519201829003965090945050505050a1505050565b60055481565b3360009081526008602052604090205460ff161515611c1b57600080fd5b600d5460a060020a900460ff1615611c3257600080fd5b611c6c6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750611990945050505050565b1515611c7757600080fd5b611c8182826125e2565b611cbb6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750612090945050505050565b5050565b600080836040518082805190602001908083835b60208310611cf25780518252601f199092019160209182019101611cd3565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120600090815260098252838120600160a060020a03999099168152979052509094205460ff1695945050505050565b600160a060020a0316151590565b600080600080856040518082805190602001908083835b60208310611d8c5780518252601f199092019160209182019101611d6d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020925060009150600090505b600754811015611e3b5760008381526009602052604081206007805491929184908110611ded57fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205460ff16151560011415611e3357611e3082600163ffffffff6125d516565b91505b600101611dc4565b5092909210159392505050565b611e5181611d48565b1515611e5c57600080fd5b600160a060020a03166000908152600860205260409020805460ff19169055565b611e8681611d48565b1515611e9157600080fd5b600160a060020a03166000818152600860205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b6060600080600080600780549050604051908082528060200260200182016040528015611f3b578160200160208202803883390190505b509450600093505b600754841015611fa2576000600e6000600787815481101515611f6257fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff191691151591909117905560019390930192611f43565b60009250600091505b600754821015612070576007805483908110611fc357fe5b6000918252602080832090910154600160a060020a0316808352600890915260409091205490915060ff1680156120135750600160a060020a0381166000908152600e602052604090205460ff16155b156120655780858481518110151561202757fe5b600160a060020a0392831660209182029092018101919091529082166000908152600e90915260409020805460ff1916600190811790915592909201915b600190910190611fab565b8451612083906007906020880190612a8f565b5082611634600782612b01565b600080826040518082805190602001908083835b602083106120c35780518252601f1990920191602091820191016120a4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600090505b6007548110156111c4576000828152600960205260408120600780548391908590811061212057fe5b600091825260208083209190910154600160a060020a031683528201929092526040019020805460ff19169115159190911790556001016120f7565b600061199e61216a83612838565b610e6484612906565b60008080805b600160a060020a0385166000908152600660205260409020548310156123ca57600160a060020a03851660009081526006602052604090208054849081106121bd57fe5b6000918252602080832060069283020160050154600160a060020a038916845291905260409091208054859081106121f157fe5b906000526020600020906006020160020154141561220e576123bf565b600160a060020a0385166000908152600660205260409020805461231b91908590811061223757fe5b6000918252602080832060069283020154600160a060020a038a168452919052604090912080548690811061226857fe5b6000918252602080832060069283020160010154600160a060020a038b168452919052604090912080548790811061229c57fe5b6000918252602080832060069283020160020154600160a060020a038c16845291905260409091208054889081106122d057fe5b6000918252602080832060069283020160030154600160a060020a038d168452919052604090912080548990811061230457fe5b906000526020600020906006020160040154612a75565b600160a060020a03861660009081526006602052604090208054919350612367918590811061234657fe5b9060005260206000209060060201600501548361258590919063ffffffff16565b9050600081106123bf57600160a060020a038516600090815260066020526040902080548391908590811061239857fe5b60009182526020909120600560069092020101556123bc848263ffffffff6125d516565b93505b600190920191612179565b600160a060020a0385166000908152602081905260409020546123f3908563ffffffff6125d516565b600160a060020a0390951660009081526020819052604090209490945550505050565b336000818152600160209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b51151590565b600160a060020a03831660008181526001602090815260408083203384528252808320549383529082905281205490919083118015906124c25750828110155b15156124cd57600080fd5b600160a060020a038085166000908152602081905260408082208054870190559187168152208054849003905560001981101561252f57600160a060020a03851660009081526001602090815260408083203384529091529020805484900390555b83600160a060020a031685600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3506001949350505050565b60008282111561259157fe5b50900390565b60008215156125a85750600061199e565b508181028183828115156125b857fe5b041461199e57fe5b600081838115156125cd57fe5b049392505050565b8181018281101561199e57fe5b600c54600160a060020a031660009081526020819052604090205481111561260957600080fd5b61261282611d48565b151561261d57600080fd5b600160a060020a038216600090815260208190526040902054612646908263ffffffff6125d516565b600160a060020a0380841660009081526020819052604080822093909355600c549091168152205461267e908263ffffffff61258516565b600c54600160a060020a03908116600090815260208181526040918290209390935580518481529051918516927f10fcc92ce3ae296b6d2813de054ab2cf2d6dd59a1eed235681bc8bf6c36a5cb792918290030190a25050565b600c54600160a060020a03166000908152602081905260409020548311156126ff57600080fd5b8284111561270c57600080fd5b61271586611d48565b151561272057600080fd5b600160a060020a038087166000908152600660208181526040808420815160c0810183528b81528084018b81528184018b8152606083018b8152608084018b815260a085018a8152865460018181018955978c52898c2096519a02909501988955925194880194909455516002870155915160038601559051600485015551600590930192909255600c5490931682529181905220546127c6908463ffffffff61258516565b600c54600160a060020a03908116600090815260208181526040918290209390935580518881529283018690528281018590526060830184905251908816917f2d4afe38387afa0f5d58486162a04c4e854134e75bf89e68f2a4ad38894dedac919081900360800190a2505050505050565b600160a060020a031660009081526020819052604090205490565b3360009081526020819052604081205482111561286f57600080fd5b3360008181526020818152604080832080548790039055600160a060020a03871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b60008080805b600160a060020a038516600090815260066020526040902054821015612a6c57600160a060020a03851660009081526006602052604090208054612a2291908490811061295557fe5b6000918252602080832060069283020154600160a060020a038a168452919052604090912080548590811061298657fe5b6000918252602080832060069283020160010154600160a060020a038b16845291905260409091208054869081106129ba57fe5b6000918252602080832060069283020160020154600160a060020a038c16845291905260409091208054879081106129ee57fe5b6000918252602080832060069283020160030154600160a060020a038d168452919052604090912080548890811061230457fe5b600160a060020a03861660009081526006602052604090208054919250612a5f91612a5291908590811061234657fe5b849063ffffffff6125d516565b925060019091019061290c565b50909392505050565b6000612a85428787878787610dd0565b9695505050505050565b828054828255906000526020600020908101928215612af1579160200282015b82811115612af1578251825473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909116178255602090920191600190910190612aaf565b50612afd929150612b25565b5090565b8154818355818111156111c4576000838152602090206111c4918101908301612b56565b610bd091905b80821115612afd57805473ffffffffffffffffffffffffffffffffffffffff19168155600101612b2b565b610bd091905b80821115612afd5760008155600101612b5c5600a165627a7a72305820f5c9c277aa2e9e5056ad7f187a7c516ffafff2e69be67bdb32c08cba0ecfc2b80029

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

000000000000000000000000a5ae2048af02cde6720b30b7ac17c9cb26092eb20000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000004000000000000000000000000b6e44f6e5551718d1fd2adaf8a210fc4fd8e74f0000000000000000000000000b8da7ec01033007ab396d27b45253882484f93fa000000000000000000000000f28f8eb05252bc1e2a689cb8db9ee7aff5c8310c0000000000000000000000009fec6f021616e4fddd65d03faa6da1bbde9029c5

-----Decoded View---------------
Arg [0] : _master (address): 0xa5aE2048Af02CDE6720b30B7aC17C9cb26092eB2
Arg [1] : _managers (address[]): 0xB6e44f6E5551718D1fd2AdAf8a210Fc4Fd8E74F0,0xB8DA7ec01033007ab396d27b45253882484F93fa,0xF28f8EB05252bc1E2A689CB8dB9eE7AFf5c8310c,0x9fEc6F021616e4FDDd65d03fAA6da1BBde9029C5
Arg [2] : _majorityThreshold (uint256): 3
Arg [3] : _managementThreshold (uint256): 1

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 000000000000000000000000a5ae2048af02cde6720b30b7ac17c9cb26092eb2
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 000000000000000000000000b6e44f6e5551718d1fd2adaf8a210fc4fd8e74f0
Arg [6] : 000000000000000000000000b8da7ec01033007ab396d27b45253882484f93fa
Arg [7] : 000000000000000000000000f28f8eb05252bc1e2a689cb8db9ee7aff5c8310c
Arg [8] : 0000000000000000000000009fec6f021616e4fddd65d03faa6da1bbde9029c5


Swarm Source

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