Refactored using IntelliJ

This commit is contained in:
UnlegitDqrk
2026-02-06 18:03:32 +01:00
parent 6c513c9436
commit 8829737d30
16 changed files with 880 additions and 823 deletions

View File

@@ -112,7 +112,7 @@
<dependency> <dependency>
<groupId>org.openautonomousconnection</groupId> <groupId>org.openautonomousconnection</groupId>
<artifactId>Protocol</artifactId> <artifactId>Protocol</artifactId>
<version>1.0.0-BETA.7.3</version> <version>1.0.0-BETA.7.4</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>

View File

@@ -1,7 +1,5 @@
package org.openautonomousconnection.webserver; package org.openautonomousconnection.webserver;
import jdk.dynalink.linker.LinkerServices;
import java.util.Map; import java.util.Map;
public final class ContentTypeResolver { public final class ContentTypeResolver {

View File

@@ -17,7 +17,8 @@ import java.util.Scanner;
public class Main { public class Main {
public static final CommandPermission PERMISSION_ALL = new CommandPermission("all", 1); public static final CommandPermission PERMISSION_ALL = new CommandPermission("all", 1);
private static final CommandExecutor commandExecutor = new CommandExecutor("WebServer", PERMISSION_ALL) {}; private static final CommandExecutor commandExecutor = new CommandExecutor("WebServer", PERMISSION_ALL) {
};
@Getter @Getter
private static CommandManager commandManager; private static CommandManager commandManager;

View File

@@ -18,7 +18,8 @@ import org.openautonomousconnection.webserver.utils.WebHasher;
import java.io.*; import java.io.*;
import java.nio.file.Files; import java.nio.file.Files;
import java.util.*; import java.util.Arrays;
import java.util.Map;
@ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.WEB) @ProtocolInfo(protocolSide = ProtocolVersion.ProtocolSide.WEB)
public final class WebServer extends ProtocolWebServer { public final class WebServer extends ProtocolWebServer {
@@ -35,7 +36,7 @@ public final class WebServer extends ProtocolWebServer {
int sessionExpire, int sessionExpire,
int maxUpload int maxUpload
) throws Exception { ) throws Exception {
super(authFile, rulesFile,sessionExpire, maxUpload); super(authFile, rulesFile, sessionExpire, maxUpload);
// NOTE: Values chosen as safe defaults. // NOTE: Values chosen as safe defaults.
// move them to Main and pass them in here (no hidden assumptions). // move them to Main and pass them in here (no hidden assumptions).
@@ -80,8 +81,10 @@ public final class WebServer extends ProtocolWebServer {
File root = getContentFolder().getCanonicalFile(); File root = getContentFolder().getCanonicalFile();
File file = new File(root, path).getCanonicalFile(); File file = new File(root, path).getCanonicalFile();
if (!file.getPath().startsWith(root.getPath())) return new WebResponsePacket(403, "text/plain; charset=utf-8", Map.of(), "Forbidden".getBytes()); if (!file.getPath().startsWith(root.getPath()))
if (!file.exists() || !file.isFile()) return new WebResponsePacket(404, "text/plain; charset=utf-8", Map.of(), "Not found".getBytes()); return new WebResponsePacket(403, "text/plain; charset=utf-8", Map.of(), "Forbidden".getBytes());
if (!file.exists() || !file.isFile())
return new WebResponsePacket(404, "text/plain; charset=utf-8", Map.of(), "Not found".getBytes());
String contentType = ContentTypeResolver.resolve(file.getName()); String contentType = ContentTypeResolver.resolve(file.getName());
long size = file.length(); long size = file.length();

View File

@@ -1,6 +1,9 @@
package org.openautonomousconnection.webserver.api; package org.openautonomousconnection.webserver.api;
import java.lang.annotation.*; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/** /**
* Declares a route path for a server-side Java WebPage. * Declares a route path for a server-side Java WebPage.

View File

@@ -41,7 +41,15 @@ public final class SessionContext {
return new SessionContext(sessionId, user, true); return new SessionContext(sessionId, user, true);
} }
public boolean isValid() { return valid; } public boolean isValid() {
public String getSessionId() { return sessionId; } return valid;
public String getUser() { return user; } }
public String getSessionId() {
return sessionId;
}
public String getUser() {
return user;
}
} }

View File

@@ -3,8 +3,8 @@ package org.openautonomousconnection.webserver.api;
import org.openautonomousconnection.protocol.packets.v1_0_0.beta.web.WebRequestPacket; import org.openautonomousconnection.protocol.packets.v1_0_0.beta.web.WebRequestPacket;
import org.openautonomousconnection.protocol.side.server.CustomConnectedClient; import org.openautonomousconnection.protocol.side.server.CustomConnectedClient;
import org.openautonomousconnection.protocol.side.web.ProtocolWebServer; import org.openautonomousconnection.protocol.side.web.ProtocolWebServer;
import org.openautonomousconnection.webserver.utils.WebHasher;
import org.openautonomousconnection.webserver.utils.RequestParams; import org.openautonomousconnection.webserver.utils.RequestParams;
import org.openautonomousconnection.webserver.utils.WebHasher;
/** /**
* Context passed to Java WebPages (client, request, session, params, hasher). * Context passed to Java WebPages (client, request, session, params, hasher).

View File

@@ -8,16 +8,6 @@ import java.util.concurrent.ConcurrentHashMap;
*/ */
public final class JavaPageCache { public final class JavaPageCache {
private static final class Entry {
final long lastModified;
final Class<?> clazz;
Entry(long lastModified, Class<?> clazz) {
this.lastModified = lastModified;
this.clazz = clazz;
}
}
private final ConcurrentHashMap<String, Entry> cache = new ConcurrentHashMap<>(); private final ConcurrentHashMap<String, Entry> cache = new ConcurrentHashMap<>();
public Class<?> getOrCompile(File javaFile) throws Exception { public Class<?> getOrCompile(File javaFile) throws Exception {
@@ -33,4 +23,7 @@ public final class JavaPageCache {
cache.put(key, new Entry(lm, compiled)); cache.put(key, new Entry(lm, compiled));
return compiled; return compiled;
} }
private record Entry(long lastModified, Class<?> clazz) {
}
} }

View File

@@ -1,6 +1,9 @@
package org.openautonomousconnection.webserver.runtime; package org.openautonomousconnection.webserver.runtime;
import javax.tools.*; import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
import java.io.File; import java.io.File;
import java.net.URL; import java.net.URL;
import java.net.URLClassLoader; import java.net.URLClassLoader;
@@ -16,7 +19,8 @@ import java.util.List;
*/ */
public final class JavaPageCompiler { public final class JavaPageCompiler {
private JavaPageCompiler() {} private JavaPageCompiler() {
}
public static Class<?> compile(File javaFile) throws Exception { public static Class<?> compile(File javaFile) throws Exception {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
@@ -35,7 +39,7 @@ public final class JavaPageCompiler {
String fqcn = deriveFqcn(javaFile); String fqcn = deriveFqcn(javaFile);
// Root must be the folder containing the package root (javaFile parent is fine if classes output there). // Root must be the folder containing the package root (javaFile parent is fine if classes output there).
URLClassLoader cl = new URLClassLoader(new URL[]{ javaFile.getParentFile().toURI().toURL() }); URLClassLoader cl = new URLClassLoader(new URL[]{javaFile.getParentFile().toURI().toURL()});
return cl.loadClass(fqcn); return cl.loadClass(fqcn);
} }

View File

@@ -7,8 +7,8 @@ import org.openautonomousconnection.protocol.side.web.ProtocolWebServer;
import org.openautonomousconnection.webserver.WebServer; import org.openautonomousconnection.webserver.WebServer;
import org.openautonomousconnection.webserver.api.WebPage; import org.openautonomousconnection.webserver.api.WebPage;
import org.openautonomousconnection.webserver.api.WebPageContext; import org.openautonomousconnection.webserver.api.WebPageContext;
import org.openautonomousconnection.webserver.utils.WebHasher;
import org.openautonomousconnection.webserver.utils.RequestParams; import org.openautonomousconnection.webserver.utils.RequestParams;
import org.openautonomousconnection.webserver.utils.WebHasher;
import java.io.File; import java.io.File;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
@@ -21,7 +21,8 @@ public final class JavaPageDispatcher {
private static final JavaRouteRegistry ROUTES = new JavaRouteRegistry(); private static final JavaRouteRegistry ROUTES = new JavaRouteRegistry();
private JavaPageDispatcher() {} private JavaPageDispatcher() {
}
public static WebResponsePacket dispatch( public static WebResponsePacket dispatch(
CustomConnectedClient client, CustomConnectedClient client,

View File

@@ -4,7 +4,10 @@ import org.openautonomousconnection.webserver.api.Route;
import org.openautonomousconnection.webserver.api.WebPage; import org.openautonomousconnection.webserver.api.WebPage;
import java.io.File; import java.io.File;
import java.util.*; import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
/** /**
@@ -18,24 +21,50 @@ import java.util.concurrent.ConcurrentHashMap;
*/ */
public final class JavaRouteRegistry { public final class JavaRouteRegistry {
private static final class RouteEntry {
final File sourceFile;
final long lastModified;
final String fqcn;
final boolean routable;
RouteEntry(File sourceFile, long lastModified, String fqcn, boolean routable) {
this.sourceFile = sourceFile;
this.lastModified = lastModified;
this.fqcn = fqcn;
this.routable = routable;
}
}
private final JavaPageCache cache = new JavaPageCache(); private final JavaPageCache cache = new JavaPageCache();
private final ConcurrentHashMap<String, RouteEntry> routes = new ConcurrentHashMap<>(); private final ConcurrentHashMap<String, RouteEntry> routes = new ConcurrentHashMap<>();
private final ConcurrentHashMap<String, Long> scanState = new ConcurrentHashMap<>(); private final ConcurrentHashMap<String, Long> scanState = new ConcurrentHashMap<>();
private static String normalizeRoute(String value) {
if (value == null) return "/";
String v = value.trim();
if (v.isEmpty()) return "/";
if (!v.startsWith("/")) v = "/" + v;
return v;
}
private static List<File> listJavaFiles(File root) {
ArrayList<File> out = new ArrayList<>();
Deque<File> stack = new ArrayDeque<>();
stack.push(root);
while (!stack.isEmpty()) {
File cur = stack.pop();
File[] children = cur.listFiles();
if (children == null) continue;
for (File c : children) {
if (c.isDirectory()) {
stack.push(c);
} else if (c.isFile() && c.getName().endsWith(".java")) {
out.add(c);
}
}
}
return out;
}
private static long folderLastModified(File folder) {
long lm = folder.lastModified();
File[] children = folder.listFiles();
if (children == null) return lm;
for (File c : children) {
lm = Math.max(lm, c.isDirectory() ? folderLastModified(c) : c.lastModified());
}
return lm;
}
/** /**
* Refreshes registry when content folder changed. * Refreshes registry when content folder changed.
* *
@@ -88,52 +117,16 @@ public final class JavaRouteRegistry {
} }
} }
private static String normalizeRoute(String value) { private record RouteEntry(File sourceFile, long lastModified, String fqcn, boolean routable) {
if (value == null) return "/";
String v = value.trim();
if (v.isEmpty()) return "/";
if (!v.startsWith("/")) v = "/" + v;
return v;
}
private static List<File> listJavaFiles(File root) {
ArrayList<File> out = new ArrayList<>();
Deque<File> stack = new ArrayDeque<>();
stack.push(root);
while (!stack.isEmpty()) {
File cur = stack.pop();
File[] children = cur.listFiles();
if (children == null) continue;
for (File c : children) {
if (c.isDirectory()) {
stack.push(c);
} else if (c.isFile() && c.getName().endsWith(".java")) {
out.add(c);
}
}
}
return out;
}
private static long folderLastModified(File folder) {
long lm = folder.lastModified();
File[] children = folder.listFiles();
if (children == null) return lm;
for (File c : children) {
lm = Math.max(lm, c.isDirectory() ? folderLastModified(c) : c.lastModified());
}
return lm;
} }
/** /**
* Lookup result for a route. * Lookup result for a route.
* *
* @param sourceFile Java source file * @param sourceFile Java source file
* @param fqcn fully qualified class name * @param fqcn fully qualified class name
* @param routable true if @Route + implements WebPage * @param routable true if @Route + implements WebPage
*/ */
public record RouteLookupResult(File sourceFile, String fqcn, boolean routable) {} public record RouteLookupResult(File sourceFile, String fqcn, boolean routable) {
}
} }

View File

@@ -7,7 +7,8 @@ import java.nio.charset.StandardCharsets;
*/ */
public final class Html { public final class Html {
private Html() {} private Html() {
}
/** /**
* Escapes text for HTML. * Escapes text for HTML.
@@ -37,7 +38,7 @@ public final class Html {
* Simple page wrapper. * Simple page wrapper.
* *
* @param title title * @param title title
* @param body body html * @param body body html
* @return full html * @return full html
*/ */
public static String page(String title, String body) { public static String page(String title, String body) {

View File

@@ -88,7 +88,7 @@ public final class RequestParams {
* Returns SHA-256 hex of a header value. * Returns SHA-256 hex of a header value.
* *
* @param hasher hasher * @param hasher hasher
* @param key header key * @param key header key
* @return sha256 hex (or null if missing) * @return sha256 hex (or null if missing)
*/ */
public String getSha256Hex(WebHasher hasher, String key) { public String getSha256Hex(WebHasher hasher, String key) {

View File

@@ -26,8 +26,8 @@ public final class WebHasher {
* Creates a hasher. * Creates a hasher.
* *
* @param pbkdf2Iterations iterations (recommended >= 100k) * @param pbkdf2Iterations iterations (recommended >= 100k)
* @param pbkdf2SaltBytes salt bytes * @param pbkdf2SaltBytes salt bytes
* @param pbkdf2KeyBytes derived key bytes * @param pbkdf2KeyBytes derived key bytes
*/ */
public WebHasher(int pbkdf2Iterations, int pbkdf2SaltBytes, int pbkdf2KeyBytes) { public WebHasher(int pbkdf2Iterations, int pbkdf2SaltBytes, int pbkdf2KeyBytes) {
if (pbkdf2Iterations < 10_000) throw new IllegalArgumentException("pbkdf2Iterations too low"); if (pbkdf2Iterations < 10_000) throw new IllegalArgumentException("pbkdf2Iterations too low");
@@ -38,6 +38,35 @@ public final class WebHasher {
this.pbkdf2KeyBytes = pbkdf2KeyBytes; this.pbkdf2KeyBytes = pbkdf2KeyBytes;
} }
private static byte[] derive(char[] password, byte[] salt, int iterations, int keyBytes) {
try {
PBEKeySpec spec = new PBEKeySpec(password, salt, iterations, keyBytes * 8);
SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
return skf.generateSecret(spec).getEncoded();
} catch (Exception e) {
throw new IllegalStateException("PBKDF2 not available", e);
}
}
private static boolean constantTimeEquals(byte[] a, byte[] b) {
if (a == null || b == null) return false;
if (a.length != b.length) return false;
int r = 0;
for (int i = 0; i < a.length; i++) r |= (a[i] ^ b[i]);
return r == 0;
}
private static String toHexLower(byte[] data) {
final char[] hex = "0123456789abcdef".toCharArray();
char[] out = new char[data.length * 2];
int i = 0;
for (byte b : data) {
out[i++] = hex[(b >>> 4) & 0x0F];
out[i++] = hex[b & 0x0F];
}
return new String(out);
}
/** /**
* SHA-256 hashes text (lowercase hex). * SHA-256 hashes text (lowercase hex).
* *
@@ -77,7 +106,7 @@ public final class WebHasher {
* Verifies a raw password against a stored PBKDF2 string. * Verifies a raw password against a stored PBKDF2 string.
* *
* @param password raw password * @param password raw password
* @param stored stored format * @param stored stored format
* @return true if valid * @return true if valid
*/ */
public boolean pbkdf2Verify(String password, String stored) { public boolean pbkdf2Verify(String password, String stored) {
@@ -107,33 +136,4 @@ public final class WebHasher {
byte[] actual = derive(password.toCharArray(), salt, it, expected.length); byte[] actual = derive(password.toCharArray(), salt, it, expected.length);
return constantTimeEquals(expected, actual); return constantTimeEquals(expected, actual);
} }
private static byte[] derive(char[] password, byte[] salt, int iterations, int keyBytes) {
try {
PBEKeySpec spec = new PBEKeySpec(password, salt, iterations, keyBytes * 8);
SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
return skf.generateSecret(spec).getEncoded();
} catch (Exception e) {
throw new IllegalStateException("PBKDF2 not available", e);
}
}
private static boolean constantTimeEquals(byte[] a, byte[] b) {
if (a == null || b == null) return false;
if (a.length != b.length) return false;
int r = 0;
for (int i = 0; i < a.length; i++) r |= (a[i] ^ b[i]);
return r == 0;
}
private static String toHexLower(byte[] data) {
final char[] hex = "0123456789abcdef".toCharArray();
char[] out = new char[data.length * 2];
int i = 0;
for (byte b : data) {
out[i++] = hex[(b >>> 4) & 0x0F];
out[i++] = hex[b & 0x0F];
}
return new String(out);
}
} }

View File

@@ -1,381 +1,407 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Javassist License</TITLE> <TITLE>Javassist License</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1"> <META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<META content="MSHTML 5.50.4916.2300" name=GENERATOR></HEAD> <META content="MSHTML 5.50.4916.2300" name=GENERATOR>
</HEAD>
<BODY text=#000000 vLink=#551a8b aLink=#ff0000 link=#0000ee bgColor=#ffffff> <BODY aLink=#ff0000 bgColor=#ffffff link=#0000ee text=#000000 vLink=#551a8b>
<CENTER><B><FONT size=+2>MOZILLA PUBLIC LICENSE</FONT></B> <BR><B>Version <CENTER><B><FONT size=+2>MOZILLA PUBLIC LICENSE</FONT></B> <BR><B>Version
1.1</B> 1.1</B>
<P> <P>
<HR width="20%"> <HR width="20%">
</CENTER> </CENTER>
<P><B>1. Definitions.</B> <P><B>1. Definitions.</B>
<UL><B>1.0.1. "Commercial Use" </B>means distribution or otherwise making the <UL><B>1.0.1. "Commercial Use" </B>means distribution or otherwise making the
Covered Code available to a third party. Covered Code available to a third party.
<P><B>1.1. ''Contributor''</B> means each entity that creates or contributes <P><B>1.1. ''Contributor''</B> means each entity that creates or contributes
to the creation of Modifications. to the creation of Modifications.
<P><B>1.2. ''Contributor Version''</B> means the combination of the Original <P><B>1.2. ''Contributor Version''</B> means the combination of the Original
Code, prior Modifications used by a Contributor, and the Modifications made by Code, prior Modifications used by a Contributor, and the Modifications made by
that particular Contributor. that particular Contributor.
<P><B>1.3. ''Covered Code''</B> means the Original Code or Modifications or <P><B>1.3. ''Covered Code''</B> means the Original Code or Modifications or
the combination of the Original Code and Modifications, in each case including the combination of the Original Code and Modifications, in each case including
portions thereof<B>.</B> portions thereof<B>.</B>
<P><B>1.4. ''Electronic Distribution Mechanism''</B> means a mechanism <P><B>1.4. ''Electronic Distribution Mechanism''</B> means a mechanism
generally accepted in the software development community for the electronic generally accepted in the software development community for the electronic
transfer of data. transfer of data.
<P><B>1.5. ''Executable''</B> means Covered Code in any form other than Source <P><B>1.5. ''Executable''</B> means Covered Code in any form other than Source
Code. Code.
<P><B>1.6. ''Initial Developer''</B> means the individual or entity identified <P><B>1.6. ''Initial Developer''</B> means the individual or entity identified
as the Initial Developer in the Source Code notice required by <B>Exhibit as the Initial Developer in the Source Code notice required by <B>Exhibit
A</B>. A</B>.
<P><B>1.7. ''Larger Work''</B> means a work which combines Covered Code or <P><B>1.7. ''Larger Work''</B> means a work which combines Covered Code or
portions thereof with code not governed by the terms of this License. portions thereof with code not governed by the terms of this License.
<P><B>1.8. ''License''</B> means this document. <P><B>1.8. ''License''</B> means this document.
<P><B>1.8.1. "Licensable"</B> means having the right to grant, to the maximum <P><B>1.8.1. "Licensable"</B> means having the right to grant, to the maximum
extent possible, whether at the time of the initial grant or subsequently extent possible, whether at the time of the initial grant or subsequently
acquired, any and all of the rights conveyed herein. acquired, any and all of the rights conveyed herein.
<P><B>1.9. ''Modifications''</B> means any addition to or deletion from the <P><B>1.9. ''Modifications''</B> means any addition to or deletion from the
substance or structure of either the Original Code or any previous substance or structure of either the Original Code or any previous
Modifications. When Covered Code is released as a series of files, a Modifications. When Covered Code is released as a series of files, a
Modification is: Modification is:
<UL><B>A.</B> Any addition to or deletion from the contents of a file <UL><B>A.</B> Any addition to or deletion from the contents of a file
containing Original Code or previous Modifications. containing Original Code or previous Modifications.
<P><B>B.</B> Any new file that contains any part of the Original Code or <P><B>B.</B> Any new file that contains any part of the Original Code or
previous Modifications. <BR>&nbsp;</P></UL><B>1.10. ''Original Code''</B> previous Modifications. <BR>&nbsp;</P></UL>
means Source Code of computer software code which is described in the Source <B>1.10. ''Original Code''</B>
Code notice required by <B>Exhibit A</B> as Original Code, and which, at the means Source Code of computer software code which is described in the Source
time of its release under this License is not already Covered Code governed by Code notice required by <B>Exhibit A</B> as Original Code, and which, at the
this License. time of its release under this License is not already Covered Code governed by
<P><B>1.10.1. "Patent Claims"</B> means any patent claim(s), now owned or this License.
hereafter acquired, including without limitation,&nbsp; method, process, and <P><B>1.10.1. "Patent Claims"</B> means any patent claim(s), now owned or
apparatus claims, in any patent Licensable by grantor. hereafter acquired, including without limitation,&nbsp; method, process, and
<P><B>1.11. ''Source Code''</B> means the preferred form of the Covered Code apparatus claims, in any patent Licensable by grantor.
for making modifications to it, including all modules it contains, plus any <P><B>1.11. ''Source Code''</B> means the preferred form of the Covered Code
associated interface definition files, scripts used to control compilation and for making modifications to it, including all modules it contains, plus any
installation of an Executable, or source code differential comparisons against associated interface definition files, scripts used to control compilation and
either the Original Code or another well known, available Covered Code of the installation of an Executable, or source code differential comparisons against
Contributor's choice. The Source Code can be in a compressed or archival form, either the Original Code or another well known, available Covered Code of the
provided the appropriate decompression or de-archiving software is widely Contributor's choice. The Source Code can be in a compressed or archival form,
available for no charge. provided the appropriate decompression or de-archiving software is widely
<P><B>1.12. "You'' (or "Your")&nbsp;</B> means an individual or a legal entity available for no charge.
exercising rights under, and complying with all of the terms of, this License <P><B>1.12. "You'' (or "Your")&nbsp;</B> means an individual or a legal entity
or a future version of this License issued under Section 6.1. For legal exercising rights under, and complying with all of the terms of, this License
entities, "You'' includes any entity which controls, is controlled by, or is or a future version of this License issued under Section 6.1. For legal
under common control with You. For purposes of this definition, "control'' entities, "You'' includes any entity which controls, is controlled by, or is
means (a) the power, direct or indirect, to cause the direction or management under common control with You. For purposes of this definition, "control''
of such entity, whether by contract or otherwise, or (b) ownership of more means (a) the power, direct or indirect, to cause the direction or management
than fifty percent (50%) of the outstanding shares or beneficial ownership of of such entity, whether by contract or otherwise, or (b) ownership of more
such entity.</P></UL><B>2. Source Code License.</B> than fifty percent (50%) of the outstanding shares or beneficial ownership of
such entity.</P></UL>
<B>2. Source Code License.</B>
<UL><B>2.1. The Initial Developer Grant.</B> <BR>The Initial Developer hereby <UL><B>2.1. The Initial Developer Grant.</B> <BR>The Initial Developer hereby
grants You a world-wide, royalty-free, non-exclusive license, subject to third grants You a world-wide, royalty-free, non-exclusive license, subject to third
party intellectual property claims: party intellectual property claims:
<UL><B>(a)</B>&nbsp;<B> </B>under intellectual property rights (other than <UL><B>(a)</B>&nbsp;<B> </B>under intellectual property rights (other than
patent or trademark) Licensable by Initial Developer to use, reproduce, patent or trademark) Licensable by Initial Developer to use, reproduce,
modify, display, perform, sublicense and distribute the Original Code (or modify, display, perform, sublicense and distribute the Original Code (or
portions thereof) with or without Modifications, and/or as part of a Larger portions thereof) with or without Modifications, and/or as part of a Larger
Work; and Work; and
<P><B>(b)</B> under Patents Claims infringed by the making, using or selling <P><B>(b)</B> under Patents Claims infringed by the making, using or selling
of Original Code, to make, have made, use, practice, sell, and offer for of Original Code, to make, have made, use, practice, sell, and offer for
sale, and/or otherwise dispose of the Original Code (or portions thereof). sale, and/or otherwise dispose of the Original Code (or portions thereof).
<UL> <UL>
<UL></UL></UL><B>(c) </B>the licenses granted in this Section 2.1(a) and (b) <UL></UL>
are effective on the date Initial Developer first distributes Original Code </UL>
under the terms of this License. <B>(c) </B>the licenses granted in this Section 2.1(a) and (b)
<P><B>(d) </B>Notwithstanding Section 2.1(b) above, no patent license is are effective on the date Initial Developer first distributes Original Code
granted: 1) for code that You delete from the Original Code; 2) separate under the terms of this License.
from the Original Code;&nbsp; or 3) for infringements caused by: i) the <P><B>(d) </B>Notwithstanding Section 2.1(b) above, no patent license is
modification of the Original Code or ii) the combination of the Original granted: 1) for code that You delete from the Original Code; 2) separate
Code with other software or devices. <BR>&nbsp;</P></UL><B>2.2. Contributor from the Original Code;&nbsp; or 3) for infringements caused by: i) the
Grant.</B> <BR>Subject to third party intellectual property claims, each modification of the Original Code or ii) the combination of the Original
Contributor hereby grants You a world-wide, royalty-free, non-exclusive Code with other software or devices. <BR>&nbsp;</P></UL>
license <B>2.2. Contributor
<UL> <BR><B>(a)</B>&nbsp;<B> </B>under intellectual property rights (other Grant.</B> <BR>Subject to third party intellectual property claims, each
than patent or trademark) Licensable by Contributor, to use, reproduce, Contributor hereby grants You a world-wide, royalty-free, non-exclusive
modify, display, perform, sublicense and distribute the Modifications license
created by such Contributor (or portions thereof) either on an unmodified <UL><BR><B>(a)</B>&nbsp;<B> </B>under intellectual property rights (other
basis, with other Modifications, as Covered Code and/or as part of a Larger than patent or trademark) Licensable by Contributor, to use, reproduce,
Work; and modify, display, perform, sublicense and distribute the Modifications
<P><B>(b)</B> under Patent Claims infringed by the making, using, or selling created by such Contributor (or portions thereof) either on an unmodified
of&nbsp; Modifications made by that Contributor either alone and/or in<FONT basis, with other Modifications, as Covered Code and/or as part of a Larger
color=#000000> combination with its Contributor Version (or portions of such Work; and
combination), to make, use, sell, offer for sale, have made, and/or <P><B>(b)</B> under Patent Claims infringed by the making, using, or selling
otherwise dispose of: 1) Modifications made by that Contributor (or portions of&nbsp; Modifications made by that Contributor either alone and/or in<FONT
thereof); and 2) the combination of&nbsp; Modifications made by that color=#000000> combination with its Contributor Version (or portions of such
Contributor with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or
combination).</FONT> otherwise dispose of: 1) Modifications made by that Contributor (or portions
<P><B>(c) </B>the licenses granted in Sections 2.2(a) and 2.2(b) are thereof); and 2) the combination of&nbsp; Modifications made by that
effective on the date Contributor first makes Commercial Use of the Covered Contributor with its Contributor Version (or portions of such
Code. combination).</FONT>
<P><B>(d)&nbsp;</B>&nbsp;&nbsp; Notwithstanding Section 2.2(b) above, no <P><B>(c) </B>the licenses granted in Sections 2.2(a) and 2.2(b) are
patent license is granted: 1) for any code that Contributor has deleted from effective on the date Contributor first makes Commercial Use of the Covered
the Contributor Version; 2)&nbsp; separate from the Contributor Code.
Version;&nbsp; 3)&nbsp; for infringements caused by: i) third party <P><B>(d)&nbsp;</B>&nbsp;&nbsp; Notwithstanding Section 2.2(b) above, no
modifications of Contributor Version or ii)&nbsp; the combination of patent license is granted: 1) for any code that Contributor has deleted from
Modifications made by that Contributor with other software&nbsp; (except as the Contributor Version; 2)&nbsp; separate from the Contributor
part of the Contributor Version) or other devices; or 4) under Patent Claims Version;&nbsp; 3)&nbsp; for infringements caused by: i) third party
infringed by Covered Code in the absence of Modifications made by that modifications of Contributor Version or ii)&nbsp; the combination of
Contributor.</P></UL></UL> Modifications made by that Contributor with other software&nbsp; (except as
part of the Contributor Version) or other devices; or 4) under Patent Claims
infringed by Covered Code in the absence of Modifications made by that
Contributor.</P></UL>
</UL>
<P><BR><B>3. Distribution Obligations.</B> <P><BR><B>3. Distribution Obligations.</B>
<UL><B>3.1. Application of License.</B> <BR>The Modifications which You create <UL><B>3.1. Application of License.</B> <BR>The Modifications which You create
or to which You contribute are governed by the terms of this License, or to which You contribute are governed by the terms of this License,
including without limitation Section <B>2.2</B>. The Source Code version of including without limitation Section <B>2.2</B>. The Source Code version of
Covered Code may be distributed only under the terms of this License or a Covered Code may be distributed only under the terms of this License or a
future version of this License released under Section <B>6.1</B>, and You must future version of this License released under Section <B>6.1</B>, and You must
include a copy of this License with every copy of the Source Code You include a copy of this License with every copy of the Source Code You
distribute. You may not offer or impose any terms on any Source Code version distribute. You may not offer or impose any terms on any Source Code version
that alters or restricts the applicable version of this License or the that alters or restricts the applicable version of this License or the
recipients' rights hereunder. However, You may include an additional document recipients' rights hereunder. However, You may include an additional document
offering the additional rights described in Section <B>3.5</B>. offering the additional rights described in Section <B>3.5</B>.
<P><B>3.2. Availability of Source Code.</B> <BR>Any Modification which You <P><B>3.2. Availability of Source Code.</B> <BR>Any Modification which You
create or to which You contribute must be made available in Source Code form create or to which You contribute must be made available in Source Code form
under the terms of this License either on the same media as an Executable under the terms of this License either on the same media as an Executable
version or via an accepted Electronic Distribution Mechanism to anyone to whom version or via an accepted Electronic Distribution Mechanism to anyone to whom
you made an Executable version available; and if made available via Electronic you made an Executable version available; and if made available via Electronic
Distribution Mechanism, must remain available for at least twelve (12) months Distribution Mechanism, must remain available for at least twelve (12) months
after the date it initially became available, or at least six (6) months after after the date it initially became available, or at least six (6) months after
a subsequent version of that particular Modification has been made available a subsequent version of that particular Modification has been made available
to such recipients. You are responsible for ensuring that the Source Code to such recipients. You are responsible for ensuring that the Source Code
version remains available even if the Electronic Distribution Mechanism is version remains available even if the Electronic Distribution Mechanism is
maintained by a third party. maintained by a third party.
<P><B>3.3. Description of Modifications.</B> <BR>You must cause all Covered <P><B>3.3. Description of Modifications.</B> <BR>You must cause all Covered
Code to which You contribute to contain a file documenting the changes You Code to which You contribute to contain a file documenting the changes You
made to create that Covered Code and the date of any change. You must include made to create that Covered Code and the date of any change. You must include
a prominent statement that the Modification is derived, directly or a prominent statement that the Modification is derived, directly or
indirectly, from Original Code provided by the Initial Developer and including indirectly, from Original Code provided by the Initial Developer and including
the name of the Initial Developer in (a) the Source Code, and (b) in any the name of the Initial Developer in (a) the Source Code, and (b) in any
notice in an Executable version or related documentation in which You describe notice in an Executable version or related documentation in which You describe
the origin or ownership of the Covered Code. the origin or ownership of the Covered Code.
<P><B>3.4. Intellectual Property Matters</B> <P><B>3.4. Intellectual Property Matters</B>
<UL><B>(a) Third Party Claims</B>. <BR>If Contributor has knowledge that a <UL><B>(a) Third Party Claims</B>. <BR>If Contributor has knowledge that a
license under a third party's intellectual property rights is required to license under a third party's intellectual property rights is required to
exercise the rights granted by such Contributor under Sections 2.1 or 2.2, exercise the rights granted by such Contributor under Sections 2.1 or 2.2,
Contributor must include a text file with the Source Code distribution Contributor must include a text file with the Source Code distribution
titled "LEGAL'' which describes the claim and the party making the claim in titled "LEGAL'' which describes the claim and the party making the claim in
sufficient detail that a recipient will know whom to contact. If Contributor sufficient detail that a recipient will know whom to contact. If Contributor
obtains such knowledge after the Modification is made available as described obtains such knowledge after the Modification is made available as described
in Section 3.2, Contributor shall promptly modify the LEGAL file in all in Section 3.2, Contributor shall promptly modify the LEGAL file in all
copies Contributor makes available thereafter and shall take other steps copies Contributor makes available thereafter and shall take other steps
(such as notifying appropriate mailing lists or newsgroups) reasonably (such as notifying appropriate mailing lists or newsgroups) reasonably
calculated to inform those who received the Covered Code that new knowledge calculated to inform those who received the Covered Code that new knowledge
has been obtained. has been obtained.
<P><B>(b) Contributor APIs</B>. <BR>If Contributor's Modifications include <P><B>(b) Contributor APIs</B>. <BR>If Contributor's Modifications include
an application programming interface and Contributor has knowledge of patent an application programming interface and Contributor has knowledge of patent
licenses which are reasonably necessary to implement that API, Contributor licenses which are reasonably necessary to implement that API, Contributor
must also include this information in the LEGAL file. must also include this information in the LEGAL file.
<BR>&nbsp;</P></UL>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;</P></UL>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<B>(c)&nbsp;&nbsp;&nbsp; Representations.</B> <B>(c)&nbsp;&nbsp;&nbsp; Representations.</B>
<UL>Contributor represents that, except as disclosed pursuant to Section <UL>Contributor represents that, except as disclosed pursuant to Section
3.4(a) above, Contributor believes that Contributor's Modifications are 3.4(a) above, Contributor believes that Contributor's Modifications are
Contributor's original creation(s) and/or Contributor has sufficient rights Contributor's original creation(s) and/or Contributor has sufficient rights
to grant the rights conveyed by this License.</UL> to grant the rights conveyed by this License.
<P><BR><B>3.5. Required Notices.</B> <BR>You must duplicate the notice in </UL>
<B>Exhibit A</B> in each file of the Source Code.&nbsp; If it is not possible <P><BR><B>3.5. Required Notices.</B> <BR>You must duplicate the notice in
to put such notice in a particular Source Code file due to its structure, then <B>Exhibit A</B> in each file of the Source Code.&nbsp; If it is not possible
You must include such notice in a location (such as a relevant directory) to put such notice in a particular Source Code file due to its structure, then
where a user would be likely to look for such a notice.&nbsp; If You created You must include such notice in a location (such as a relevant directory)
one or more Modification(s) You may add your name as a Contributor to the where a user would be likely to look for such a notice.&nbsp; If You created
notice described in <B>Exhibit A</B>.&nbsp; You must also duplicate this one or more Modification(s) You may add your name as a Contributor to the
License in any documentation for the Source Code where You describe notice described in <B>Exhibit A</B>.&nbsp; You must also duplicate this
recipients' rights or ownership rights relating to Covered Code.&nbsp; You may License in any documentation for the Source Code where You describe
choose to offer, and to charge a fee for, warranty, support, indemnity or recipients' rights or ownership rights relating to Covered Code.&nbsp; You may
liability obligations to one or more recipients of Covered Code. However, You choose to offer, and to charge a fee for, warranty, support, indemnity or
may do so only on Your own behalf, and not on behalf of the Initial Developer liability obligations to one or more recipients of Covered Code. However, You
or any Contributor. You must make it absolutely clear than any such warranty, may do so only on Your own behalf, and not on behalf of the Initial Developer
support, indemnity or liability obligation is offered by You alone, and You or any Contributor. You must make it absolutely clear than any such warranty,
hereby agree to indemnify the Initial Developer and every Contributor for any support, indemnity or liability obligation is offered by You alone, and You
liability incurred by the Initial Developer or such Contributor as a result of hereby agree to indemnify the Initial Developer and every Contributor for any
warranty, support, indemnity or liability terms You offer. liability incurred by the Initial Developer or such Contributor as a result of
<P><B>3.6. Distribution of Executable Versions.</B> <BR>You may distribute warranty, support, indemnity or liability terms You offer.
Covered Code in Executable form only if the requirements of Section <P><B>3.6. Distribution of Executable Versions.</B> <BR>You may distribute
<B>3.1-3.5</B> have been met for that Covered Code, and if You include a Covered Code in Executable form only if the requirements of Section
notice stating that the Source Code version of the Covered Code is available <B>3.1-3.5</B> have been met for that Covered Code, and if You include a
under the terms of this License, including a description of how and where You notice stating that the Source Code version of the Covered Code is available
have fulfilled the obligations of Section <B>3.2</B>. The notice must be under the terms of this License, including a description of how and where You
conspicuously included in any notice in an Executable version, related have fulfilled the obligations of Section <B>3.2</B>. The notice must be
documentation or collateral in which You describe recipients' rights relating conspicuously included in any notice in an Executable version, related
to the Covered Code. You may distribute the Executable version of Covered Code documentation or collateral in which You describe recipients' rights relating
or ownership rights under a license of Your choice, which may contain terms to the Covered Code. You may distribute the Executable version of Covered Code
different from this License, provided that You are in compliance with the or ownership rights under a license of Your choice, which may contain terms
terms of this License and that the license for the Executable version does not different from this License, provided that You are in compliance with the
attempt to limit or alter the recipient's rights in the Source Code version terms of this License and that the license for the Executable version does not
from the rights set forth in this License. If You distribute the Executable attempt to limit or alter the recipient's rights in the Source Code version
version under a different license You must make it absolutely clear that any from the rights set forth in this License. If You distribute the Executable
terms which differ from this License are offered by You alone, not by the version under a different license You must make it absolutely clear that any
Initial Developer or any Contributor. You hereby agree to indemnify the terms which differ from this License are offered by You alone, not by the
Initial Developer and every Contributor for any liability incurred by the Initial Developer or any Contributor. You hereby agree to indemnify the
Initial Developer or such Contributor as a result of any such terms You offer. Initial Developer and every Contributor for any liability incurred by the
Initial Developer or such Contributor as a result of any such terms You offer.
<P><B>3.7. Larger Works.</B> <BR>You may create a Larger Work by combining <P><B>3.7. Larger Works.</B> <BR>You may create a Larger Work by combining
Covered Code with other code not governed by the terms of this License and Covered Code with other code not governed by the terms of this License and
distribute the Larger Work as a single product. In such a case, You must make distribute the Larger Work as a single product. In such a case, You must make
sure the requirements of this License are fulfilled for the Covered sure the requirements of this License are fulfilled for the Covered
Code.</P></UL><B>4. Inability to Comply Due to Statute or Regulation.</B> Code.</P></UL>
<B>4. Inability to Comply Due to Statute or Regulation.</B>
<UL>If it is impossible for You to comply with any of the terms of this <UL>If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Code due to statute, License with respect to some or all of the Covered Code due to statute,
judicial order, or regulation then You must: (a) comply with the terms of this judicial order, or regulation then You must: (a) comply with the terms of this
License to the maximum extent possible; and (b) describe the limitations and License to the maximum extent possible; and (b) describe the limitations and
the code they affect. Such description must be included in the LEGAL file the code they affect. Such description must be included in the LEGAL file
described in Section <B>3.4</B> and must be included with all distributions of described in Section <B>3.4</B> and must be included with all distributions of
the Source Code. Except to the extent prohibited by statute or regulation, the Source Code. Except to the extent prohibited by statute or regulation,
such description must be sufficiently detailed for a recipient of ordinary such description must be sufficiently detailed for a recipient of ordinary
skill to be able to understand it.</UL><B>5. Application of this License.</B> skill to be able to understand it.
</UL>
<B>5. Application of this License.</B>
<UL>This License applies to code to which the Initial Developer has attached <UL>This License applies to code to which the Initial Developer has attached
the notice in <B>Exhibit A</B> and to related Covered Code.</UL><B>6. Versions the notice in <B>Exhibit A</B> and to related Covered Code.
of the License.</B> </UL>
<B>6. Versions
of the License.</B>
<UL><B>6.1. New Versions</B>. <BR>Netscape Communications Corporation <UL><B>6.1. New Versions</B>. <BR>Netscape Communications Corporation
(''Netscape'') may publish revised and/or new versions of the License from (''Netscape'') may publish revised and/or new versions of the License from
time to time. Each version will be given a distinguishing version number. time to time. Each version will be given a distinguishing version number.
<P><B>6.2. Effect of New Versions</B>. <BR>Once Covered Code has been <P><B>6.2. Effect of New Versions</B>. <BR>Once Covered Code has been
published under a particular version of the License, You may always continue published under a particular version of the License, You may always continue
to use it under the terms of that version. You may also choose to use such to use it under the terms of that version. You may also choose to use such
Covered Code under the terms of any subsequent version of the License Covered Code under the terms of any subsequent version of the License
published by Netscape. No one other than Netscape has the right to modify the published by Netscape. No one other than Netscape has the right to modify the
terms applicable to Covered Code created under this License. terms applicable to Covered Code created under this License.
<P><B>6.3. Derivative Works</B>. <BR>If You create or use a modified version <P><B>6.3. Derivative Works</B>. <BR>If You create or use a modified version
of this License (which you may only do in order to apply it to code which is of this License (which you may only do in order to apply it to code which is
not already Covered Code governed by this License), You must (a) rename Your not already Covered Code governed by this License), You must (a) rename Your
license so that the phrases ''Mozilla'', ''MOZILLAPL'', ''MOZPL'', license so that the phrases ''Mozilla'', ''MOZILLAPL'', ''MOZPL'',
''Netscape'', "MPL", ''NPL'' or any confusingly similar phrase do not appear ''Netscape'', "MPL", ''NPL'' or any confusingly similar phrase do not appear
in your license (except to note that your license differs from this License) in your license (except to note that your license differs from this License)
and (b) otherwise make it clear that Your version of the license contains and (b) otherwise make it clear that Your version of the license contains
terms which differ from the Mozilla Public License and Netscape Public terms which differ from the Mozilla Public License and Netscape Public
License. (Filling in the name of the Initial Developer, Original Code or License. (Filling in the name of the Initial Developer, Original Code or
Contributor in the notice described in <B>Exhibit A</B> shall not of Contributor in the notice described in <B>Exhibit A</B> shall not of
themselves be deemed to be modifications of this License.)</P></UL><B>7. themselves be deemed to be modifications of this License.)</P></UL>
DISCLAIMER OF WARRANTY.</B> <B>7.
DISCLAIMER OF WARRANTY.</B>
<UL>COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS'' BASIS, WITHOUT <UL>COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS'' BASIS, WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE,
FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE
QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED
CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY
OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR
CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
DISCLAIMER.</UL><B>8. TERMINATION.</B> DISCLAIMER.
</UL>
<B>8. TERMINATION.</B>
<UL><B>8.1.&nbsp; </B>This License and the rights granted hereunder will <UL><B>8.1.&nbsp; </B>This License and the rights granted hereunder will
terminate automatically if You fail to comply with terms herein and fail to terminate automatically if You fail to comply with terms herein and fail to
cure such breach within 30 days of becoming aware of the breach. All cure such breach within 30 days of becoming aware of the breach. All
sublicenses to the Covered Code which are properly granted shall survive any sublicenses to the Covered Code which are properly granted shall survive any
termination of this License. Provisions which, by their nature, must remain in termination of this License. Provisions which, by their nature, must remain in
effect beyond the termination of this License shall survive. effect beyond the termination of this License shall survive.
<P><B>8.2.&nbsp; </B>If You initiate litigation by asserting a patent <P><B>8.2.&nbsp; </B>If You initiate litigation by asserting a patent
infringement claim (excluding declatory judgment actions) against Initial infringement claim (excluding declatory judgment actions) against Initial
Developer or a Contributor (the Initial Developer or Contributor against whom Developer or a Contributor (the Initial Developer or Contributor against whom
You file such action is referred to as "Participant")&nbsp; alleging that: You file such action is referred to as "Participant")&nbsp; alleging that:
<P><B>(a)&nbsp; </B>such Participant's Contributor Version directly or <P><B>(a)&nbsp; </B>such Participant's Contributor Version directly or
indirectly infringes any patent, then any and all rights granted by such indirectly infringes any patent, then any and all rights granted by such
Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon
60 days notice from Participant terminate prospectively, unless if within 60 60 days notice from Participant terminate prospectively, unless if within 60
days after receipt of notice You either: (i)&nbsp; agree in writing to pay days after receipt of notice You either: (i)&nbsp; agree in writing to pay
Participant a mutually agreeable reasonable royalty for Your past and future Participant a mutually agreeable reasonable royalty for Your past and future
use of Modifications made by such Participant, or (ii) withdraw Your use of Modifications made by such Participant, or (ii) withdraw Your
litigation claim with respect to the Contributor Version against such litigation claim with respect to the Contributor Version against such
Participant.&nbsp; If within 60 days of notice, a reasonable royalty and Participant.&nbsp; If within 60 days of notice, a reasonable royalty and
payment arrangement are not mutually agreed upon in writing by the parties or payment arrangement are not mutually agreed upon in writing by the parties or
the litigation claim is not withdrawn, the rights granted by Participant to the litigation claim is not withdrawn, the rights granted by Participant to
You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of
the 60 day notice period specified above. the 60 day notice period specified above.
<P><B>(b)</B>&nbsp; any software, hardware, or device, other than such <P><B>(b)</B>&nbsp; any software, hardware, or device, other than such
Participant's Contributor Version, directly or indirectly infringes any Participant's Contributor Version, directly or indirectly infringes any
patent, then any rights granted to You by such Participant under Sections patent, then any rights granted to You by such Participant under Sections
2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used,
sold, distributed, or had made, Modifications made by that Participant. sold, distributed, or had made, Modifications made by that Participant.
<P><B>8.3.&nbsp; </B>If You assert a patent infringement claim against <P><B>8.3.&nbsp; </B>If You assert a patent infringement claim against
Participant alleging that such Participant's Contributor Version directly or Participant alleging that such Participant's Contributor Version directly or
indirectly infringes any patent where such claim is resolved (such as by indirectly infringes any patent where such claim is resolved (such as by
license or settlement) prior to the initiation of patent infringement license or settlement) prior to the initiation of patent infringement
litigation, then the reasonable value of the licenses granted by such litigation, then the reasonable value of the licenses granted by such
Participant under Sections 2.1 or 2.2 shall be taken into account in Participant under Sections 2.1 or 2.2 shall be taken into account in
determining the amount or value of any payment or license. determining the amount or value of any payment or license.
<P><B>8.4.</B>&nbsp; In the event of termination under Sections 8.1 or 8.2 <P><B>8.4.</B>&nbsp; In the event of termination under Sections 8.1 or 8.2
above,&nbsp; all end user license agreements (excluding distributors and above,&nbsp; all end user license agreements (excluding distributors and
resellers) which have been validly granted by You or any distributor hereunder resellers) which have been validly granted by You or any distributor hereunder
prior to termination shall survive termination.</P></UL><B>9. LIMITATION OF prior to termination shall survive termination.</P></UL>
LIABILITY.</B> <B>9. LIMITATION OF
LIABILITY.</B>
<UL>UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING <UL>UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING
NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY
OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY
OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL,
INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR
MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH
PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS
LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR
LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND
LIMITATION MAY NOT APPLY TO YOU.</UL><B>10. U.S. GOVERNMENT END USERS.</B> LIMITATION MAY NOT APPLY TO YOU.
</UL>
<B>10. U.S. GOVERNMENT END USERS.</B>
<UL>The Covered Code is a ''commercial item,'' as that term is defined in 48 <UL>The Covered Code is a ''commercial item,'' as that term is defined in 48
C.F.R. 2.101 (Oct. 1995), consisting of ''commercial computer software'' and C.F.R. 2.101 (Oct. 1995), consisting of ''commercial computer software'' and
''commercial computer software documentation,'' as such terms are used in 48 ''commercial computer software documentation,'' as such terms are used in 48
C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R.
227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users
acquire Covered Code with only those rights set forth herein.</UL><B>11. acquire Covered Code with only those rights set forth herein.
MISCELLANEOUS.</B> </UL>
<B>11.
MISCELLANEOUS.</B>
<UL>This License represents the complete agreement concerning subject matter <UL>This License represents the complete agreement concerning subject matter
hereof. If any provision of this License is held to be unenforceable, such hereof. If any provision of this License is held to be unenforceable, such
provision shall be reformed only to the extent necessary to make it provision shall be reformed only to the extent necessary to make it
enforceable. This License shall be governed by California law provisions enforceable. This License shall be governed by California law provisions
(except to the extent applicable law, if any, provides otherwise), excluding (except to the extent applicable law, if any, provides otherwise), excluding
its conflict-of-law provisions. With respect to disputes in which at least one its conflict-of-law provisions. With respect to disputes in which at least one
party is a citizen of, or an entity chartered or registered to do business in party is a citizen of, or an entity chartered or registered to do business in
the United States of America, any litigation relating to this License shall be the United States of America, any litigation relating to this License shall be
subject to the jurisdiction of the Federal Courts of the Northern District of subject to the jurisdiction of the Federal Courts of the Northern District of
California, with venue lying in Santa Clara County, California, with the California, with venue lying in Santa Clara County, California, with the
losing party responsible for costs, including without limitation, court costs losing party responsible for costs, including without limitation, court costs
and reasonable attorneys' fees and expenses. The application of the United and reasonable attorneys' fees and expenses. The application of the United
Nations Convention on Contracts for the International Sale of Goods is Nations Convention on Contracts for the International Sale of Goods is
expressly excluded. Any law or regulation which provides that the language of expressly excluded. Any law or regulation which provides that the language of
a contract shall be construed against the drafter shall not apply to this a contract shall be construed against the drafter shall not apply to this
License.</UL><B>12. RESPONSIBILITY FOR CLAIMS.</B> License.
</UL>
<B>12. RESPONSIBILITY FOR CLAIMS.</B>
<UL>As between Initial Developer and the Contributors, each party is <UL>As between Initial Developer and the Contributors, each party is
responsible for claims and damages arising, directly or indirectly, out of its responsible for claims and damages arising, directly or indirectly, out of its
utilization of rights under this License and You agree to work with Initial utilization of rights under this License and You agree to work with Initial
Developer and Contributors to distribute such responsibility on an equitable Developer and Contributors to distribute such responsibility on an equitable
basis. Nothing herein is intended or shall be deemed to constitute any basis. Nothing herein is intended or shall be deemed to constitute any
admission of liability.</UL><B>13. MULTIPLE-LICENSED CODE.</B> admission of liability.
</UL>
<B>13. MULTIPLE-LICENSED CODE.</B>
<UL>Initial Developer may designate portions of the Covered Code as <UL>Initial Developer may designate portions of the Covered Code as
"Multiple-Licensed".&nbsp; "Multiple-Licensed" means that the Initial "Multiple-Licensed".&nbsp; "Multiple-Licensed" means that the Initial
Developer permits you to utilize portions of the Covered Code under Your Developer permits you to utilize portions of the Covered Code under Your
choice of the MPL or the alternative licenses, if any, specified by the choice of the MPL or the alternative licenses, if any, specified by the
Initial Developer in the file described in Exhibit A.</UL> Initial Developer in the file described in Exhibit A.
</UL>
<P><BR><B>EXHIBIT A -Mozilla Public License.</B> <P><BR><B>EXHIBIT A -Mozilla Public License.</B>
<UL>The contents of this file are subject to the Mozilla Public License <UL>The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in compliance Version 1.1 (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at with the License. You may obtain a copy of the License at
<BR>http://www.mozilla.org/MPL/ <BR>http://www.mozilla.org/MPL/
<P>Software distributed under the License is distributed on an "AS IS" basis, <P>Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the for the specific language governing rights and limitations under the
License. License.
<P>The Original Code is Javassist. <P>The Original Code is Javassist.
<P>The Initial Developer of the Original Code is Shigeru Chiba. <P>The Initial Developer of the Original Code is Shigeru Chiba.
Portions created by the Initial Developer are<BR>&nbsp; Portions created by the Initial Developer are<BR>&nbsp;
Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. Copyright (C) 1999- Shigeru Chiba. All Rights Reserved.
<P>Contributor(s): __Bill Burke, Jason T. Greene______________. <P>Contributor(s): __Bill Burke, Jason T. Greene______________.
<p>Alternatively, the contents of this software may be used under the <p>Alternatively, the contents of this software may be used under the
terms of the GNU Lesser General Public License Version 2.1 or later terms of the GNU Lesser General Public License Version 2.1 or later
(the "LGPL"), or the Apache License Version 2.0 (the "AL"), (the "LGPL"), or the Apache License Version 2.0 (the "AL"),
in which case the provisions of the LGPL or the AL are applicable in which case the provisions of the LGPL or the AL are applicable
instead of those above. If you wish to allow use of your version of instead of those above. If you wish to allow use of your version of
this software only under the terms of either the LGPL or the AL, and not to allow others to this software only under the terms of either the LGPL or the AL, and not to allow others to
use your version of this software under the terms of the MPL, indicate use your version of this software under the terms of the MPL, indicate
your decision by deleting the provisions above and replace them with your decision by deleting the provisions above and replace them with
the notice and other provisions required by the LGPL or the AL. If you do not the notice and other provisions required by the LGPL or the AL. If you do not
delete the provisions above, a recipient may use your version of this delete the provisions above, a recipient may use your version of this
software under the terms of any one of the MPL, the LGPL or the AL.</p> software under the terms of any one of the MPL, the LGPL or the AL.</p>
<p>If you obtain this software as part of JBoss, <p>If you obtain this software as part of JBoss,
the contents of this software may be used under only the terms of the LGPL. the contents of this software may be used under only the terms of the LGPL.
To use them under the MPL, you must obtain a separate package including only To use them under the MPL, you must obtain a separate package including only
Javassist but not the other part of JBoss.</p> Javassist but not the other part of JBoss.</p>
<p>All the contributors to the original source tree have agreed to the original <p>All the contributors to the original source tree have agreed to the original
license term described above.</p> license term described above.</p>
<P></P></UL> <P></P></UL>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,381 +1,407 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>Javassist License</TITLE> <TITLE>Javassist License</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1"> <META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<META content="MSHTML 5.50.4916.2300" name=GENERATOR></HEAD> <META content="MSHTML 5.50.4916.2300" name=GENERATOR>
</HEAD>
<BODY text=#000000 vLink=#551a8b aLink=#ff0000 link=#0000ee bgColor=#ffffff> <BODY aLink=#ff0000 bgColor=#ffffff link=#0000ee text=#000000 vLink=#551a8b>
<CENTER><B><FONT size=+2>MOZILLA PUBLIC LICENSE</FONT></B> <BR><B>Version <CENTER><B><FONT size=+2>MOZILLA PUBLIC LICENSE</FONT></B> <BR><B>Version
1.1</B> 1.1</B>
<P> <P>
<HR width="20%"> <HR width="20%">
</CENTER> </CENTER>
<P><B>1. Definitions.</B> <P><B>1. Definitions.</B>
<UL><B>1.0.1. "Commercial Use" </B>means distribution or otherwise making the <UL><B>1.0.1. "Commercial Use" </B>means distribution or otherwise making the
Covered Code available to a third party. Covered Code available to a third party.
<P><B>1.1. ''Contributor''</B> means each entity that creates or contributes <P><B>1.1. ''Contributor''</B> means each entity that creates or contributes
to the creation of Modifications. to the creation of Modifications.
<P><B>1.2. ''Contributor Version''</B> means the combination of the Original <P><B>1.2. ''Contributor Version''</B> means the combination of the Original
Code, prior Modifications used by a Contributor, and the Modifications made by Code, prior Modifications used by a Contributor, and the Modifications made by
that particular Contributor. that particular Contributor.
<P><B>1.3. ''Covered Code''</B> means the Original Code or Modifications or <P><B>1.3. ''Covered Code''</B> means the Original Code or Modifications or
the combination of the Original Code and Modifications, in each case including the combination of the Original Code and Modifications, in each case including
portions thereof<B>.</B> portions thereof<B>.</B>
<P><B>1.4. ''Electronic Distribution Mechanism''</B> means a mechanism <P><B>1.4. ''Electronic Distribution Mechanism''</B> means a mechanism
generally accepted in the software development community for the electronic generally accepted in the software development community for the electronic
transfer of data. transfer of data.
<P><B>1.5. ''Executable''</B> means Covered Code in any form other than Source <P><B>1.5. ''Executable''</B> means Covered Code in any form other than Source
Code. Code.
<P><B>1.6. ''Initial Developer''</B> means the individual or entity identified <P><B>1.6. ''Initial Developer''</B> means the individual or entity identified
as the Initial Developer in the Source Code notice required by <B>Exhibit as the Initial Developer in the Source Code notice required by <B>Exhibit
A</B>. A</B>.
<P><B>1.7. ''Larger Work''</B> means a work which combines Covered Code or <P><B>1.7. ''Larger Work''</B> means a work which combines Covered Code or
portions thereof with code not governed by the terms of this License. portions thereof with code not governed by the terms of this License.
<P><B>1.8. ''License''</B> means this document. <P><B>1.8. ''License''</B> means this document.
<P><B>1.8.1. "Licensable"</B> means having the right to grant, to the maximum <P><B>1.8.1. "Licensable"</B> means having the right to grant, to the maximum
extent possible, whether at the time of the initial grant or subsequently extent possible, whether at the time of the initial grant or subsequently
acquired, any and all of the rights conveyed herein. acquired, any and all of the rights conveyed herein.
<P><B>1.9. ''Modifications''</B> means any addition to or deletion from the <P><B>1.9. ''Modifications''</B> means any addition to or deletion from the
substance or structure of either the Original Code or any previous substance or structure of either the Original Code or any previous
Modifications. When Covered Code is released as a series of files, a Modifications. When Covered Code is released as a series of files, a
Modification is: Modification is:
<UL><B>A.</B> Any addition to or deletion from the contents of a file <UL><B>A.</B> Any addition to or deletion from the contents of a file
containing Original Code or previous Modifications. containing Original Code or previous Modifications.
<P><B>B.</B> Any new file that contains any part of the Original Code or <P><B>B.</B> Any new file that contains any part of the Original Code or
previous Modifications. <BR>&nbsp;</P></UL><B>1.10. ''Original Code''</B> previous Modifications. <BR>&nbsp;</P></UL>
means Source Code of computer software code which is described in the Source <B>1.10. ''Original Code''</B>
Code notice required by <B>Exhibit A</B> as Original Code, and which, at the means Source Code of computer software code which is described in the Source
time of its release under this License is not already Covered Code governed by Code notice required by <B>Exhibit A</B> as Original Code, and which, at the
this License. time of its release under this License is not already Covered Code governed by
<P><B>1.10.1. "Patent Claims"</B> means any patent claim(s), now owned or this License.
hereafter acquired, including without limitation,&nbsp; method, process, and <P><B>1.10.1. "Patent Claims"</B> means any patent claim(s), now owned or
apparatus claims, in any patent Licensable by grantor. hereafter acquired, including without limitation,&nbsp; method, process, and
<P><B>1.11. ''Source Code''</B> means the preferred form of the Covered Code apparatus claims, in any patent Licensable by grantor.
for making modifications to it, including all modules it contains, plus any <P><B>1.11. ''Source Code''</B> means the preferred form of the Covered Code
associated interface definition files, scripts used to control compilation and for making modifications to it, including all modules it contains, plus any
installation of an Executable, or source code differential comparisons against associated interface definition files, scripts used to control compilation and
either the Original Code or another well known, available Covered Code of the installation of an Executable, or source code differential comparisons against
Contributor's choice. The Source Code can be in a compressed or archival form, either the Original Code or another well known, available Covered Code of the
provided the appropriate decompression or de-archiving software is widely Contributor's choice. The Source Code can be in a compressed or archival form,
available for no charge. provided the appropriate decompression or de-archiving software is widely
<P><B>1.12. "You'' (or "Your")&nbsp;</B> means an individual or a legal entity available for no charge.
exercising rights under, and complying with all of the terms of, this License <P><B>1.12. "You'' (or "Your")&nbsp;</B> means an individual or a legal entity
or a future version of this License issued under Section 6.1. For legal exercising rights under, and complying with all of the terms of, this License
entities, "You'' includes any entity which controls, is controlled by, or is or a future version of this License issued under Section 6.1. For legal
under common control with You. For purposes of this definition, "control'' entities, "You'' includes any entity which controls, is controlled by, or is
means (a) the power, direct or indirect, to cause the direction or management under common control with You. For purposes of this definition, "control''
of such entity, whether by contract or otherwise, or (b) ownership of more means (a) the power, direct or indirect, to cause the direction or management
than fifty percent (50%) of the outstanding shares or beneficial ownership of of such entity, whether by contract or otherwise, or (b) ownership of more
such entity.</P></UL><B>2. Source Code License.</B> than fifty percent (50%) of the outstanding shares or beneficial ownership of
such entity.</P></UL>
<B>2. Source Code License.</B>
<UL><B>2.1. The Initial Developer Grant.</B> <BR>The Initial Developer hereby <UL><B>2.1. The Initial Developer Grant.</B> <BR>The Initial Developer hereby
grants You a world-wide, royalty-free, non-exclusive license, subject to third grants You a world-wide, royalty-free, non-exclusive license, subject to third
party intellectual property claims: party intellectual property claims:
<UL><B>(a)</B>&nbsp;<B> </B>under intellectual property rights (other than <UL><B>(a)</B>&nbsp;<B> </B>under intellectual property rights (other than
patent or trademark) Licensable by Initial Developer to use, reproduce, patent or trademark) Licensable by Initial Developer to use, reproduce,
modify, display, perform, sublicense and distribute the Original Code (or modify, display, perform, sublicense and distribute the Original Code (or
portions thereof) with or without Modifications, and/or as part of a Larger portions thereof) with or without Modifications, and/or as part of a Larger
Work; and Work; and
<P><B>(b)</B> under Patents Claims infringed by the making, using or selling <P><B>(b)</B> under Patents Claims infringed by the making, using or selling
of Original Code, to make, have made, use, practice, sell, and offer for of Original Code, to make, have made, use, practice, sell, and offer for
sale, and/or otherwise dispose of the Original Code (or portions thereof). sale, and/or otherwise dispose of the Original Code (or portions thereof).
<UL> <UL>
<UL></UL></UL><B>(c) </B>the licenses granted in this Section 2.1(a) and (b) <UL></UL>
are effective on the date Initial Developer first distributes Original Code </UL>
under the terms of this License. <B>(c) </B>the licenses granted in this Section 2.1(a) and (b)
<P><B>(d) </B>Notwithstanding Section 2.1(b) above, no patent license is are effective on the date Initial Developer first distributes Original Code
granted: 1) for code that You delete from the Original Code; 2) separate under the terms of this License.
from the Original Code;&nbsp; or 3) for infringements caused by: i) the <P><B>(d) </B>Notwithstanding Section 2.1(b) above, no patent license is
modification of the Original Code or ii) the combination of the Original granted: 1) for code that You delete from the Original Code; 2) separate
Code with other software or devices. <BR>&nbsp;</P></UL><B>2.2. Contributor from the Original Code;&nbsp; or 3) for infringements caused by: i) the
Grant.</B> <BR>Subject to third party intellectual property claims, each modification of the Original Code or ii) the combination of the Original
Contributor hereby grants You a world-wide, royalty-free, non-exclusive Code with other software or devices. <BR>&nbsp;</P></UL>
license <B>2.2. Contributor
<UL> <BR><B>(a)</B>&nbsp;<B> </B>under intellectual property rights (other Grant.</B> <BR>Subject to third party intellectual property claims, each
than patent or trademark) Licensable by Contributor, to use, reproduce, Contributor hereby grants You a world-wide, royalty-free, non-exclusive
modify, display, perform, sublicense and distribute the Modifications license
created by such Contributor (or portions thereof) either on an unmodified <UL><BR><B>(a)</B>&nbsp;<B> </B>under intellectual property rights (other
basis, with other Modifications, as Covered Code and/or as part of a Larger than patent or trademark) Licensable by Contributor, to use, reproduce,
Work; and modify, display, perform, sublicense and distribute the Modifications
<P><B>(b)</B> under Patent Claims infringed by the making, using, or selling created by such Contributor (or portions thereof) either on an unmodified
of&nbsp; Modifications made by that Contributor either alone and/or in<FONT basis, with other Modifications, as Covered Code and/or as part of a Larger
color=#000000> combination with its Contributor Version (or portions of such Work; and
combination), to make, use, sell, offer for sale, have made, and/or <P><B>(b)</B> under Patent Claims infringed by the making, using, or selling
otherwise dispose of: 1) Modifications made by that Contributor (or portions of&nbsp; Modifications made by that Contributor either alone and/or in<FONT
thereof); and 2) the combination of&nbsp; Modifications made by that color=#000000> combination with its Contributor Version (or portions of such
Contributor with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or
combination).</FONT> otherwise dispose of: 1) Modifications made by that Contributor (or portions
<P><B>(c) </B>the licenses granted in Sections 2.2(a) and 2.2(b) are thereof); and 2) the combination of&nbsp; Modifications made by that
effective on the date Contributor first makes Commercial Use of the Covered Contributor with its Contributor Version (or portions of such
Code. combination).</FONT>
<P><B>(d)&nbsp;</B>&nbsp;&nbsp; Notwithstanding Section 2.2(b) above, no <P><B>(c) </B>the licenses granted in Sections 2.2(a) and 2.2(b) are
patent license is granted: 1) for any code that Contributor has deleted from effective on the date Contributor first makes Commercial Use of the Covered
the Contributor Version; 2)&nbsp; separate from the Contributor Code.
Version;&nbsp; 3)&nbsp; for infringements caused by: i) third party <P><B>(d)&nbsp;</B>&nbsp;&nbsp; Notwithstanding Section 2.2(b) above, no
modifications of Contributor Version or ii)&nbsp; the combination of patent license is granted: 1) for any code that Contributor has deleted from
Modifications made by that Contributor with other software&nbsp; (except as the Contributor Version; 2)&nbsp; separate from the Contributor
part of the Contributor Version) or other devices; or 4) under Patent Claims Version;&nbsp; 3)&nbsp; for infringements caused by: i) third party
infringed by Covered Code in the absence of Modifications made by that modifications of Contributor Version or ii)&nbsp; the combination of
Contributor.</P></UL></UL> Modifications made by that Contributor with other software&nbsp; (except as
part of the Contributor Version) or other devices; or 4) under Patent Claims
infringed by Covered Code in the absence of Modifications made by that
Contributor.</P></UL>
</UL>
<P><BR><B>3. Distribution Obligations.</B> <P><BR><B>3. Distribution Obligations.</B>
<UL><B>3.1. Application of License.</B> <BR>The Modifications which You create <UL><B>3.1. Application of License.</B> <BR>The Modifications which You create
or to which You contribute are governed by the terms of this License, or to which You contribute are governed by the terms of this License,
including without limitation Section <B>2.2</B>. The Source Code version of including without limitation Section <B>2.2</B>. The Source Code version of
Covered Code may be distributed only under the terms of this License or a Covered Code may be distributed only under the terms of this License or a
future version of this License released under Section <B>6.1</B>, and You must future version of this License released under Section <B>6.1</B>, and You must
include a copy of this License with every copy of the Source Code You include a copy of this License with every copy of the Source Code You
distribute. You may not offer or impose any terms on any Source Code version distribute. You may not offer or impose any terms on any Source Code version
that alters or restricts the applicable version of this License or the that alters or restricts the applicable version of this License or the
recipients' rights hereunder. However, You may include an additional document recipients' rights hereunder. However, You may include an additional document
offering the additional rights described in Section <B>3.5</B>. offering the additional rights described in Section <B>3.5</B>.
<P><B>3.2. Availability of Source Code.</B> <BR>Any Modification which You <P><B>3.2. Availability of Source Code.</B> <BR>Any Modification which You
create or to which You contribute must be made available in Source Code form create or to which You contribute must be made available in Source Code form
under the terms of this License either on the same media as an Executable under the terms of this License either on the same media as an Executable
version or via an accepted Electronic Distribution Mechanism to anyone to whom version or via an accepted Electronic Distribution Mechanism to anyone to whom
you made an Executable version available; and if made available via Electronic you made an Executable version available; and if made available via Electronic
Distribution Mechanism, must remain available for at least twelve (12) months Distribution Mechanism, must remain available for at least twelve (12) months
after the date it initially became available, or at least six (6) months after after the date it initially became available, or at least six (6) months after
a subsequent version of that particular Modification has been made available a subsequent version of that particular Modification has been made available
to such recipients. You are responsible for ensuring that the Source Code to such recipients. You are responsible for ensuring that the Source Code
version remains available even if the Electronic Distribution Mechanism is version remains available even if the Electronic Distribution Mechanism is
maintained by a third party. maintained by a third party.
<P><B>3.3. Description of Modifications.</B> <BR>You must cause all Covered <P><B>3.3. Description of Modifications.</B> <BR>You must cause all Covered
Code to which You contribute to contain a file documenting the changes You Code to which You contribute to contain a file documenting the changes You
made to create that Covered Code and the date of any change. You must include made to create that Covered Code and the date of any change. You must include
a prominent statement that the Modification is derived, directly or a prominent statement that the Modification is derived, directly or
indirectly, from Original Code provided by the Initial Developer and including indirectly, from Original Code provided by the Initial Developer and including
the name of the Initial Developer in (a) the Source Code, and (b) in any the name of the Initial Developer in (a) the Source Code, and (b) in any
notice in an Executable version or related documentation in which You describe notice in an Executable version or related documentation in which You describe
the origin or ownership of the Covered Code. the origin or ownership of the Covered Code.
<P><B>3.4. Intellectual Property Matters</B> <P><B>3.4. Intellectual Property Matters</B>
<UL><B>(a) Third Party Claims</B>. <BR>If Contributor has knowledge that a <UL><B>(a) Third Party Claims</B>. <BR>If Contributor has knowledge that a
license under a third party's intellectual property rights is required to license under a third party's intellectual property rights is required to
exercise the rights granted by such Contributor under Sections 2.1 or 2.2, exercise the rights granted by such Contributor under Sections 2.1 or 2.2,
Contributor must include a text file with the Source Code distribution Contributor must include a text file with the Source Code distribution
titled "LEGAL'' which describes the claim and the party making the claim in titled "LEGAL'' which describes the claim and the party making the claim in
sufficient detail that a recipient will know whom to contact. If Contributor sufficient detail that a recipient will know whom to contact. If Contributor
obtains such knowledge after the Modification is made available as described obtains such knowledge after the Modification is made available as described
in Section 3.2, Contributor shall promptly modify the LEGAL file in all in Section 3.2, Contributor shall promptly modify the LEGAL file in all
copies Contributor makes available thereafter and shall take other steps copies Contributor makes available thereafter and shall take other steps
(such as notifying appropriate mailing lists or newsgroups) reasonably (such as notifying appropriate mailing lists or newsgroups) reasonably
calculated to inform those who received the Covered Code that new knowledge calculated to inform those who received the Covered Code that new knowledge
has been obtained. has been obtained.
<P><B>(b) Contributor APIs</B>. <BR>If Contributor's Modifications include <P><B>(b) Contributor APIs</B>. <BR>If Contributor's Modifications include
an application programming interface and Contributor has knowledge of patent an application programming interface and Contributor has knowledge of patent
licenses which are reasonably necessary to implement that API, Contributor licenses which are reasonably necessary to implement that API, Contributor
must also include this information in the LEGAL file. must also include this information in the LEGAL file.
<BR>&nbsp;</P></UL>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;</P></UL>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<B>(c)&nbsp;&nbsp;&nbsp; Representations.</B> <B>(c)&nbsp;&nbsp;&nbsp; Representations.</B>
<UL>Contributor represents that, except as disclosed pursuant to Section <UL>Contributor represents that, except as disclosed pursuant to Section
3.4(a) above, Contributor believes that Contributor's Modifications are 3.4(a) above, Contributor believes that Contributor's Modifications are
Contributor's original creation(s) and/or Contributor has sufficient rights Contributor's original creation(s) and/or Contributor has sufficient rights
to grant the rights conveyed by this License.</UL> to grant the rights conveyed by this License.
<P><BR><B>3.5. Required Notices.</B> <BR>You must duplicate the notice in </UL>
<B>Exhibit A</B> in each file of the Source Code.&nbsp; If it is not possible <P><BR><B>3.5. Required Notices.</B> <BR>You must duplicate the notice in
to put such notice in a particular Source Code file due to its structure, then <B>Exhibit A</B> in each file of the Source Code.&nbsp; If it is not possible
You must include such notice in a location (such as a relevant directory) to put such notice in a particular Source Code file due to its structure, then
where a user would be likely to look for such a notice.&nbsp; If You created You must include such notice in a location (such as a relevant directory)
one or more Modification(s) You may add your name as a Contributor to the where a user would be likely to look for such a notice.&nbsp; If You created
notice described in <B>Exhibit A</B>.&nbsp; You must also duplicate this one or more Modification(s) You may add your name as a Contributor to the
License in any documentation for the Source Code where You describe notice described in <B>Exhibit A</B>.&nbsp; You must also duplicate this
recipients' rights or ownership rights relating to Covered Code.&nbsp; You may License in any documentation for the Source Code where You describe
choose to offer, and to charge a fee for, warranty, support, indemnity or recipients' rights or ownership rights relating to Covered Code.&nbsp; You may
liability obligations to one or more recipients of Covered Code. However, You choose to offer, and to charge a fee for, warranty, support, indemnity or
may do so only on Your own behalf, and not on behalf of the Initial Developer liability obligations to one or more recipients of Covered Code. However, You
or any Contributor. You must make it absolutely clear than any such warranty, may do so only on Your own behalf, and not on behalf of the Initial Developer
support, indemnity or liability obligation is offered by You alone, and You or any Contributor. You must make it absolutely clear than any such warranty,
hereby agree to indemnify the Initial Developer and every Contributor for any support, indemnity or liability obligation is offered by You alone, and You
liability incurred by the Initial Developer or such Contributor as a result of hereby agree to indemnify the Initial Developer and every Contributor for any
warranty, support, indemnity or liability terms You offer. liability incurred by the Initial Developer or such Contributor as a result of
<P><B>3.6. Distribution of Executable Versions.</B> <BR>You may distribute warranty, support, indemnity or liability terms You offer.
Covered Code in Executable form only if the requirements of Section <P><B>3.6. Distribution of Executable Versions.</B> <BR>You may distribute
<B>3.1-3.5</B> have been met for that Covered Code, and if You include a Covered Code in Executable form only if the requirements of Section
notice stating that the Source Code version of the Covered Code is available <B>3.1-3.5</B> have been met for that Covered Code, and if You include a
under the terms of this License, including a description of how and where You notice stating that the Source Code version of the Covered Code is available
have fulfilled the obligations of Section <B>3.2</B>. The notice must be under the terms of this License, including a description of how and where You
conspicuously included in any notice in an Executable version, related have fulfilled the obligations of Section <B>3.2</B>. The notice must be
documentation or collateral in which You describe recipients' rights relating conspicuously included in any notice in an Executable version, related
to the Covered Code. You may distribute the Executable version of Covered Code documentation or collateral in which You describe recipients' rights relating
or ownership rights under a license of Your choice, which may contain terms to the Covered Code. You may distribute the Executable version of Covered Code
different from this License, provided that You are in compliance with the or ownership rights under a license of Your choice, which may contain terms
terms of this License and that the license for the Executable version does not different from this License, provided that You are in compliance with the
attempt to limit or alter the recipient's rights in the Source Code version terms of this License and that the license for the Executable version does not
from the rights set forth in this License. If You distribute the Executable attempt to limit or alter the recipient's rights in the Source Code version
version under a different license You must make it absolutely clear that any from the rights set forth in this License. If You distribute the Executable
terms which differ from this License are offered by You alone, not by the version under a different license You must make it absolutely clear that any
Initial Developer or any Contributor. You hereby agree to indemnify the terms which differ from this License are offered by You alone, not by the
Initial Developer and every Contributor for any liability incurred by the Initial Developer or any Contributor. You hereby agree to indemnify the
Initial Developer or such Contributor as a result of any such terms You offer. Initial Developer and every Contributor for any liability incurred by the
Initial Developer or such Contributor as a result of any such terms You offer.
<P><B>3.7. Larger Works.</B> <BR>You may create a Larger Work by combining <P><B>3.7. Larger Works.</B> <BR>You may create a Larger Work by combining
Covered Code with other code not governed by the terms of this License and Covered Code with other code not governed by the terms of this License and
distribute the Larger Work as a single product. In such a case, You must make distribute the Larger Work as a single product. In such a case, You must make
sure the requirements of this License are fulfilled for the Covered sure the requirements of this License are fulfilled for the Covered
Code.</P></UL><B>4. Inability to Comply Due to Statute or Regulation.</B> Code.</P></UL>
<B>4. Inability to Comply Due to Statute or Regulation.</B>
<UL>If it is impossible for You to comply with any of the terms of this <UL>If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Code due to statute, License with respect to some or all of the Covered Code due to statute,
judicial order, or regulation then You must: (a) comply with the terms of this judicial order, or regulation then You must: (a) comply with the terms of this
License to the maximum extent possible; and (b) describe the limitations and License to the maximum extent possible; and (b) describe the limitations and
the code they affect. Such description must be included in the LEGAL file the code they affect. Such description must be included in the LEGAL file
described in Section <B>3.4</B> and must be included with all distributions of described in Section <B>3.4</B> and must be included with all distributions of
the Source Code. Except to the extent prohibited by statute or regulation, the Source Code. Except to the extent prohibited by statute or regulation,
such description must be sufficiently detailed for a recipient of ordinary such description must be sufficiently detailed for a recipient of ordinary
skill to be able to understand it.</UL><B>5. Application of this License.</B> skill to be able to understand it.
</UL>
<B>5. Application of this License.</B>
<UL>This License applies to code to which the Initial Developer has attached <UL>This License applies to code to which the Initial Developer has attached
the notice in <B>Exhibit A</B> and to related Covered Code.</UL><B>6. Versions the notice in <B>Exhibit A</B> and to related Covered Code.
of the License.</B> </UL>
<B>6. Versions
of the License.</B>
<UL><B>6.1. New Versions</B>. <BR>Netscape Communications Corporation <UL><B>6.1. New Versions</B>. <BR>Netscape Communications Corporation
(''Netscape'') may publish revised and/or new versions of the License from (''Netscape'') may publish revised and/or new versions of the License from
time to time. Each version will be given a distinguishing version number. time to time. Each version will be given a distinguishing version number.
<P><B>6.2. Effect of New Versions</B>. <BR>Once Covered Code has been <P><B>6.2. Effect of New Versions</B>. <BR>Once Covered Code has been
published under a particular version of the License, You may always continue published under a particular version of the License, You may always continue
to use it under the terms of that version. You may also choose to use such to use it under the terms of that version. You may also choose to use such
Covered Code under the terms of any subsequent version of the License Covered Code under the terms of any subsequent version of the License
published by Netscape. No one other than Netscape has the right to modify the published by Netscape. No one other than Netscape has the right to modify the
terms applicable to Covered Code created under this License. terms applicable to Covered Code created under this License.
<P><B>6.3. Derivative Works</B>. <BR>If You create or use a modified version <P><B>6.3. Derivative Works</B>. <BR>If You create or use a modified version
of this License (which you may only do in order to apply it to code which is of this License (which you may only do in order to apply it to code which is
not already Covered Code governed by this License), You must (a) rename Your not already Covered Code governed by this License), You must (a) rename Your
license so that the phrases ''Mozilla'', ''MOZILLAPL'', ''MOZPL'', license so that the phrases ''Mozilla'', ''MOZILLAPL'', ''MOZPL'',
''Netscape'', "MPL", ''NPL'' or any confusingly similar phrase do not appear ''Netscape'', "MPL", ''NPL'' or any confusingly similar phrase do not appear
in your license (except to note that your license differs from this License) in your license (except to note that your license differs from this License)
and (b) otherwise make it clear that Your version of the license contains and (b) otherwise make it clear that Your version of the license contains
terms which differ from the Mozilla Public License and Netscape Public terms which differ from the Mozilla Public License and Netscape Public
License. (Filling in the name of the Initial Developer, Original Code or License. (Filling in the name of the Initial Developer, Original Code or
Contributor in the notice described in <B>Exhibit A</B> shall not of Contributor in the notice described in <B>Exhibit A</B> shall not of
themselves be deemed to be modifications of this License.)</P></UL><B>7. themselves be deemed to be modifications of this License.)</P></UL>
DISCLAIMER OF WARRANTY.</B> <B>7.
DISCLAIMER OF WARRANTY.</B>
<UL>COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS'' BASIS, WITHOUT <UL>COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS'' BASIS, WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE,
FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE
QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED
CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY
OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR
CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
DISCLAIMER.</UL><B>8. TERMINATION.</B> DISCLAIMER.
</UL>
<B>8. TERMINATION.</B>
<UL><B>8.1.&nbsp; </B>This License and the rights granted hereunder will <UL><B>8.1.&nbsp; </B>This License and the rights granted hereunder will
terminate automatically if You fail to comply with terms herein and fail to terminate automatically if You fail to comply with terms herein and fail to
cure such breach within 30 days of becoming aware of the breach. All cure such breach within 30 days of becoming aware of the breach. All
sublicenses to the Covered Code which are properly granted shall survive any sublicenses to the Covered Code which are properly granted shall survive any
termination of this License. Provisions which, by their nature, must remain in termination of this License. Provisions which, by their nature, must remain in
effect beyond the termination of this License shall survive. effect beyond the termination of this License shall survive.
<P><B>8.2.&nbsp; </B>If You initiate litigation by asserting a patent <P><B>8.2.&nbsp; </B>If You initiate litigation by asserting a patent
infringement claim (excluding declatory judgment actions) against Initial infringement claim (excluding declatory judgment actions) against Initial
Developer or a Contributor (the Initial Developer or Contributor against whom Developer or a Contributor (the Initial Developer or Contributor against whom
You file such action is referred to as "Participant")&nbsp; alleging that: You file such action is referred to as "Participant")&nbsp; alleging that:
<P><B>(a)&nbsp; </B>such Participant's Contributor Version directly or <P><B>(a)&nbsp; </B>such Participant's Contributor Version directly or
indirectly infringes any patent, then any and all rights granted by such indirectly infringes any patent, then any and all rights granted by such
Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon
60 days notice from Participant terminate prospectively, unless if within 60 60 days notice from Participant terminate prospectively, unless if within 60
days after receipt of notice You either: (i)&nbsp; agree in writing to pay days after receipt of notice You either: (i)&nbsp; agree in writing to pay
Participant a mutually agreeable reasonable royalty for Your past and future Participant a mutually agreeable reasonable royalty for Your past and future
use of Modifications made by such Participant, or (ii) withdraw Your use of Modifications made by such Participant, or (ii) withdraw Your
litigation claim with respect to the Contributor Version against such litigation claim with respect to the Contributor Version against such
Participant.&nbsp; If within 60 days of notice, a reasonable royalty and Participant.&nbsp; If within 60 days of notice, a reasonable royalty and
payment arrangement are not mutually agreed upon in writing by the parties or payment arrangement are not mutually agreed upon in writing by the parties or
the litigation claim is not withdrawn, the rights granted by Participant to the litigation claim is not withdrawn, the rights granted by Participant to
You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of
the 60 day notice period specified above. the 60 day notice period specified above.
<P><B>(b)</B>&nbsp; any software, hardware, or device, other than such <P><B>(b)</B>&nbsp; any software, hardware, or device, other than such
Participant's Contributor Version, directly or indirectly infringes any Participant's Contributor Version, directly or indirectly infringes any
patent, then any rights granted to You by such Participant under Sections patent, then any rights granted to You by such Participant under Sections
2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used,
sold, distributed, or had made, Modifications made by that Participant. sold, distributed, or had made, Modifications made by that Participant.
<P><B>8.3.&nbsp; </B>If You assert a patent infringement claim against <P><B>8.3.&nbsp; </B>If You assert a patent infringement claim against
Participant alleging that such Participant's Contributor Version directly or Participant alleging that such Participant's Contributor Version directly or
indirectly infringes any patent where such claim is resolved (such as by indirectly infringes any patent where such claim is resolved (such as by
license or settlement) prior to the initiation of patent infringement license or settlement) prior to the initiation of patent infringement
litigation, then the reasonable value of the licenses granted by such litigation, then the reasonable value of the licenses granted by such
Participant under Sections 2.1 or 2.2 shall be taken into account in Participant under Sections 2.1 or 2.2 shall be taken into account in
determining the amount or value of any payment or license. determining the amount or value of any payment or license.
<P><B>8.4.</B>&nbsp; In the event of termination under Sections 8.1 or 8.2 <P><B>8.4.</B>&nbsp; In the event of termination under Sections 8.1 or 8.2
above,&nbsp; all end user license agreements (excluding distributors and above,&nbsp; all end user license agreements (excluding distributors and
resellers) which have been validly granted by You or any distributor hereunder resellers) which have been validly granted by You or any distributor hereunder
prior to termination shall survive termination.</P></UL><B>9. LIMITATION OF prior to termination shall survive termination.</P></UL>
LIABILITY.</B> <B>9. LIMITATION OF
LIABILITY.</B>
<UL>UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING <UL>UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING
NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY
OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY
OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL,
INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR
MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH
PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS
LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR
LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND
LIMITATION MAY NOT APPLY TO YOU.</UL><B>10. U.S. GOVERNMENT END USERS.</B> LIMITATION MAY NOT APPLY TO YOU.
</UL>
<B>10. U.S. GOVERNMENT END USERS.</B>
<UL>The Covered Code is a ''commercial item,'' as that term is defined in 48 <UL>The Covered Code is a ''commercial item,'' as that term is defined in 48
C.F.R. 2.101 (Oct. 1995), consisting of ''commercial computer software'' and C.F.R. 2.101 (Oct. 1995), consisting of ''commercial computer software'' and
''commercial computer software documentation,'' as such terms are used in 48 ''commercial computer software documentation,'' as such terms are used in 48
C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R.
227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users
acquire Covered Code with only those rights set forth herein.</UL><B>11. acquire Covered Code with only those rights set forth herein.
MISCELLANEOUS.</B> </UL>
<B>11.
MISCELLANEOUS.</B>
<UL>This License represents the complete agreement concerning subject matter <UL>This License represents the complete agreement concerning subject matter
hereof. If any provision of this License is held to be unenforceable, such hereof. If any provision of this License is held to be unenforceable, such
provision shall be reformed only to the extent necessary to make it provision shall be reformed only to the extent necessary to make it
enforceable. This License shall be governed by California law provisions enforceable. This License shall be governed by California law provisions
(except to the extent applicable law, if any, provides otherwise), excluding (except to the extent applicable law, if any, provides otherwise), excluding
its conflict-of-law provisions. With respect to disputes in which at least one its conflict-of-law provisions. With respect to disputes in which at least one
party is a citizen of, or an entity chartered or registered to do business in party is a citizen of, or an entity chartered or registered to do business in
the United States of America, any litigation relating to this License shall be the United States of America, any litigation relating to this License shall be
subject to the jurisdiction of the Federal Courts of the Northern District of subject to the jurisdiction of the Federal Courts of the Northern District of
California, with venue lying in Santa Clara County, California, with the California, with venue lying in Santa Clara County, California, with the
losing party responsible for costs, including without limitation, court costs losing party responsible for costs, including without limitation, court costs
and reasonable attorneys' fees and expenses. The application of the United and reasonable attorneys' fees and expenses. The application of the United
Nations Convention on Contracts for the International Sale of Goods is Nations Convention on Contracts for the International Sale of Goods is
expressly excluded. Any law or regulation which provides that the language of expressly excluded. Any law or regulation which provides that the language of
a contract shall be construed against the drafter shall not apply to this a contract shall be construed against the drafter shall not apply to this
License.</UL><B>12. RESPONSIBILITY FOR CLAIMS.</B> License.
</UL>
<B>12. RESPONSIBILITY FOR CLAIMS.</B>
<UL>As between Initial Developer and the Contributors, each party is <UL>As between Initial Developer and the Contributors, each party is
responsible for claims and damages arising, directly or indirectly, out of its responsible for claims and damages arising, directly or indirectly, out of its
utilization of rights under this License and You agree to work with Initial utilization of rights under this License and You agree to work with Initial
Developer and Contributors to distribute such responsibility on an equitable Developer and Contributors to distribute such responsibility on an equitable
basis. Nothing herein is intended or shall be deemed to constitute any basis. Nothing herein is intended or shall be deemed to constitute any
admission of liability.</UL><B>13. MULTIPLE-LICENSED CODE.</B> admission of liability.
</UL>
<B>13. MULTIPLE-LICENSED CODE.</B>
<UL>Initial Developer may designate portions of the Covered Code as <UL>Initial Developer may designate portions of the Covered Code as
"Multiple-Licensed".&nbsp; "Multiple-Licensed" means that the Initial "Multiple-Licensed".&nbsp; "Multiple-Licensed" means that the Initial
Developer permits you to utilize portions of the Covered Code under Your Developer permits you to utilize portions of the Covered Code under Your
choice of the MPL or the alternative licenses, if any, specified by the choice of the MPL or the alternative licenses, if any, specified by the
Initial Developer in the file described in Exhibit A.</UL> Initial Developer in the file described in Exhibit A.
</UL>
<P><BR><B>EXHIBIT A -Mozilla Public License.</B> <P><BR><B>EXHIBIT A -Mozilla Public License.</B>
<UL>The contents of this file are subject to the Mozilla Public License <UL>The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in compliance Version 1.1 (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at with the License. You may obtain a copy of the License at
<BR>http://www.mozilla.org/MPL/ <BR>http://www.mozilla.org/MPL/
<P>Software distributed under the License is distributed on an "AS IS" basis, <P>Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the for the specific language governing rights and limitations under the
License. License.
<P>The Original Code is Javassist. <P>The Original Code is Javassist.
<P>The Initial Developer of the Original Code is Shigeru Chiba. <P>The Initial Developer of the Original Code is Shigeru Chiba.
Portions created by the Initial Developer are<BR>&nbsp; Portions created by the Initial Developer are<BR>&nbsp;
Copyright (C) 1999- Shigeru Chiba. All Rights Reserved. Copyright (C) 1999- Shigeru Chiba. All Rights Reserved.
<P>Contributor(s): __Bill Burke, Jason T. Greene______________. <P>Contributor(s): __Bill Burke, Jason T. Greene______________.
<p>Alternatively, the contents of this software may be used under the <p>Alternatively, the contents of this software may be used under the
terms of the GNU Lesser General Public License Version 2.1 or later terms of the GNU Lesser General Public License Version 2.1 or later
(the "LGPL"), or the Apache License Version 2.0 (the "AL"), (the "LGPL"), or the Apache License Version 2.0 (the "AL"),
in which case the provisions of the LGPL or the AL are applicable in which case the provisions of the LGPL or the AL are applicable
instead of those above. If you wish to allow use of your version of instead of those above. If you wish to allow use of your version of
this software only under the terms of either the LGPL or the AL, and not to allow others to this software only under the terms of either the LGPL or the AL, and not to allow others to
use your version of this software under the terms of the MPL, indicate use your version of this software under the terms of the MPL, indicate
your decision by deleting the provisions above and replace them with your decision by deleting the provisions above and replace them with
the notice and other provisions required by the LGPL or the AL. If you do not the notice and other provisions required by the LGPL or the AL. If you do not
delete the provisions above, a recipient may use your version of this delete the provisions above, a recipient may use your version of this
software under the terms of any one of the MPL, the LGPL or the AL.</p> software under the terms of any one of the MPL, the LGPL or the AL.</p>
<p>If you obtain this software as part of JBoss, <p>If you obtain this software as part of JBoss,
the contents of this software may be used under only the terms of the LGPL. the contents of this software may be used under only the terms of the LGPL.
To use them under the MPL, you must obtain a separate package including only To use them under the MPL, you must obtain a separate package including only
Javassist but not the other part of JBoss.</p> Javassist but not the other part of JBoss.</p>
<p>All the contributors to the original source tree have agreed to the original <p>All the contributors to the original source tree have agreed to the original
license term described above.</p> license term described above.</p>
<P></P></UL> <P></P></UL>
</BODY> </BODY>
</HTML> </HTML>