Software License Agreement

This is a legal agreement between you and Aladdin Systems, Inc. covering your
use of StuffIt(tm) the "Software"). Be sure to read the following agreement
before using the Software. BY USING THE SOFTWARE (REGARDLESS IF YOU HAVE
REGISTERED THE SOFTWARE OR NOT), YOU ARE AGREEING TO BE BOUND BY THE TERMS OF
THIS AGREEMENT. IF YOU DO NOT AGREE TO THE TERMS OF THIS AGREEMENT, DO NOT USE
THE SOFTWARE AND DESTROY ALL COPIES IN YOUR POSSESSION.

The Software is owned by Aladdin Systems and is protected by United States
copyright laws and international treaty provisions. Therefore, you must treat
the Software like any other copyrighted material (e.g., a book or musical
recording). Paying the license fee allows you the right to use one copy of the
Software on a single computer. YOU MAY NOT NETWORK THE SOFTWARE OR OTHERWISE USE
IT OR MAKE IT AVAILABLE FOR USE ON MORE THAN ONE COMPUTER AT THE SAME TIME
WITHOUT FIRST OBTAINING A LICENSE TO DO SO AT AN ADDITIONAL COST. You may not
rent or lease the Software, nor may you modify, adapt, translate, reverse
engineer, decompile, or disassemble the Software. If you violate any part of
this agreement, your right to use this Software terminates automatically and you
must then destroy all copies of the Software in your possession.

The Software and its related documentation are provided "AS IS" and without
warranty of any kind and Aladdin Systems expressly disclaims all other
warranties, expressed or implied, including, but not limited to, the implied
warranties of merchantability and fitness for a particular purpose. Under no
circumstances shall Aladdin Systems be liable for any incidental, special, or
consequential damages that result from the use or inablility to use the Software
or related documentation, even if Aladdin Systems has been advised of the
possibility of such damages. In no event shall Aladdin Systems' liability exceed
the license fee paid, if any.

This Agreement shall be governed by the laws of the State of California. If for
any reason a court of competent jurisdiction finds any provision of the
Agreement, or portion thereof, to be unenforceable, that provision of the
Agreement shall be enforced to the maximum extent permissible so as to effect
the intent of the parties, and the remainder of this Agreement shall continue in
full force and effect.

The Software and documentation is provided with RESTRICTED RIGHTS. Use,
duplication, or disclosure by the Government is subject to restrictions as set
forth in subdivision (b)(3)(ii) of the Rights in Technical Data and Computer
Software clause as 252.227-7013. Manufacturer is Aladdin Systems, Inc., 245
Westridge Drive, Watsonville, California 95076.

Aladdin Systems, Inc., 245 Westridge Dr., Watsonville, California, 95076, United
States of America

(831) 761-6200 telephone, (831) 761-6206 facsimile.



Additional Licenses:

Server, multiple user and site licenses are available, please visit:
    http://www.aladdinsys.com/store/licensing.html

or contact: sales@aladdinsys.com

$Id: Stuffit,v 1.1 2002/10/30 02:17:50 nall Exp $

