IMPORTANT – PLEASE READ THE FOLLOWING LICENSE AGREEMENT CAREFULLY.  THIS IS A LEGALLY BINDING AGREEMENT.  DO NOT DOWNLOAD THE LICENSED MATERIALS UNLESS: (1) YOU ARE AUTHORIZED TO ACCEPT AND AGREE TO THE TERMS OF THIS LICENSE AGREEMENT AND (2) YOU INTEND TO ENTER INTO AND TO BE BOUND BY THE TERMS OF THIS AGREEMENT.

This Software License Agreement (“Agreement”) is a legal agreement between you (either an individual or entity) and Texas Instruments Incorporated (“TI”), 12500 TI Boulevard, Dallas, Texas 75243.  The “Licensed Materials” subject to this Agreement include, in whole or in part, the software programs that accompany this Agreement and any “on-line” or electronic documentation associated with these programs.  By installing, copying or otherwise using the Licensed Materials you agree to abide by the terms of this Agreement.  If you choose not to accept or agree with these terms, do not download or install the Licensed Materials.

NOTE:  The Licensed Materials may be bundled with open source software.  By accepting this Agreement, you may gain access to software identified as being licensed under open source licenses, which software and corresponding open source licenses will be listed in the applicable software manifest (in whole or in part, the “Open Source Materials”).  Your use of the Open Source Materials is subject to the separate licensing terms applicable to such Open Source Materials as specified in the applicable software manifest.  For clarification, this Agreement does not limit your rights under, or grant you rights that supersede, the license terms of any applicable Open Source Materials license agreement.  If any of the Open Source Materials have been provided to you in object code, the source code versions of such Open Source Materials may be provided to you by notifying TI at Texas Instruments Incorporated, 12500 TI Boulevard, Mail Station 8638, Dallas, Texas 75243, Attention: Contracts Manager.  You may terminate this Agreement in the event you choose not to accept or agree with the terms in any applicable Open Source Materials license agreement, provided that such termination occurs within five (5) days of acceptance of this Agreement and you abide by all applicable license terms in this Agreement until such termination.


1.	License.

a.	Source Code License.  For the Licensed Materials provided in source code format, TI hereby grants to you a limited, non-exclusive license to reproduce, use, and create modified or derivative works of the Licensed Materials provided to you in source code format and to distribute an unlimited number of copies of such source code Licensed Materials, or any derivatives thereof, in any format.

b.	 Object Code License.  For the Licensed Materials provided in object code format, TI hereby grants to you a limited, non-exclusive license to reproduce and use the Licensed Materials provided to you in object code format and to distribute an unlimited number of object or executable copies of such object code Licensed Materials.

2.	Termination.  This license is effective until terminated.  Without prejudice to any other rights, TI may terminate your right to use the Licensed Materials under this Agreement if you fail to comply with the terms of this Agreement.  In such event, you shall destroy all copies of the Licensed Materials, including all portions and derivatives thereof.

3.	Intellectual Property Rights.

a.	The Licensed Materials being provided to you hereunder are being made publicly available by TI, even though they contain copyrighted material of TI and its licensors, if applicable.   In no event may you alter, remove or destroy any copyright notice included in the Licensed Materials.  To the extent that any of the Licensed Materials are provided in binary or object code only, you may not unlock, decompile, reverse engineer, disassemble or otherwise translate such binary or object code to human-perceivable form. The source code of such reverse engineered code may contain TI trade secret and other proprietary information. TI reserves all rights not specifically granted under this Agreement.

b.	Certain Licensed Materials may (i) require patent licenses from third parties claiming patent rights covering implementation of the Licensed Materials or (ii) be based on industry recognized standards or software programs published by industry recognized standards bodies and certain third parties may claim to own patents or copyrights that cover implementation of those standards.  You acknowledge and agree that this Agreement does not convey a license to any such third party patents and copyrights.

c.	YOU ACKNOWLEDGE AND AGREE THAT TI SHALL NOT BE LIABLE FOR AND SHALL NOT DEFEND OR INDEMNIFY YOU AGAINST ANY THIRD PARTY INFRINGEMENT CLAIM THAT RELATES TO OR IS BASED ON YOUR MANUFACTURE, USE, OR DISTRIBUTION OF THE LICENSED MATERIALS OR YOUR MANUFACTURE, USE, OFFER FOR SALE, SALE, IMPORTATION OR DISTRIBUTION OF YOUR PRODUCTS THAT INCLUDE OR INCORPORATE THE LICENSED MATERIALS.

d.	You acknowledge and agree that you are responsible for any fees or royalties that may be payable to any third party based on such third party’s interests in the Licensed Materials described in Section 3(b) above (the “Third Party Payment Obligations”).  You agree to indemnify TI against any Third Party Payment Obligations and will defend any claim, suit or proceeding brought against TI insofar as such claim, suit or proceeding is based on your failure to pay any Third Party Payment Obligations.

4.	Warranties and Limitations.  THE LICENSED MATERIALS ARE PROVIDED “AS IS”.  TI AND ITS LICENSORS MAKE NO WARRANTY OR REPRESENTATION, EXPRESS, IMPLIED OR STATUTORY, INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR COMPLETENESS OF RESPONSES, RESULTS AND LACK OF NEGLIGENCE.  TI DISCLAIMS ANY WARRANTY OF TITLE, QUIET ENJOYMENT, QUIET POSESSION, AND NON-INFRINGEMENT OF ANY THIRD PARTY INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE LICENSED MATERIALS OR USE OF THOSE MATERIALS.

