IMPORTANT PLEASE READ CAREFULLY BEFORE USING THIS PRODUCT:  THIS SOFTWARE
LICENSE AGREEMENT ("Agreement") CONTAINS THE LICENSE TERMS AND CONDITIONS FOR
THE XEROX SOFTWARE AND RELATED DOCUMENTATION (collectively "Software").

IF YOU DOWNLOAD, INSTALL OR USE THE SOFTWARE, YOU AGREE TO BE LEGALLY BOUND BY
THE FOLLOWING TERMS AND CONDITIONS.  IF YOU DO NOT ACCEPT THESE LICENSE TERMS
YOU MAY NOT DOWNLOAD, INSTALL OR USE THE SOFTWARE AND YOU MUST DELETE ANY
SOFTWARE FILES ACCESSED BY YOU OR A THIRD PARTY ON YOUR BEHALF FROM ANY AND ALL
COMPUTER MEMORY INTO WHICH SUCH SOFTWARE HAS BEEN LOADED OR STORED.

When used in this agreement the term "Xerox" shall mean Xerox Corporation, its
operating companies, subsidiaries and affiliates.

If you are installing the Software on behalf of the end user you must agree
that you are acting as an agent of the end user customer before proceeding.  As
agent for the end user you hereby agree that you have either; 1) read and agree
to the terms of this Agreement as authorized by the end user, or 2) you have
made the end user aware of the license terms and the end user has explicitly
accepted them.

1.  LICENSE GRANT.
a.  Xerox grants to you a non-exclusive, non-transferable license to use the
Software on the Xerox-brand equipment ("Equipment") on which it was delivered
or, if delivered separately, on a single item of equipment.  You have no other
rights to the Software and may not: (1) distribute, copy, modify, create
derivatives of, decompile, or reverse engineer Software; (2) activate Software
delivered in an inactivated state; or (3) allow others to engage in same.  You
may make archival or back-up copies of the Software, provided each copy
contains all of the copyright and other proprietary notices contained on the
original Software and such copies and is used only for back-up purposes.  Title
to, and all intellectual property rights in, Software will reside solely with
Xerox and/or its licensors who will be considered third-party beneficiaries of
this Agreement with rights of enforcement.
b.  Software may include or incorporate software provided by Microsoft
Corporation ("Microsoft Software").  In addition to all other terms and
conditions of this Agreement, the following applies to Your installation and
use of Microsoft Software.  You may not: (i) sell, lease, loan, sublicense, or
use the Microsoft Software for commercial software hosting services; (ii)
publish any benchmark results for the Microsoft Software; (iii) work around any
technical limitations in the  Microsoft Software; or (iv) separate components
of the Microsoft Software and install them on different pieces of equipment.

2.  THIRD PARTY SOFTWARE.  The Software may include code developed by one or
more third parties ("Third Party Software").  Some Third Party Software may be
subject to other terms and conditions that may be found in an open source
software disclosure package provided with the Software or available for
download with the product documentation.  Notwithstanding the terms and
conditions of this Agreement, the Third Party Software is licensed to you
subject to the terms and conditions of the software license agreement
identified in the open source software disclosure.  If the third party terms
and conditions include licenses that provide for the availability of source
code (such as the GNU General Public License), the open source software
disclosure or the media on which the Software may be delivered will contain the
source code or provide instructions where a copy of such source code can be
obtained.

3.  DISCLAIMER OF WARRANTY.
a.	YOU ACKNOWLEDGE AND AGREE THAT THE SOFTWARE IS PROVIDED "AS IS",
WITHOUT WARRANTY OF ANY KIND BY XEROX OR ITS LICENSORS.  XEROX AND ITS
LICENSORS EXPRESSLY DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, WHETHER
CREATED BY STATUTE OR OTHERWISE, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES
OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY OR NON-INFRINGEMENT OF
THIRD-PARTY RIGHTS.  XEROX AND ITS LICENSORS DO NOT WARRANT THAT THE SOFTWARE
WILL MEET YOUR PARTICULAR REQUIREMENTS, THAT IT WILL OPERATE UNINTERRUPTED OR
ERROR FREE, OR THAT DEFECTS IN THE SOFTWARE CAN OR WILL BE CORRECTED.  ALL
WARRANTIES AND REPRESENTATIONS MADE BY PERSONS OTHER THAN XEROX, INCLUDING, BUT
NOT LIMITED TO, YOUR AUTHORIZED SERVICE PROVIDER, DISTRIBUTORS, DEALERS,
CONCESSIONAIRES AND OTHER RESELLERS OF XEROX, ARE ALSO DISCLAIMED.  THE
WARRANTY DISCLAIMERS SET FORTH HEREIN MAY NOT APPLY IN CERTAIN JURISDICTIONS,
IN WHICH CASE THE WARRANTEES HEREUNDER SHALL BE THE MINIMUM REQUIRED BY LAW.
b.	Software may contain, or be modified to contain, computer code capable
of automatically disabling proper operation or functioning of Software and/or
the system upon which it is installed.  Such disabling code may be activated
(a) if Xerox is denied access to the Software and/or the system as provided
herein, (b) you otherwise breach any term of this Agreement, or (c) such
license is terminated or expires.

