false
true
0

Contract Address Details

0xF3e014fE81267870624132ef3A646B8E83853a96

Token
VIN (VIN)
Creator
0x00b226–6b27dd at 0x6a4292–b5d5ce
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
34,102 Transactions
Transfers
0 Transfers
Gas Used
0
Last Balance Update
26035870
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify. View contract in Sourcify repository
Contract name:
VinToken




Optimization enabled
true
Compiler version
v0.4.15+commit.bbb8e64f




Optimization runs
200
Verified at
2026-02-28T23:02:33.387079Z

Constructor Arguments

0000000000000000000000008e1a4ea526fe0c513b043daa5e83e99c48f07a7e0000000000000000000000006c10491f481bbda18f1cfb2bdef5abe2d296e1be000000000000000000000000000000000000000000000000000000005ab3b6e0000000000000000000000000000000000000000000000000000000005ad35ae0

Arg [0] (address) : 0x8e1a4ea526fe0c513b043daa5e83e99c48f07a7e
Arg [1] (address) : 0x6c10491f481bbda18f1cfb2bdef5abe2d296e1be
Arg [2] (uint256) : 1521727200
Arg [3] (uint256) : 1523800800

              

VinToken.sol

pragma solidity 0.4.15;

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal constant 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 c;
  }

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

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

/**
 * @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() {
    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) onlyOwner public {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

/**
 * @title Contactable token
 * @dev Basic version of a contactable contract, allowing the owner to provide a string with their
 * contact information.
 */
contract Contactable is Ownable{

    string public contactInformation;

    /**
     * @dev Allows the owner to set a string with their contact information.
     * @param info The contact information to attach to the contract.
     */
    function setContactInformation(string info) onlyOwner public {
         contactInformation = info;
     }
}

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) public constant 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 constant 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);
}

contract LockableToken is ERC20 {
    function addToTimeLockedList(address addr) external returns (bool);
}

