#
# Licensed Material - Property of IBM 
# (C) Copyright IBM Corp. 2002, 2003 - All Rights Reserved. 
# US Government Users Restricted Rights - Use, duplication or disclosure 
# restricted by GSA ADP Schedule Contract with IBM Corp. 
#
#  DISCLAIMER OF WARRANTIES.
#  The following [enclosed] code is sample code created by IBM
#  Corporation. This sample code is not part of any standard or IBM
#  product and is provided to you solely for the purpose of assisting
#  you in the development of your applications.  The code is provided
#  "AS IS". IBM MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
#  NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
#  FOR A PARTICULAR PURPOSE, REGARDING THE FUNCTION OR PERFORMANCE OF
#  THIS CODE.  THIS CODE MAY CONTAIN ERRORS.  IBM shall not be liable
#  for any damages arising out of your use of the sample code, even
#  if it has been advised of the possibility of such damages.
#

#
# This file is used to test the Properties Validator.
#

ID1 = This file has no errors in it.