Copyright International Business Machines Corporation 1995,1997,1998,2002,2008
All rights reserved


WARRANTY DISCLAIMER

This program is provided free of charge on an ``AS IS'' basis without
warranty of any kind, either expressed or implied, including but not
limited to implied warranties of merchantability and fitness for a
particular purpose.  IBM does not warrant that the functions contained
in this program will meet the user's requirements or that the
operation of this program will be uninterrupted or error-free.  You
are solely responsible for determining the appropriateness of using
this program and assume all risks associated with its use, including
but not limited to the risks of program errors, damage to or the loss
of data, programs or equipment, and unavailability or interruption of
operations.

Acceptance and use of this program constitutes the user's
understanding that he/she will have no recourse to IBM for any actual
or consequential damages, including, but not limited to, lost profits
or savings, arising out of the use or inability to use this program,
or any damages claimed by you based on a third party claim.  Even if
the user informs IBM of the possibility of such damages, IBM expects
the user of this program to accept the risk of any harm arising out of
the use of this program, or the user shall not attempt to use this
program for any purpose.


USER AGREEMENT

BY ACCEPTANCE AND USE OF THIS PROGRAM THE USER AGREES TO
THE FOLLOWING:

a. The user is granted permission to copy this program to the extent
reasonably required for such use.  This program may be redistributed
on a not-for-profit basis, as long as WARRANTY DISCLAIMER, this USER
AGREEMENT, and the copyright notice are included with the program.

b. All title, ownership and rights to this program and any copies
remain with IBM, irrespective of the ownership of the media on which
the program resides.

c. The user is permitted to create derivative works to this program.
However, all copies of the program and its derivative works must
contain the IBM copyright notice, the WARRANTY DISCLAIMER and this
USER AGREEMENT.  Furthermore, the user must document and initial
within the program all changes he/she makes.

d. By furnishing this program to the user, IBM does NOT grant either
directly or by implication, estoppel, or otherwise any license under
any patents, patent applications, trademarks, copyrights or other
rights belonging to IBM or to any third party, except as expressly
provided herein.

e. The user understands and agrees that this program, and any
derivative works made from this program, are not to be sold for profit
or commercially exploited in any manner.  However, this use
restriction shall not operate to deny the right to redistribute the
program on a not-for-profit basis, as provided in paragraph a., above.

f. IBM requests that the user supply to IBM a copy of any changes,
enhancements, or derivative works which the user may create.  The user
grants to IBM and its subsidiaries an irrevocable, nonexclusive,
worldwide and royalty-free license to use, execute, reproduce,
display, perform, prepare derivative works based upon, and
distribute, (INTERNALLY AND EXTERNALLY) copies of any and all such
materials and derivative works thereof, and to sublicense others to do
any, some or all of the foregoing, (including supporting
documentation).