contract VinToken is Contactable {
    using SafeMath for uint;

    string constant public name = "VIN";
    string constant public symbol = "VIN";
    uint constant public decimals = 18;
    uint constant public totalSupply = (10 ** 9) * (10 ** decimals); // 1 000 000 000 VIN
    uint constant public lockPeriod1 = 2 years;
    uint constant public lockPeriod2 = 24 weeks;
    uint constant public lockPeriodForBuyers = 12 weeks;

    mapping (address => uint) balances;
    mapping (address => mapping (address => uint)) allowed;
    bool public isActivated = false;
    mapping (address => bool) public whitelistedBeforeActivation;
    mapping (address => bool) public isPresaleBuyer;
    address public saleAddress;
    address public founder1Address;
    address public founder2Address;
    uint public icoEndTime;
    uint public icoStartTime;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint value);

    function VinToken(
        address _founder1Address,
        address _founder2Address,
        uint _icoStartTime,
        uint _icoEndTime
        ) public 
    {
        require(_founder1Address != 0x0);
        require(_founder2Address != 0x0);
        require(_icoEndTime > _icoStartTime);
        founder1Address = _founder1Address;
        founder2Address = _founder2Address;
        icoStartTime = _icoStartTime;
        icoEndTime = _icoEndTime;
        balances[owner] = totalSupply;
        whitelistedBeforeActivation[owner] = true;
    }

    modifier whenActivated() {
        require(isActivated || whitelistedBeforeActivation[msg.sender]);
        _;
    }
    
    modifier isLockTimeEnded(address from){
        if (from == founder1Address) {
            require(now > icoEndTime + lockPeriod1);
        } else if (from == founder2Address) {
            require(now > icoEndTime + lockPeriod2);
        } else if (isPresaleBuyer[from]) {
            require(now > icoEndTime + lockPeriodForBuyers);
        }
        _;
    }

    modifier onlySaleConract(){
        require(msg.sender == saleAddress);
        _;
    }

    /**
    * @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, uint _value) external isLockTimeEnded(msg.sender) whenActivated returns (bool) {
        require(_to != 0x0);
    
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        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 uint representing the amount owned by the passed address.
    */
    function balanceOf(address _owner) external constant returns (uint balance) {
        return balances[_owner];
    }

    /**
     * @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, uint _value) external whenActivated returns (bool) {
        allowed[msg.sender][_spender] = _value;
        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 uint specifying the amount of tokens still available for the spender.
     */
    function allowance(address _owner, address _spender) external constant returns (uint remaining) {
        return allowed[_owner][_spender];
    }

    /**
     * @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 uint the amount of tokens to be transferred
     */
    function transferFrom(address _from, address _to, uint _value) external isLockTimeEnded(_from) whenActivated returns (bool) {
        require(_to != 0x0);
        uint _allowance = allowed[_from][msg.sender];

        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        
        // _allowance.sub(_value) will throw if _value > _allowance
        allowed[_from][msg.sender] = _allowance.sub(_value);
        Transfer(_from, _to, _value);

        return true;
    }

    /**
     * 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
     */
    function increaseApproval(address _spender, uint _addedValue) external whenActivated returns (bool) {
        allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
        Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    function decreaseApproval(address _spender, uint _subtractedValue) external whenActivated returns (bool) {
        uint oldValue = allowed[msg.sender][_spender];
        if (_subtractedValue > oldValue) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    /**
     * Activation of the token allows all tokenholders to operate with the token
     */
    function activate() external onlyOwner returns (bool) {
        isActivated = true;
        return true;
    }

    /**
     * allows to add and exclude addresses from whitelistedBeforeActivation list for owner
     * @param isWhitelisted is true for adding address into whitelist, false - to exclude
     */
    function editWhitelist(address _address, bool isWhitelisted) external onlyOwner returns (bool) {
        whitelistedBeforeActivation[_address] = isWhitelisted;
        return true;        
    }

    function addToTimeLockedList(address addr) external onlySaleConract returns (bool) {
        require(addr != 0x0);
        isPresaleBuyer[addr] = true;
        return true;
    }

    function setSaleAddress(address newSaleAddress) external onlyOwner returns (bool) {
        require(newSaleAddress != 0x0);
        saleAddress = newSaleAddress;
        return true;
    }

    function setIcoEndTime(uint newTime) external onlyOwner returns (bool) {
        require(newTime > icoStartTime);
        icoEndTime = newTime;
        return true;
    }
}
        

Compiler Settings

{"remappings":[],"optimizer":{"runs":200,"enabled":true},"libraries":{},"compilationTarget":{"VinToken.sol":"VinToken"}}
              

Contract ABI

[{"type":"function","payable":false,"outputs":[{"type":"string","name":""}],"name":"name","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"bool","name":""}],"name":"approve","inputs":[{"type":"address","name":"_spender"},{"type":"uint256","name":"_value"}],"constant":false},{"type":"function","payable":false,"outputs":[{"type":"bool","name":""}],"name":"activate","inputs":[],"constant":false},{"type":"function","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"lockPeriod1","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"totalSupply","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"bool","name":""}],"name":"transferFrom","inputs":[{"type":"address","name":"_from"},{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"constant":false},{"type":"function","payable":false,"outputs":[{"type":"address","name":""}],"name":"founder1Address","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"decimals","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"string","name":""}],"name":"contactInformation","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"bool","name":""}],"name":"addToTimeLockedList","inputs":[{"type":"address","name":"addr"}],"constant":false},{"type":"function","payable":false,"outputs":[{"type":"bool","name":""}],"name":"isActivated","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"bool","name":""}],"name":"decreaseApproval","inputs":[{"type":"address","name":"_spender"},{"type":"uint256","name":"_subtractedValue"}],"constant":false},{"type":"function","payable":false,"outputs":[{"type":"bool","name":""}],"name":"isPresaleBuyer","inputs":[{"type":"address","name":""}],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"uint256","name":"balance"}],"name":"balanceOf","inputs":[{"type":"address","name":"_owner"}],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"icoEndTime","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"lockPeriodForBuyers","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"bool","name":""}],"name":"editWhitelist","inputs":[{"type":"address","name":"_address"},{"type":"bool","name":"isWhitelisted"}],"constant":false},{"type":"function","payable":false,"outputs":[{"type":"address","name":""}],"name":"owner","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"address","name":""}],"name":"founder2Address","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"string","name":""}],"name":"symbol","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"icoStartTime","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"bool","name":""}],"name":"whitelistedBeforeActivation","inputs":[{"type":"address","name":""}],"constant":true},{"type":"function","payable":false,"outputs":[{"type":"bool","name":""}],"name":"transfer","inputs":[{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"constant":false},{"type":"function","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"lockPeriod2","inputs":[],"constant":true},{"type":"function","payable":false,"outputs":[],"name":"setContactInformation","inputs":[{"type":"string","name":"info"}],"constant":false},{"type":"function","payable":false,"outputs":[{"type":"bool","name":""}],"name":"increaseApproval","inputs":[{"type":"address","name":"_spender"},{"type":"uint256","name":"_addedValue"}],"constant":false},{"type":"function","payable":false,"outputs":[{"type":"uint256","name":"remaining"}],"name":"allowance","inputs":[{"type":"address","name":"_owner"},{"type":"address","name":"_spender"}],"constant":true},{"type":"function","payable":false,"outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner"}],"constant":false},{"type":"function","payable":false,"outputs":[{"type":"bool","name":""}],"name":"setSaleAddress","inputs":[{"type":"address","name":"newSaleAddress"}],"constant":false},{"type":"function","payable":false,"outputs":[{"type":"bool","name":""}],"name":"setIcoEndTime","inputs":[{"type":"uint256","name":"newTime"}],"constant":false},{"type":"function","payable":false,"outputs":[{"type":"address","name":""}],"name":"saleAddress","inputs":[],"constant":true},{"type":"constructor","payable":false,"inputs":[{"type":"address","name":"_founder1Address"},{"type":"address","name":"_founder2Address"},{"type":"uint256","name":"_icoStartTime"},{"type":"uint256","name":"_icoEndTime"}]},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","indexed":true},{"type":"address","name":"newOwner","indexed":true}],"anonymous":false}]
              