4.  INDEMNIFICATION.  Xerox will pay any settlement agreed to by Xerox or any
final judgment for, any claim that Software infringes a third party's valid
United States patent or copyright, provided that you promptly notify Xerox in
writing of any alleged infringement, allow Xerox to direct the defense, and
fully cooperate with Xerox.  Xerox is not responsible for any non-Xerox
litigation expenses or settlements unless Xerox agrees to them in writing.  To
avoid infringement, even if not alleged, Xerox may, at its option, and at no
charge to you, either obtain a license, provide a replacement for the Software
or remove or request that you remove the Software.  Xerox's obligations under
this section are further conditioned on you immediately removing and ceasing
use of the Software in the event that Xerox requests that you remove the
Software and/or provides a replacement.  Xerox will not be liable for any
infringement-related liability outside the scope of this section, including,
without limitation, infringement based upon the Software being modified to your
specifications or due to the Software being used in combination with equipment,
software or supplies not provided by Xerox.

5.  LIMITATION OF LIABILITY.  Notwithstanding any damages that you might incur,
the entire liability of Xerox and its licensors under this Agreement and your
exclusive remedy will be limited to the greater of the amount actually paid by
you for the Software or U.S. $10.00.  IN NO EVENT WILL XEROX OR ITS LICENSORS
BE LIABLE TO YOU FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES
(INCUDING BUT NOT LIMITED TO DAMAGES RELATED TO DATA LOSS, LOST PROFITS OR
BUSINESS INTERRUPTION) IN ANY WAY ARISING OUT OF OR RELATING TO THE SUBJECT
MATTER OF THIS AGREEMENT, EVEN IF XEROX OR ITS LICENSORS HAS BEEN ADVISED OF
THE POSSIBILITY OF SUCH DAMAGES AND EVEN IF THE ABOVE REMEDY FAILS OF ITS
ESSENTIAL PURPOSE.  THE LIMITATIONS OF LIABILITY SET FORTH HEREIN MAY NOT APPLY
IN CERTAIN JURISDICTIONS AND THUS MAY NOT APPLY TO YOU; IN SUCH CASES, XEROX'S
AND ITS LICENSORS' LIABILITY HEREUNDER SHALL BE THE MINIMUM REQUIRED BY LAW.

6.  TERMINATION.  Xerox may terminate your license for the Software (i)
immediately if you no longer use or possess the equipment with which the
Software was provided or are a lessor of the equipment with which the Software
was provided and your first lessee no longer uses or possesses it, (ii) upon
the termination of any agreement under which you have rented or leased the
equipment with which the Software was provided, or (iii) immediately in the
event of a breach by you.  If terminated as provided above, you shall return to
Xerox all copies of the Software, and remove same from all equipment into which
such Software may have been loaded by you.

7.  The Software is provided with Restricted Rights.  You agree to meet all
requirements necessary to ensure that the Federal Government will honor such
rights.  Disclosure, use or reproduction of the Software and accompanying
documentation are subject to restrictions set forth in the Commercial
Computer-Restricted Rights clause at Federal Acquisition Regulation 52.227-19,
when applicable, or in the Department of Defense Federal Acquisition
Regulations Supplement 252.227-7013.

8.  SEVERABLILITY.  If any provision of this Agreement is held invalid by any
law, rule, order or regulation of any government, or by the final determination
of any state or federal court, such invalidity will not affect the
enforceability of any other provisions not held to be invalid. In the event any
provision hereof is declared by competent authority to be invalid, illegal or
unenforceable under any applicable law, to the extent permissible under
applicable law, any such invalid, illegal or unenforceable provision shall be
deemed amended lawfully to conform to the intent of the Parties.

