Our Smart Contract

               pragma solidity ^0.4.13;

                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);

                contract BasicToken is ERC20Basic {
                  using SafeMath for uint256;

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

                    // SafeMath.sub will throw if there is not enough balance.
                    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 uint256 representing the amount owned by the passed address.
                  function balanceOf(address _owner) public constant returns (uint256 balance) {
                    return balances[_owner];

                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);