IMPORTANT: READ CAREFULLY:


This End-User License Agreement ("Agreement") is a legal agreement between you (either an individual or a legal entity) and SCM Microsystems, Inc. ("SCM") for the SCM software product identified above, which includes computer software and may include associated media, printed materials, and "online" or electronic documentation ("Licensed Product"). The Licensed Product also includes any updates and supplements to the original Licensed Product provided to you by SCM. Any software provided along with the Licensed Product that is associated with a separate license agreement is licensed to you under the terms of that license agreement.

By installing, copying, downloading, accessing or otherwise using the Licensed Product, you agree to be bound by the terms of this Agreement. If you do not agree to the terms of this Agreement, do not install or use the Licensed Product; you may, however, return it to the company/person that supplied Licensed Product to you for a full refund.



END-USER LICENSE AGREEMENT

The Licensed Product is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The Licensed Product is licensed, not sold.


1.	LICENSED RIGHTS AND USE RESTRICTIONS

1.1	This Agreement grants you the right to install and use one copy of the Licensed Product on one computer.

1.2	You may not reverse engineer, decompile, or disassemble the Licensed Product, except and only to the extent that such activity is expressly permitted by applicable law.

1.3	SCM may provide you with support services related to the Licensed Product ("Support Services"). Use of Support Services, if any, is governed by the SCM polices and programs described in the user manual, in "on line" documentation and/or other SCM-provided materials. Any supplemental software code provided to you as part of the Support Services shall be considered part of the Licensed Product and subject to the terms and conditions of this Agreement. With respect to technical information you provide to SCM as part of the Support Services, SCM may use such information for its business purposes, including for product support and development. SCM will not utilize such technical information in a form that personally identifies you.

1.4	You may transfer this Agreement and Licensed Product only directly to another end user and only together with the corresponding hardware product, if any. This transfer must include all of the Licensed Product (including all component parts, the media and printed materials, any upgrades, this Agreement).  The transferee of such transfer must agree to comply with the terms of this Agreement.

1.5	Without prejudice to any other rights, SCM may terminate this Agreement if you fail to comply with the terms and conditions of this Agreement. In such event, you must destroy all copies of the Licensed Product.


2.	COPYRIGHT

All title and intellectual property rights in and to the Licensed Product, the accompanying printed materials, and any copies of the Licensed Product are owned by SCM or its suppliers. All rights not expressly granted are reserved by SCM.

3.	BACK-UP COPY

After installation of one copy of the Licensed Product pursuant to this Agreement, you may keep the original media on which the Licensed Product was provided by SCM solely for back-up or archival purposes.  If the original media is required to use the Licensed Product on the computer, you may make one copy of the Licensed Product solely for back-up or archival purposes. Except as expressly provided in this Agreement, you may not otherwise make copies of the Licensed Product or the printed materials accompanying the Licensed Product.


4.	EXPORT RESTRICTIONS.

You agree that you will not export or re-export the Licensed Product to any country, person, entity or end user subject to U.S. or other applicable export restrictions. You specifically agree not to export or re-export the Licensed Product: (i) to any country to which the U.S. has embargoed or restricted the export of goods or services, or to any national of any such country, wherever located, who intends to transmit or transport the products back to such country; (ii) to any end-user who you know or have reason to know will utilize the Licensed Product or portion thereof in the design, development or production of nuclear, chemical or biological weapons; or (iii) to any end-user who has been prohibited from participating in U.S. export transactions by any federal agency of the U.S. government.

5.	LIMITED WARRANTY

5.1	SCM warrants that (a) the Licensed Product will perform substantially in accordance with the accompanying written materials for a period of ninety (90) days from the date of receipt, and (b) any Support Services provided by SCM shall be substantially as described in applicable written materials provided to you by SCM, and SCM support engineers will make commercially reasonable efforts to solve any problem. To the extent allowed by applicable law, implied warranties on the Licensed Product, if any, are limited to ninety (90) days. Some states/jurisdictions do not allow limitations on duration of warranty, so the above limitation may not apply to you.

5.2	SCM's and its suppliers' entire liability and your exclusive remedy shall be, at SCM's option, either (a) return of the price paid, if any, or (b) repair or replacement of the Licensed Product that does not meet SCM's Limited Warranty and that is returned to SCM with a copy of your receipt. This Limited Warranty is void if failure of the Licensed Product has resulted from accident, abuse, or misapplication. Any replacement Licensed Product will be warranted for the remainder of the original warranty period or thirty (30) days, whichever is longer.

5.3	TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, SCM AND ITS SUPPLIERS DISCLAIM ALL OTHER WARRANTIES AND CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OR CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT, WITH REGARD TO THE LICENSED PRODUCT, AND THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT SERVICES. THIS LIMITED WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS. YOU MAY HAVE OTHERS, WHICH VARY FROM STATE/JURISDICTION TO STATE/JURISDICTION.

5.4	TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL SCM OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE LICENSED PRODUCT OR THE FAILURE TO PROVIDE SUPPORT SERVICES, EVEN IF SCM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN ANY CASE, SCM'S ENTIRE LIABILITY UNDER ANY PROVISION OF THIS AGREEMENT SHALL BE LIMITED TO THE GREATER OF THE AMOUNT ACTUALLY PAID BY YOU FOR THE LICENSED PRODUCT OR U.S.$ 10.000; PROVIDED, HOWEVER, IF YOU HAVE ENTERED INTO A SCM SUPPORT SERVICES AGREEMENT, SCM'S ENTIRE LIABILITY REGARDING SUPPORT SERVICES SHALL BE GOVERNED BY THE TERMS OF THAT AGREEMENT. BECAUSE SOME STATES/JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY, THE ABOVE LIMITATION MAY NOT APPLY TO YOU.


6.	APPLICABLE LAW

6.1	If you acquired this Licensed Product in the United States, this Agreement is governed by the laws of the State of California.

6.2	If this product was acquired outside the United States, then local law may apply.