9.  NO WAIVER.  Any delay or omission by either party to exercise any right or
remedy under this Agreement will not be construed to be a waiver of any such
right or remedy or any other right or remedy.  All of the rights of either
party under this Agreement will be cumulative and may be exercised separately
or concurrently.

10.  GOVERNING LAW.  This Agreement shall be construed in accordance with the
laws of the State of New York, without regard to its choice of laws provisions,
and disputes shall be adjudicated or otherwise decided in the forums therefor
located in the State of New York.  The United Nation Convention on Contracts
for International Sales of Goods shall not apply to this Agreement.  Local law
may require that certain laws of your country of residence apply to some
sections of this Agreement, including but not limited to, requiring this
Agreement to be governed by the laws of your country of residence.

11.  EXPORT.  You will not export or re-export the Software without appropriate
United States or foreign government licenses or for any purpose prohibited by
any applicable export control laws.

12.  ENTIRE AGREEMENT.  This Agreement constitutes the entire agreement between
the parties in connection with the subject matter hereof, and supersedes all
prior agreements, understandings, negotiations and discussions, whether oral or
written, between the parties.  No amendment to or modification of this
Agreement will be binding unless it is in writing and signed by a duly
authorized representative of each of the parties.

13.  REMOTE SERVICES. Certain models of Equipment are supported and serviced
using data that is automatically collected by Xerox or transmitted to or from
Xerox by the Equipment connected to Customer's network ("Remote Data") via
electronic transmission to a secure off-site location ("Remote Data Access").
Remote Data Access also enables Xerox to transmit to Customer Releases for
Software and to remotely diagnose and modify Equipment to repair and correct
malfunctions. Examples of Remote Data include product registration, meter read,
supply level, Equipment configuration and settings, software version, and
problem/fault code data. Remote Data may be used by Xerox for billing, report
generation, supplies replenishment, support services, recommending additional
products and services, and product improvement/development purposes. Remote
Data will be transmitted to and from Customer in a secure manner specified by
Xerox. Remote Data Access will not allow Xerox to read, view or download the
content of any Customer documents or other information residing on or passing
through the Equipment or Customer's information management systems. Customer
grants the right to Xerox, without charge, to conduct Remote Data Access for
the purposes described above. Upon Xerox's request, Customer will provide
contact information for Equipment such as name and address of Customer contact
and IP and physical addresses/locations of Equipment. Customer will enable
Remote Data Access via a method prescribed by Xerox, and Customer will provide
reasonable assistance to allow Xerox to provide Remote Data Access. Unless
Xerox deems Equipment incapable of Remote Data Access, Customer will ensure
that Remote Data Access is maintained at all times maintenance or support
services are being provided.

14.  DRIVER DATA COLLECTION.  For driver software installed on a computer
device, you agree that the Software may collect technical data and related
information concerning the type of computing device and operating system;
location (country and city) of the computing device; and the volume, frequency,
and manner of use of the Software and its features.  Xerox may use this
information and statistical data, trends and usage information derived from
this information and the use of the Software for the purposes of developing,
providing, operating, maintaining and/or improving its products and services or
to provide products or services to you.  The Software does not collect any
information that personally identifies users of the Software or permits Xerox
to read, view or download the content of any documents processed by the
Software.

15.  DIAGNOSTIC SOFTWARE.   Software used to evaluate or maintain Xerox
equipment ("Diagnostic Software") may be embedded in, reside on, or may be
loaded onto Xerox equipment. The Diagnostic Software and method of entry or
access to it constitute valuable trade secrets of Xerox. Title to Diagnostic
Software shall at all times remain solely with Xerox and/or its licensors. You
agree that (a) your acquisition of the equipment does not grant you a license
or right to use Diagnostic Software in any manner, and (b) that unless
separately licensed by Xerox to do so, you will not access, use, reproduce,
distribute, or disclose Diagnostic Software for any purpose (or allow third
parties to do so). You agree at all times to allow Xerox to access, monitor,
and otherwise take steps to prevent unauthorized use or reproduction of
Diagnostic Software and to remove or disable Diagnostic Software.

Open Source Software Disclosure
http://www.support.xerox.com/support/open-source-disclosures/documentation
