 
========================================
== GOG.com End-User License Agreement ==
========================================

READ THE FOLLOWING TERMS AND CONDITIONS CAREFULLY BEFORE INSTALLING THE PROGRAM.  This end user license agreement (this “Agreement”) is a legal agreement between you (an individual or a single entity “You”) and GOG.com or GOG Limited (“Company”) for the accompanying software product which includes computer software and any associated media, printed materials, and/or “online” or electronic documentation (collectively, the “Program”).  By installing, copying, or otherwise using the Program, you acknowledge that you have read this Agreement and agree to be bound by the terms.  If you do not accept or agree to the terms of this Agreement, do not install or use the Program.  

1.License.  Company grants you a non-exclusive, non-transferable license to use the Program, but retains all property rights in the Program and all copies thereof.  This Program is licensed, not sold, for your personal, non-commercial use.  Your license confers no title or ownership in this Program and should not be construed as any sale of any rights in this Program.  You may not transfer, distribute, rent, sub-license, or lease the Program or documentation, except as provided herein; alter, modify, or adapt the Program or documentation, or portions thereof including, but not limited to, translation, decompiling or disassembling.  You agree not to modify or attempt to reverse engineer, decompile, or disassemble the Program, except and only to the extent that such activity is expressly permitted under applicable law notwithstanding this limitation.  All rights not expressly granted under this Agreement are reserved by Company.

2.No Warranty.  You are responsible for assessing your own computer and the results to be obtained therefrom.  You expressly agree that use of the Program is at your sole risk.  The Program is provided on an “as is,” “as available” basis, unless such warranties are legally incapable of exclusion.  Company and its licensors disclaim all warranties and conditions, whether oral or written, express, or implied, including without limitation any implied warranties or conditions of merchantability, fitness for a particular purpose, non-infringement of third party rights, and those arising from a course of dealing or usage of trade, regarding the Program.  Company and its licensors assume no responsibility for any damages suffered by you, including, but not limited to, loss of data, items or other materials from errors or other malfunctions caused by Company, its licensors, licensee and/or subcontractors, or by your or any other participant’s own errors and/or omissions.  Company and its licensors make no warranty with respect to any related software or hardware used or provided by Company in connection with the Program except as expressly set forth above.

3.Limitation of Liability.  You acknowledge and agree that Company and its licensors shall not assume or have any liability for any action by Company or its content providers, other participants, or other licensors with respect to conduct, communication, or content of the Program.  Company and its licensors shall not be liable for any indirect, incidental, special, punitive, exemplary, or consequential damages resulting hereunder in any manner, even if advised of the possibility of such damages.  Except as expressly provided herein, Company’s and its licensors’ entire liability to you and your exclusive remedy for any breach of this Agreement is limited solely to the total amount paid by you for the Program, if any.  Because some states do not allow the exclusion or limitation of liability for certain damages, in such states Company’s and its licensors’ liability is limited to the extent permitted by law.

4.Indemnity.  At Company’s request, you agree to defend, indemnify and hold harmless Company, its affiliates and licensors from all damages, losses, liabilities, claims and expenses, including attorneys’ fees, arising directly or indirectly from your acts and omissions to act in using the Program pursuant to the terms of this Agreement or any breach of this Agreement by you. 

5.Termination.  Without prejudice to any other rights of Company, this Agreement and your right to use the Program may automatically terminate without notice from Company if you fail to comply with any provision of this Agreement or any terms and conditions associated with the Program.  In such event, you must destroy all copies of this Program and all of its component parts.

6.Injunction.  Because Company would be irreparably damaged if the terms of this Agreement were not specifically enforced, you agree that Company shall be entitled, without bond, other security or proof of damages, to appropriate equitable remedies with respect to breaches of this Agreement, in addition to such other remedies as Company may otherwise have under applicable laws.

7.General Provisions.  Company’s failure to enforce at any time any of the provisions of this Agreement shall in no way be construed to be a present or future waiver of such provisions, nor in any way affect the right of any party to enforce each and every such provision thereafter.  The express waiver by Company of any provision, condition or requirement of this Agreement shall not constitute a waiver of any future obligation to comply with such provision, condition or requirement.  This Agreement shall be governed by the laws of the State of California and the United States without regard to its conflicts of laws rules and you consent to the exclusive jurisdiction of the courts in Los Angeles County, California.  The United Nations Convention on Contracts for the International Sale of Goods shall not apply to this Agreement.  This Agreement represents the complete agreement concerning this License Agreement between you and Company.





============
Adobe Reader
============

In accordance with Adobe warranty and software distribution agreement we attached the Adobe Reader installation program and the Adobe eula itself for pdf files we distribute with the game, such as game manual. The license will be available only if you choose to install Adobe Reader with the game.
See licence agreement here: http://www.adobe.com/products/eulas/pdfs/Reader_Player_AIR_WWEULA-Combined-20080204_1313.pdf

For more information on Adobe Reader please visit www.adobe.com.




=============
MD5 Component
=============

The MIT License

Copyright (c) <year> <copyright holders>

Permission is hereby granted, free of charge, to any person obtaining a  copy of this software and associated documentation files (the "Software"),  to deal in the Software without restriction, including without limitation  the rights to use, copy, modify, merge, publish, distribute, sublicense,  and/or sell copies of the Software, and to permit persons to whom the  Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in  all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER  DEALINGS IN THE SOFTWARE.