YOU ACKNOWLEDGE AND AGREE THAT THE LICENSED MATERIALS MAY NOT BE INTENDED FOR PRODUCTION APPLICATIONS AND MAY CONTAIN IRREGULARITIES AND DEFECTS NOT FOUND IN PRODUCTION SOFTWARE.  FURTHERMORE, YOU ACKNOWLEDGE AND AGREE THAT THE LICENSED MATERIALS HAVE NOT BEEN TESTED OR CERTIFIED BY ANY GOVERNMENT AGENCY OR INDUSTRY REGULATORY ORGANIZATION OR ANY OTHER THIRD PARTY ORGANIZATION.  YOU AGREE THAT PRIOR TO USING, INCORPORATING OR DISTRIBUTING THE LICENSED MATERIALS IN OR WITH ANY COMMERCIAL PRODUCT THAT YOU WILL THOROUGHLY TEST THE PRODUCT AND THE FUNCTIONALITY OF THE LICENSED MATERIALS IN OR WITH THAT PRODUCT AND BE SOLELY RESPONSIBLE FOR ANY PROBLEMS OR FAILURES.

IN NO EVENT SHALL TI OR ITS LICENSORS BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, HOWEVER CAUSED ON ANY THEORY OF LIABILITY, ARISING IN ANY WAY OUT OF THIS AGREEMENT, OR YOUR USE OF THE LICENSED MATERIALS, WHETHER OR NOT TI HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  EXCLUDED DAMAGES INCLUDE, BUT ARE NOT LIMITED TO, COST OF REMOVAL OR REINSTALLATION, OUTSIDE COMPUTER TIME, LABOR COSTS, LOSS OR CORRUPTION OF DATA, LOSS OF GOODWILL, LOSS OF PROFITS, LOSS OF SAVINGS, OR LOSS OF USE OR INTERRUPTION OF BUSINESS OR ANY OTHER ECONOMIC LOSS.  IN NO EVENT WILL TI’S AGGREGATE LIABILITY UNDER THIS AGREEMENT OR ARISING OUT OF YOUR USE OF THE LICENSED MATERIALS EXCEED FIVE HUNDRED U.S. DOLLARS (US$500).

Because some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages or limitation on how long an implied warranty lasts, the above limitations or exclusions may not apply to you.

5.	Export Control.  The software programs and any “on-line” documentation as well as any updates or upgrades to such software programs or documentation may be subject to the export or import regulations of certain countries. You agree to comply with all such regulations and acknowledge that you have the responsibility to obtain any licenses or other authorizations that may be required to export, re-export or import the Licensed Materials.

6.	Governing Law, Jurisdiction and Severability.  This Agreement will be governed by and interpreted in accordance with the laws of the State of Texas, without reference to that state’s conflict of laws principles.  This Agreement shall not be governed by the United Nations Convention on Contracts for the International Sale of Goods, nor shall it be governed by the Uniform Computer Information Transactions Act (UCITA).  Any dispute arising out of or related to this Agreement will be brought in, and each party consents to the exclusive jurisdiction and venue in the state and federal courts sitting in Dallas Country, Texas.  Each party waives all defenses of lack of personal jurisdiction and forum non-conveniens and agrees that process may be served on either party in a manner authorized by applicable law or court rule.  If for any reason a court of competent jurisdiction finds any provision of the Agreement to be unenforceable, that provision will be enforced to the maximum extent possible to effectuate the intent of the parties and the remainder of the Agreement shall continue in full force and effect.

7.	PRC Provisions.  If you are located in the People’s Republic of China (“PRC”) or if the Licensed Materials will be sent to the PRC, the following provisions shall apply and shall supersede any other provisions in this Agreement concerning the same subject matter as the following provisions:

	a.	Registration Requirements.  You shall be solely responsible for performing all acts and obtaining all approvals that may be required in connection with this Agreement by the government of the PRC, including but not limited to registering pursuant to, and otherwise complying with, the PRC Measures on the Administration of Software Products, Management Regulations on Technology Import-Export, and Technology Import and Export Contract Registration Management Rules.  Upon receipt of such approvals from the government authorities, you shall forward evidence of all such approvals to TI for its records.  In the event that you fail to obtain any such approval or registration, you shall be solely responsible for any and all losses, damages or costs resulting therefrom, and shall indemnify TI for all such losses, damages or costs.

	b.	Governing Language.  This Agreement is written and executed in the English language.  If a translation of this Agreement is required for any purpose, including but not limited to registration of the Agreement pursuant to any governmental laws, regulations or rules, you shall be solely responsible for creating such translation.  Any translation of this Agreement into a language other than English is intended solely in order to comply with such laws or for reference purposes, and the English language version shall be authoritative and controlling.

8.	Entire Agreement.  This is the entire Agreement between you and TI and supersedes any prior agreement between the parties related to the subject matter of this Agreement. No amendment or modification of this Agreement will be effective unless in writing and signed by a duly authorized representative of TI.  You hereby warrant and represent that you have obtained all authorizations and other applicable consents required empowering you to enter into this Agreement.


Version: 221850v2