Contract Creation Code

Verify & Publish
0x60606040526004805460ff19169055341561001957600080fd5b60405160808061150f833981016040528080519190602001805191906020018051919060200180519150505b5b60008054600160a060020a03191633600160a060020a03161790555b600160a060020a038416151561007757600080fd5b600160a060020a038316151561008c57600080fd5b81811161009857600080fd5b60088054600160a060020a03808716600160a060020a031992831617909255600980548684169216919091179055600b839055600a82905560008054821681526002602090815260408083206b033b2e3c9fd0803ce80000009055825490931682526005905220805460ff191660011790555b505050505b6113f08061011f6000396000f300606060405236156101885763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461018d578063095ea7b3146102185780630f15f4c01461024e578063105c287b1461027557806318160ddd1461029a57806323b872dd146102bf57806328fe9a7f146102fb578063313ce5671461032a57806336f7ab5e1461034f5780634730725d146103da5780634a8c1fb41461040d57806366188463146104345780636b94692a1461046a57806370a082311461049d5780637e1055b6146104ce57806386eb3899146104f357806388cb214e146105185780638da5cb5b146105505780639028353a1461057f57806395d89b411461018d578063a7c3d71b14610639578063a87b1cd21461065e578063a9059cbb14610691578063ae7f5da4146106c7578063b967a52e146106ec578063d73dd6231461073f578063dd62ed3e14610775578063f2fde38b146107ac578063f8fb491f146107cd578063fe3c9b6b14610800578063fffe088d1461082a575b600080fd5b341561019857600080fd5b6101a0610859565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101dd5780820151818401525b6020016101c4565b50505050905090810190601f16801561020a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561022357600080fd5b61023a600160a060020a0360043516602435610890565b604051901515815260200160405180910390f35b341561025957600080fd5b61023a610932565b604051901515815260200160405180910390f35b341561028057600080fd5b610288610964565b60405190815260200160405180910390f35b34156102a557600080fd5b61028861096c565b60405190815260200160405180910390f35b34156102ca57600080fd5b61023a600160a060020a036004358116906024351660443561097c565b604051901515815260200160405180910390f35b341561030657600080fd5b61030e610b79565b604051600160a060020a03909116815260200160405180910390f35b341561033557600080fd5b610288610b88565b60405190815260200160405180910390f35b341561035a57600080fd5b6101a0610b8d565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101dd5780820151818401525b6020016101c4565b50505050905090810190601f16801561020a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103e557600080fd5b61023a600160a060020a0360043516610c2b565b604051901515815260200160405180910390f35b341561041857600080fd5b61023a610c8c565b604051901515815260200160405180910390f35b341561043f57600080fd5b61023a600160a060020a0360043516602435610c95565b604051901515815260200160405180910390f35b341561047557600080fd5b61023a600160a060020a0360043516610dca565b604051901515815260200160405180910390f35b34156104a857600080fd5b610288600160a060020a0360043516610ddf565b60405190815260200160405180910390f35b34156104d957600080fd5b610288610dfe565b60405190815260200160405180910390f35b34156104fe57600080fd5b610288610e04565b60405190815260200160405180910390f35b341561052357600080fd5b61023a600160a060020a03600435166024351515610e0b565b604051901515815260200160405180910390f35b341561055b57600080fd5b61030e610e56565b604051600160a060020a03909116815260200160405180910390f35b341561058a57600080fd5b61030e610e65565b604051600160a060020a03909116815260200160405180910390f35b341561019857600080fd5b6101a0610859565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101dd5780820151818401525b6020016101c4565b50505050905090810190601f16801561020a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561064457600080fd5b610288610eab565b60405190815260200160405180910390f35b341561066957600080fd5b61023a600160a060020a0360043516610eb1565b604051901515815260200160405180910390f35b341561069c57600080fd5b61023a600160a060020a0360043516602435610ec6565b604051901515815260200160405180910390f35b34156106d257600080fd5b61028861106c565b60405190815260200160405180910390f35b34156106f757600080fd5b61073d60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061107395505050505050565b005b341561074a57600080fd5b61023a600160a060020a03600435166024356110a7565b604051901515815260200160405180910390f35b341561078057600080fd5b610288600160a060020a0360043581169060243516611182565b60405190815260200160405180910390f35b34156107b757600080fd5b61073d600160a060020a03600435166111af565b005b34156107d857600080fd5b61023a600160a060020a0360043516611248565b604051901515815260200160405180910390f35b341561080b57600080fd5b61023a6004356112ab565b604051901515815260200160405180910390f35b341561083557600080fd5b61030e6112e4565b604051600160a060020a03909116815260200160405180910390f35b60408051908101604052600381527f56494e0000000000000000000000000000000000000000000000000000000000602082015281565b60045460009060ff16806108bc5750600160a060020a03331660009081526005602052604090205460ff165b15156108c757600080fd5b600160a060020a03338116600081815260036020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b5b92915050565b6000805433600160a060020a0390811691161461094e57600080fd5b506004805460ff191660019081179091555b5b90565b6303c2670081565b6b033b2e3c9fd0803ce800000081565b60085460009081908590600160a060020a03808316911614156109b257600a546303c267000142116109ad57600080fd5b610a14565b600954600160a060020a03828116911614156109e057600a5462dd7c000142116109ad57600080fd5b610a14565b600160a060020a03811660009081526006602052604090205460ff1615610a1457600a54626ebe00014211610a1457600080fd5b5b5b5b60045460ff1680610a405750600160a060020a03331660009081526005602052604090205460ff165b1515610a4b57600080fd5b600160a060020a0385161515610a6057600080fd5b600160a060020a03808716600081815260036020908152604080832033909516835293815283822054928252600290529190912054909250610aa8908563ffffffff6112f316565b600160a060020a038088166000908152600260205260408082209390935590871681522054610add908563ffffffff61130a16565b600160a060020a038616600090815260026020526040902055610b06828563ffffffff6112f316565b600160a060020a03808816600081815260036020908152604080832033861684529091529081902093909355908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9087905190815260200160405180910390a3600192505b5b5b50509392505050565b600854600160a060020a031681565b601281565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c235780601f10610bf857610100808354040283529160200191610c23565b820191906000526020600020905b815481529060010190602001808311610c0657829003601f168201915b505050505081565b60075460009033600160a060020a03908116911614610c4957600080fd5b600160a060020a0382161515610c5e57600080fd5b50600160a060020a0381166000908152600660205260409020805460ff191660019081179091555b5b919050565b60045460ff1681565b600454600090819060ff1680610cc35750600160a060020a03331660009081526005602052604090205460ff165b1515610cce57600080fd5b50600160a060020a0333811660009081526003602090815260408083209387168352929052205480831115610d2a57600160a060020a033381166000908152600360209081526040808320938816835292905290812055610d61565b610d3a818463ffffffff6112f316565b600160a060020a033381166000908152600360209081526040808320938916835292905220555b600160a060020a0333811660008181526003602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5b5092915050565b60066020526000908152604090205460ff1681565b600160a060020a0381166000908152600260205260409020545b919050565b600a5481565b626ebe0081565b6000805433600160a060020a03908116911614610e2757600080fd5b50600160a060020a0382166000908152600560205260409020805460ff191682151517905560015b5b92915050565b600054600160a060020a031681565b600954600160a060020a031681565b60408051908101604052600381527f56494e0000000000000000000000000000000000000000000000000000000000602082015281565b600b5481565b60056020526000908152604090205460ff1681565b6008546000903390600160a060020a0380831691161415610efa57600a546303c26700014211610ef557600080fd5b610f5c565b600954600160a060020a0382811691161415610f2857600a5462dd7c00014211610ef557600080fd5b610f5c565b600160a060020a03811660009081526006602052604090205460ff1615610f5c57600a54626ebe00014211610f5c57600080fd5b5b5b5b60045460ff1680610f885750600160a060020a03331660009081526005602052604090205460ff165b1515610f9357600080fd5b600160a060020a0384161515610fa857600080fd5b600160a060020a033316600090815260026020526040902054610fd1908463ffffffff6112f316565b600160a060020a033381166000908152600260205260408082209390935590861681522054611006908463ffffffff61130a16565b600160a060020a0380861660008181526002602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b5b5b5092915050565b62dd7c0081565b60005433600160a060020a0390811691161461108e57600080fd5b60018180516110a1929160200190611324565b505b5b50565b60045460009060ff16806110d35750600160a060020a03331660009081526005602052604090205460ff165b15156110de57600080fd5b600160a060020a03338116600090815260036020908152604080832093871683529290522054611114908363ffffffff61130a16565b600160a060020a0333811660008181526003602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b5b92915050565b600160a060020a038083166000908152600360209081526040808320938516835292905220545b92915050565b60005433600160a060020a039081169116146111ca57600080fd5b600160a060020a03811615156111df57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b6000805433600160a060020a0390811691161461126457600080fd5b600160a060020a038216151561127957600080fd5b506007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03831617905560015b5b919050565b6000805433600160a060020a039081169116146112c757600080fd5b600b5482116112d557600080fd5b50600a81905560015b5b919050565b600754600160a060020a031681565b6000828211156112ff57fe5b508082035b92915050565b60008282018381101561131957fe5b8091505b5092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061136557805160ff1916838001178555611392565b82800160010185558215611392579182015b82811115611392578251825591602001919060010190611377565b5b5061139f9291506113a3565b5090565b61096091905b8082111561139f57600081556001016113a9565b5090565b905600a165627a7a723058200bdb1b51ee4c547f977db1807f9365bde8626c485693dcbdab8853fc27ae0fa500290000000000000000000000008e1a4ea526fe0c513b043daa5e83e99c48f07a7e0000000000000000000000006c10491f481bbda18f1cfb2bdef5abe2d296e1be000000000000000000000000000000000000000000000000000000005ab3b6e0000000000000000000000000000000000000000000000000000000005ad35ae0

