END-USER LICENSE AGREEMENT (EULA)



This original software is protected by copyright and trademark law.
It may only be sold by authorized dealers and only be used for private purposes. 
Please read this license carefully before using the software.
By installing or using this software product you agree to be bound by the provisions of this EULA.


Software product license


This End-User License Agreement will grant you the following rights:

This End-User License Agreement is a legally valid agreement between you (either as a  natural or as a legal person ) and JoWooD Productions Software AG.

By purchasing this original software you are granted the right to install and use the software on a single computer.
JoWooD Productions Software AG does not grant you any right of ownership to the software, and this license does not represent  a "sale" of the software. 
You are the owner of the CD-ROM on which the software is stored: JoWooD Productions Software AG remains the sole owner of the software on the CD-ROM, and of the pertinent documentation, and remains the proprietor of any and all intellectual and industrial property rights contained therein.

This non-exclusive and personal license grants you the right to install, use, and display a copy of this software product on a single computer (for example, a single workstation, a single terminal, a single portable PC, a single pager, etc.). 
Every other use, especially the unauthorized leasing, public display or other demonstration (e.g. in schools or universities), copying, multiple installation or transfer, and any other process by which this software or parts of it may be made available to the general public (including via Internet or other online systems) without prior written consent is prohibited. 
 
If this software enables you to print pictures containing characters of JoWooD Productions Software AG which are protected by trademark law, this license only allows you to print the pictures on paper and to use them as printouts solely for personal, non-commercial and non-governmental purposes (for example, you may not display or sell those pictures in public), provided that you abide by all copyright instructions contained in the pictures generated by the software.







Description of other rights and limitations 

Safety copy

One single copy of the software product may be stored for safety or archiving purposes only.
 

Limited warranty

JoWooD Productions Software AG warrants for a period of 90 days starting from the date of purchase that the software will essentially work in accordance with the accompanying printed materials.
The complete liability of JoWooD Productions Software AG and your only claim consists, at the option of JoWooD Productions Software AG, of a reimbursement of the paid purchase price or of repairing or substituting the software product which is not in accordance with JoWooD's limited warranty, insofar as it is returned to JoWooD Productions Software AG together with a copy of the invoice.
This limited warranty will not apply if the failure of the software product is due to an accident, misuse or faulty application.


Other warranty rights will remain unaffected

The above warranty is given by JoWooD Productions Software AG as manufacturer of the software product.
Any legal warranty or liability claims to which you are entitled toward the dealer from whom you bought your version of the software product are neither replaced nor limited by this warranty. 


Limitation of liability

To the greatest extent permitted by applicable law, JoWooD Productions Software AG refuses to accept liability for any special, accidental, indirect or consequential damages resulting from the utilization of, or inability to utilize, the software product. This includes any instances in which JoWooD Productions Software AG has previously pointed out the possiblity of such damages.


Trademarks

This End-User License Agreement does not grant you any rights in connection with trademarks of JoWooD Productions Software AG.


End of contract / Termination

This license will apply until it is terminated by either one of the parties. You may terminate this license at any time by sending the software back to JoWooD Productions Software AG or by destroying the software, the complete accompanying documentation and all copies and installations thereof, irrespective of whether they were drawn up in accordance with this license or not.  This License Agreement will be terminated immediately without any prior notification by JoWooD Productions Software if you are in breach of any of the provisions of this license, in which case you will be obligated to destroy all copies of the software product.


Safeguarding clause

Should any provisions of this agreement be or become invalid or unenforceable, the remainder of this agreement will remain unaffected.



Choice of law

The laws of Austria will be applied to all legal issues arising out of or in connection with this contract.

 
