contract StandardBurnableLockableToken is StandardLockableToken, BurnableToken {
  /**
    * @dev Burns a specific amount of tokens from the target address and decrements allowance
    * @param _from address The address which you want to send tokens from
    * @param _value uint256 The amount of token to be burned
    */
  function burnFrom(address _from, uint256 _value) onlyOwner onlyUnlockedOf(_from, _value) public {
    require(_value <= allowed[_from][msg.sender]);
    require(_value > 0);
    // Should https://github.com/OpenZeppelin/zeppelin-solidity/issues/707 be accepted,
    // this function needs to emit an event with the updated approval.
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);

    _burn(_from, _value);

    bytes memory empty;
    // emit ERC223 transfer event also
    emit Transfer(msg.sender, address(0), _value, empty);
  }

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

    bytes memory empty;
      // emit ERC223 transfer event also
    emit Transfer(msg.sender, address(0), _value, empty);
  }
}
/**
 * @title StandardBurnableLockableToken
 */
function burn(uint256 _value) onlyOwner onlyUnlocked(_value) public {
  require(_value > 0);
  _burn(msg.sender, _value);

  bytes memory empty;
    // emit ERC223 transfer event also
  emit Transfer(msg.sender, address(0), _value, empty);
}

/**
 * @dev Burns a specific amount of tokens.
 * @param _value The amount of token to be burned.
 */