LES-PRE-20769
SP-Version: 1.0
25 November 2015

END USER LICENCE AGREEMENT FOR THE MALI USERSPACE DRIVER ("Mali DRIVER")

THIS END USER LICENCE AGREEMENT ("LICENCE") IS A LEGAL AGREEMENT
BETWEEN YOU (EITHER A SINGLE INDIVIDUAL, OR SINGLE LEGAL ENTITY) AND
ARM LIMITED ("ARM") FOR THE USE OF THE SOFTWARE ACCOMPANYING THIS
LICENCE. ARM IS ONLY WILLING TO LICENSE THE SOFTWARE TO YOU ON
CONDITION THAT YOU ACCEPT ALL OF THE TERMS IN THIS LICENCE. BY
INSTALLING OR OTHERWISE USING OR COPYING THE SOFTWARE YOU INDICATE
THAT YOU AGREE TO BE BOUND BY ALL OF THE TERMS OF THIS LICENCE. IF YOU
DO NOT AGREE TO THE TERMS OF THIS LICENCE, ARM IS UNWILLING TO LICENSE
THE SOFTWARE TO YOU AND YOU MAY NOT INSTALL, USE OR COPY THE SOFTWARE,
AND YOU SHOULD PROMPTLY RETURN THE SOFTWARE TO YOUR SUPPLIER.

"Applications" means applications for use solely in conjunction with
Mali-based products manufactured under licence from ARM.

"Output" means data resulting from your use of the Software and all
direct and indirect derivatives thereof.

"Software" means any software, firmware and data accompanying this
Licence, any printed, electronic or online documentation supplied with
it under the terms of this Licence for the Mali Driver.

1. LICENCE GRANTS TO YOU.

1.1 ARM hereby grants to you, subject to the terms and conditions of
this Licence, a non-exclusive, non-transferable, revocable, worldwide
licence to:

(i)	use and copy the Software or certain components or optional
	functionality in the Software, as applicable, solely for the
	purposes of running, designing or developing Applications; and

(ii)	subject to Clause 1.2, distribute the whole of the Software;
	and/or (b) the whole or any part of the Software together
	with, or as incorporated into, Applications; and

1.2 If you choose to redistribute the whole or any part of the
Software pursuant to the licences granted in Clause 1.1(ii), you
agree: (i) not to use ARM's or any of its licensors names, logos or
trademarks to market Applications; (ii) to retain any and all
copyright notices and other notices (whether ARM's or its licensor's)
which are included with the Software; and (iii) include a copy of this
Licence with such redistribution.

2. RESTRICTIONS ON USE OF THE SOFTWARE.

BENCHMARKING: This Licence does not prevent you from using the
Software for benchmarking purposes. However, you shall ensure that any
and all benchmarking data relating to the Software, and any other
results of your use or testing of the Software which are indicative of
its performance, efficacy, reliability or quality, shall not be used
to disparage ARM, its products or services, or in a manner that, in
ARM's reasonable judgment, may diminish or otherwise damage the
reputation of ARM.

COPYRIGHT AND RESERVATION OF RIGHTS: The Software is owned by ARM or
its licensors and is protected by copyright and other intellectual
property laws and international treaties. The Software is licensed not
sold. You acquire no rights to the Software other than as expressly
provided by this Licence. You shall not remove from the Software any
copyright notice or other notice and shall ensure that any such notice
is reproduced in any copies of the whole or any part of the Software
made by you or other permitted users.

REVERSE ENGINEERING: Except to the extent that such activity is
permitted by applicable law you shall not reverse engineer, decompile
or disassemble any of the Software. If the Software was provided to
you in Europe you shall not reverse engineer, decompile or disassemble
any of the Software for the purposes of error correction.

RESTRICTED USE: You agree that you shall not use the Software or the
Output other than pursuant to and in accordance with the exercise of
any of the licences granted under this Licence. Without limiting the
generality of the foregoing, you shall not use the Software or any
Output: (a) for determining if any features, functions or processes
provided by the Software are covered by any patents or patent
applications owned by you or a third party; or (b) for developing
technology, applications or products which avoid any of ARM's
intellectual property in the Software licensed hereunder; or (c) as a
reference for modifying existing patents or patent applications or
creating any continuation, continuation in part, or extension of
existing patents or patent applications.

3. SUPPORT.

ARM is not under an obligation to provide support, but it may do so at
its own discretion, and if it does, it will only be in respect of the
Software as delivered.

4. NO WARRANTIES.

YOU AGREE THAT THE SOFTWARE IS LICENSED "AS IS", AND THAT ARM
EXPRESSLY DISCLAIMS ALL REPRESENTATIONS, WARRANTIES, CONDITIONS OR
OTHER TERMS, EXPRESS OR IMPLIED OR STATUTORY, INCLUDING WITHOUT
LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, SATISFACTORY
QUALITY, AND FITNESS FOR A PARTICULAR PURPOSE.