Deployed ByteCode

0x606060405236156101885763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461018d578063095ea7b3146102185780630f15f4c01461024e578063105c287b1461027557806318160ddd1461029a57806323b872dd146102bf57806328fe9a7f146102fb578063313ce5671461032a57806336f7ab5e1461034f5780634730725d146103da5780634a8c1fb41461040d57806366188463146104345780636b94692a1461046a57806370a082311461049d5780637e1055b6146104ce57806386eb3899146104f357806388cb214e146105185780638da5cb5b146105505780639028353a1461057f57806395d89b411461018d578063a7c3d71b14610639578063a87b1cd21461065e578063a9059cbb14610691578063ae7f5da4146106c7578063b967a52e146106ec578063d73dd6231461073f578063dd62ed3e14610775578063f2fde38b146107ac578063f8fb491f146107cd578063fe3c9b6b14610800578063fffe088d1461082a575b600080fd5b341561019857600080fd5b6101a0610859565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101dd5780820151818401525b6020016101c4565b50505050905090810190601f16801561020a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561022357600080fd5b61023a600160a060020a0360043516602435610890565b604051901515815260200160405180910390f35b341561025957600080fd5b61023a610932565b604051901515815260200160405180910390f35b341561028057600080fd5b610288610964565b60405190815260200160405180910390f35b34156102a557600080fd5b61028861096c565b60405190815260200160405180910390f35b34156102ca57600080fd5b61023a600160a060020a036004358116906024351660443561097c565b604051901515815260200160405180910390f35b341561030657600080fd5b61030e610b79565b604051600160a060020a03909116815260200160405180910390f35b341561033557600080fd5b610288610b88565b60405190815260200160405180910390f35b341561035a57600080fd5b6101a0610b8d565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101dd5780820151818401525b6020016101c4565b50505050905090810190601f16801561020a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103e557600080fd5b61023a600160a060020a0360043516610c2b565b604051901515815260200160405180910390f35b341561041857600080fd5b61023a610c8c565b604051901515815260200160405180910390f35b341561043f57600080fd5b61023a600160a060020a0360043516602435610c95565b604051901515815260200160405180910390f35b341561047557600080fd5b61023a600160a060020a0360043516610dca565b604051901515815260200160405180910390f35b34156104a857600080fd5b610288600160a060020a0360043516610ddf565b60405190815260200160405180910390f35b34156104d957600080fd5b610288610dfe565b60405190815260200160405180910390f35b34156104fe57600080fd5b610288610e04565b60405190815260200160405180910390f35b341561052357600080fd5b61023a600160a060020a03600435166024351515610e0b565b604051901515815260200160405180910390f35b341561055b57600080fd5b61030e610e56565b604051600160a060020a03909116815260200160405180910390f35b341561058a57600080fd5b61030e610e65565b604051600160a060020a03909116815260200160405180910390f35b341561019857600080fd5b6101a0610859565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101dd5780820151818401525b6020016101c4565b50505050905090810190601f16801561020a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561064457600080fd5b610288610eab565b60405190815260200160405180910390f35b341561066957600080fd5b61023a600160a060020a0360043516610eb1565b604051901515815260200160405180910390f35b341561069c57600080fd5b61023a600160a060020a0360043516602435610ec6565b604051901515815260200160405180910390f35b34156106d257600080fd5b61028861106c565b60405190815260200160405180910390f35b34156106f757600080fd5b61073d60046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061107395505050505050565b005b341561074a57600080fd5b61023a600160a060020a03600435166024356110a7565b604051901515815260200160405180910390f35b341561078057600080fd5b610288600160a060020a0360043581169060243516611182565b60405190815260200160405180910390f35b34156107b757600080fd5b61073d600160a060020a03600435166111af565b005b34156107d857600080fd5b61023a600160a060020a0360043516611248565b604051901515815260200160405180910390f35b341561080b57600080fd5b61023a6004356112ab565b604051901515815260200160405180910390f35b341561083557600080fd5b61030e6112e4565b604051600160a060020a03909116815260200160405180910390f35b60408051908101604052600381527f56494e0000000000000000000000000000000000000000000000000000000000602082015281565b60045460009060ff16806108bc5750600160a060020a03331660009081526005602052604090205460ff165b15156108c757600080fd5b600160a060020a03338116600081815260036020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b5b92915050565b6000805433600160a060020a0390811691161461094e57600080fd5b506004805460ff191660019081179091555b5b90565b6303c2670081565b6b033b2e3c9fd0803ce800000081565b60085460009081908590600160a060020a03808316911614156109b257600a546303c267000142116109ad57600080fd5b610a14565b600954600160a060020a03828116911614156109e057600a5462dd7c000142116109ad57600080fd5b610a14565b600160a060020a03811660009081526006602052604090205460ff1615610a1457600a54626ebe00014211610a1457600080fd5b5b5b5b60045460ff1680610a405750600160a060020a03331660009081526005602052604090205460ff165b1515610a4b57600080fd5b600160a060020a0385161515610a6057600080fd5b600160a060020a03808716600081815260036020908152604080832033909516835293815283822054928252600290529190912054909250610aa8908563ffffffff6112f316565b600160a060020a038088166000908152600260205260408082209390935590871681522054610add908563ffffffff61130a16565b600160a060020a038616600090815260026020526040902055610b06828563ffffffff6112f316565b600160a060020a03808816600081815260036020908152604080832033861684529091529081902093909355908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9087905190815260200160405180910390a3600192505b5b5b50509392505050565b600854600160a060020a031681565b601281565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c235780601f10610bf857610100808354040283529160200191610c23565b820191906000526020600020905b815481529060010190602001808311610c0657829003601f168201915b505050505081565b60075460009033600160a060020a03908116911614610c4957600080fd5b600160a060020a0382161515610c5e57600080fd5b50600160a060020a0381166000908152600660205260409020805460ff191660019081179091555b5b919050565b60045460ff1681565b600454600090819060ff1680610cc35750600160a060020a03331660009081526005602052604090205460ff165b1515610cce57600080fd5b50600160a060020a0333811660009081526003602090815260408083209387168352929052205480831115610d2a57600160a060020a033381166000908152600360209081526040808320938816835292905290812055610d61565b610d3a818463ffffffff6112f316565b600160a060020a033381166000908152600360209081526040808320938916835292905220555b600160a060020a0333811660008181526003602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5b5092915050565b60066020526000908152604090205460ff1681565b600160a060020a0381166000908152600260205260409020545b919050565b600a5481565b626ebe0081565b6000805433600160a060020a03908116911614610e2757600080fd5b50600160a060020a0382166000908152600560205260409020805460ff191682151517905560015b5b92915050565b600054600160a060020a031681565b600954600160a060020a031681565b60408051908101604052600381527f56494e0000000000000000000000000000000000000000000000000000000000602082015281565b600b5481565b60056020526000908152604090205460ff1681565b6008546000903390600160a060020a0380831691161415610efa57600a546303c26700014211610ef557600080fd5b610f5c565b600954600160a060020a0382811691161415610f2857600a5462dd7c00014211610ef557600080fd5b610f5c565b600160a060020a03811660009081526006602052604090205460ff1615610f5c57600a54626ebe00014211610f5c57600080fd5b5b5b5b60045460ff1680610f885750600160a060020a03331660009081526005602052604090205460ff165b1515610f9357600080fd5b600160a060020a0384161515610fa857600080fd5b600160a060020a033316600090815260026020526040902054610fd1908463ffffffff6112f316565b600160a060020a033381166000908152600260205260408082209390935590861681522054611006908463ffffffff61130a16565b600160a060020a0380861660008181526002602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b5b5b5092915050565b62dd7c0081565b60005433600160a060020a0390811691161461108e57600080fd5b60018180516110a1929160200190611324565b505b5b50565b60045460009060ff16806110d35750600160a060020a03331660009081526005602052604090205460ff165b15156110de57600080fd5b600160a060020a03338116600090815260036020908152604080832093871683529290522054611114908363ffffffff61130a16565b600160a060020a0333811660008181526003602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b5b92915050565b600160a060020a038083166000908152600360209081526040808320938516835292905220545b92915050565b60005433600160a060020a039081169116146111ca57600080fd5b600160a060020a03811615156111df57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b6000805433600160a060020a0390811691161461126457600080fd5b600160a060020a038216151561127957600080fd5b506007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03831617905560015b5b919050565b6000805433600160a060020a039081169116146112c757600080fd5b600b5482116112d557600080fd5b50600a81905560015b5b919050565b600754600160a060020a031681565b6000828211156112ff57fe5b508082035b92915050565b60008282018381101561131957fe5b8091505b5092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061136557805160ff1916838001178555611392565b82800160010185558215611392579182015b82811115611392578251825591602001919060010190611377565b5b5061139f9291506113a3565b5090565b61096091905b8082111561139f57600081556001016113a9565b5090565b905600a165627a7a723058200bdb1b51ee4c547f977db1807f9365bde8626c485693dcbdab8853fc27ae0fa50029