####################################################################

Copyright (C) 2002 The Regents of the University of California.
Copyright (C) 2008 coresystems GmbH

Produced at the Lawrence Livermore National Laboratory.
Written by David S. Peterson <dsp@llnl.gov>.
UCRL-CODE-2003-012
All rights reserved.

This file is part of nvramtool, a utility for reading/writing coreboot
parameters and displaying information from the coreboot table.
For details, see http://coreboot.org/nvramtool.

This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License (as published by the
Free Software Foundation) version 2, dated June 1991.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the terms and
conditions of the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.

This work was produced at the University of California, Lawrence Livermore
National Laboratory (UC LLNL) under contract no. W-7405-ENG-48 (Contract 48)
between the U.S. Department of Energy (DOE) and The Regents of the
University of California (University) for the operation of UC LLNL.
The rights of the Federal Government are reserved under Contract 48 subject
to the restrictions agreed upon by the DOE and University as allowed under
DOE Acquisition Letter 97-1.

#############################################################################

OUR NOTICE AND TERMS AND CONDITIONS OF THE GNU GENERAL PUBLIC LICENSE

Our Preamble Notice
-------------------

A.  This notice is required to be provided under our contract with the U.S.
    Department of Energy (DOE).  This work was produced at the University of
    California, Lawrence Livermore National Laboratory under Contract No.
    W-7405-ENG-48 with the DOE.

B.  Neither the United States Government nor the University of California nor
    any of their employees, makes any warranty, express or implied, or
    assumes any liability or responsibility for the accuracy, completeness,
    or usefulness of any information, apparatus, product, or process
    disclosed, or represents that its use would not infringe privately-owned
    rights.

C.  Also, reference herein to any specific commercial products, process, or
    services by trade name, trademark, manufacturer or otherwise does not
    necessarily constitute or imply its endorsement, recommendation, or
    favoring by the United States Government or the University of California.
    The views and opinions of authors expressed herein do not necessarily
    state or reflect those of the United States Government or the University
    of California, and shall not be used for advertising or product
    endorsement purposes.  The precise terms and conditions for copying,
    distribution and modification follows.

GNU Terms and Conditions for Copying, Distribution, and Modification
--------------------------------------------------------------------

The precise terms and conditions of the GNU General Public License
(version 2, dated June 1991) are contained in the file COPYING which is
included in this software distribution.