YOU EXPRESSLY ASSUME ALL LIABILITIES AND RISKS, FOR USE OR OPERATION
OF APPLICATIONS, INCLUDING WITHOUT LIMITATION, APPLICATIONS DESIGNED
OR INTENDED FOR MISSION CRITICAL APPLICATIONS, SUCH AS PACEMAKERS,
WEAPONRY, AIRCRAFT NAVIGATION, FACTORY CONTROL SYSTEMS, ETC. SHOULD
THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE ENTIRE COST OF ALL
NECESSARY SERVICING, REPAIR OR CORRECTION.

5. LIMITATION OF LIABILITY.

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL
ARM BE LIABLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
DAMAGES (INCLUDING LOSS OF PROFITS) ARISING OUT OF THE USE OR
INABILITY TO USE THE SOFTWARE WHETHER BASED ON A CLAIM UNDER CONTRACT,
TORT OR OTHER LEGAL THEORY, EVEN IF ARM WAS ADVISED OF THE POSSIBILITY
OF SUCH DAMAGES.

ARM does not seek to limit or exclude liability for death or personal
injury arising from ARM's negligence or ARM's fraud and because some
jurisdictions do not permit the exclusion or limitation of liability
for consequential or incidental damages the above limitation relating
to liability for consequential damages may not apply to you.

NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED IN THIS LICENCE,
THE MAXIMUM LIABILITY OF ARM TO YOU IN AGGREGATE FOR ALL CLAIMS MADE
AGAINST ARM IN CONTRACT TORT OR OTHERWISE UNDER OR IN CONNECTION WITH
THE SUBJECT MATTER OF THIS LICENCE SHALL NOT EXCEED THE GREATER OF:
(I) THE TOTAL OF SUMS PAID BY YOU TO ARM (IF ANY) FOR THIS LICENCE;
AND (II) $10.00 USD. THE EXISTENCE OF MORE THAN ONE CLAIM WILL NOT
ENLARGE OR EXTEND THE LIMIT.

6. U.S. GOVERNMENT END USERS.

US Government Restrictions: Use, duplication, reproduction, release,
modification, disclosure or transfer of the Software is restricted in
accordance with the terms of this Licence.

7. TERM AND TERMINATION.

This Licence shall remain in force until terminated by you or by ARM.
Without prejudice to any of its other rights if you are in breach of
any of the terms and conditions of this Licence then ARM may terminate
this Licence immediately upon giving written notice to you or on
thirty (30) days written notice without cause. You may terminate this
Licence at any time. Upon termination of this Licence by you or by ARM
, you shall stop using the Software and destroy all copies of the
Software in your possession, together with all documentation and
related materials. The provisions of clauses 2, 3, 4, 5, 6, 7, and 8
shall survive termination of this Licence.

8. GENERAL.

This Licence is governed by English Law. Except where ARM agrees
otherwise in: (i) a written contract signed by you and ARM; or (ii) a
written contract provided by ARM and accepted by you, this is the only
agreement between you and ARM relating to the Software and it may only
be modified by written agreement between you and ARM. Except as
expressly agreed in writing, this Licence may not be modified by
purchase orders, advertising or other representation by any person. If
any clause or sentence in this Licence is held by a court of law to be
illegal or unenforceable the remaining provisions of this Licence
shall not be affected thereby. The failure by ARM to enforce any of
the provisions of this Licence, unless waived in writing, shall not
constitute a waiver of ARM's rights to enforce such provision or any
other provision of this Licence in the future.

At ARM's request, you agree to check your computers for installations
of the Software and any other information requested by ARM relating to
Software installation and to provide this information to ARM. You
agree that auditors nominated by ARM may also perform such checking
and reporting on behalf of ARM by prior appointment during your normal
business hours on seven (7) days' notice. ARM shall bear the auditors'
costs for that audit unless it reveals unlicensed usage in which case
you shall promptly reimburse ARM for all reasonable costs and
expenses, including professional fees, relating to such audit. Any
information which is disclosed to ARM or such auditors during checking
or audit shall be treated as your confidential information and shall
only be used by ARM for licence management, compliance and enforcement
purposes.

The Software provided under this Agreement is subject to U.K.,
European Union, and U.S. export control laws and regulations,
including the U.S. Export Administration Act and its associated
regulations (hereafter collectively referred to as "Export
Regulations").  LICENSEE agrees to comply fully with all such Export
Regulations and LICENSEE agrees that it shall not, either directly or
indirectly, export in breach of the Export Regulations, any Software
received under this Agreement, nor any direct products thereof; (i) to
any country, company or person subject to export restrictions or
sanctions under the Export Regulations; or (ii) for any prohibited end
use, which at the time of export requires an export license or other
governmental approval, without first obtaining such license or
approval.
