                            W3C IPR SOFTWARE NOTICE

  Copyright © 1995-2002 [1]World Wide Web Consortium, ([2]Massachusetts
  Institute of Technology, [3]Institut National de Recherche en Informatique et
  en Automatique, [4]Keio University). All Rights Reserved.
  http://www.w3.org/Consortium/Legal/

   This W3C work (including software, documents, or other related items)
   is being provided by the copyright holders under the following
   license. By obtaining, using and/or copying this work, you (the
   licensee) agree that you have read, understood, and will comply with
   the following terms and conditions:

   Permission to use, copy, and modify this software and its
   documentation, with or without modification,  for any purpose and
   without fee or royalty is hereby granted, provided that you include
   the following on ALL copies of the software and documentation or
   portions thereof, including modifications, that you make:
    1. The full text of this NOTICE in a location viewable to users of
       the redistributed or derivative work.
    2. Any pre-existing intellectual property disclaimers, notices, or
       terms and conditions. If none exist, a short notice of the
       following form (hypertext is preferred, text is permitted) should
       be used within the body of any redistributed or derivative code:
       "Copyright © [5]World Wide Web Consortium, ([6]Massachusetts
       Institute of Technology, [7]Institut National de Recherche en
       Informatique et en Automatique, [8]Keio University). All Rights
       Reserved. http://www.w3.org/Consortium/Legal/"
    3. Notice of any changes or modifications to the W3C files, including
       the date changes were made. (We recommend you provide URIs to the
       location from which the code is derived).

   In addition, creators of derivitive works must include the full text
   of this NOTICE in a location viewable to users of the derivitive work.

   THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT
   HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
   INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS
   FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR
   DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS,
   TRADEMARKS OR OTHER RIGHTS.

   COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL
   OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
   DOCUMENTATION.

   The name and trademarks of copyright holders may NOT be used in
   advertising or publicity pertaining to the software without specific,
   written prior permission. Title to copyright in this software and any
   associated documentation will at all times remain with copyright
   holders.

   ____________________________________

   This formulation of W3C's notice and license became active on August
   14 1998. See the [9]older formulation for the policy prior to this
   date. Please see our [10]Copyright FAQ for common questions about
   using materials from our site, including specific terms and conditions
   for packages like libwww, Amaya, and Jigsaw. Other questions about
   this notice can be directed to [11]site-policy@w3.org .


    [12]webmaster
    (last updated 14-Aug-1998 )

References

   1. http://www.w3.org/
   2. http://www.lcs.mit.edu/
   3. http://www.inria.fr/
   4. http://www.keio.ac.jp/
   5. http://www.w3.org/
   6. http://www.lcs.mit.edu/
   7. http://www.inria.fr/
   8. http://www.keio.ac.jp/
   9. http://www.w3.org/Consortium/Legal/copyright-software-19980519.html
  10. http://www.w3.org/Consortium/Legal/IPR-FAQ.html
  11. mailto:site-policy@w3.org
  12. http://www.w3.org/Help/Webmaster.html
