diff --git a/asterix-yarn/src/main/licenses/LICENSE b/asterix-yarn/src/main/licenses/LICENSE
index 79fa05a..cbc9c9f 100644
--- a/asterix-yarn/src/main/licenses/LICENSE
+++ b/asterix-yarn/src/main/licenses/LICENSE
@@ -209,278 +209,6 @@
    subcomponents is subject to the terms and condition of the following
    licenses.
 
-   Components under Apache License 2.0 are as follows:
-
-     - Apache Derby Database Engine and Embedded JDBC Driver (http://db.apache.org/derby/derby/)
-       repo/derby-10.10.1.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - JDO API (http://db.apache.org/jdo)
-       repo/jdo-api-3.0.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Rome HTTP Fetcher
-       repo/rome-fetcher-1.0.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - An open source Java toolkit for Amazon S3 (http://jets3t.s3.amazonaws.com/index.html)
-       repo/jets3t-0.6.1 in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - The Netty Project (http://www.jboss.org/netty/)
-       repo/netty-3.2.2.Final.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - The Netty Project (http://netty.io/)
-       repo/netty-3.6.2.Final.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - HttpClient (http://jakarta.apache.org/commons/httpclient/)
-       repo/commons-httpclient-3.0.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/commons-httpclient-3.0.1.jar
-     - HttpClient (http://hc.apache.org/httpcomponents-client)
-       repo/httpclient-4.3.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/httpclient-4.3.jar
-     - HttpCore (http://hc.apache.org/httpcomponents-core-ga)
-       repo/httpcore-4.3.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/httpcore-4.3.jar
-     - twitter4j-core (http://twitter4j.org/)
-       repo/twitter4j-core-4.0.3.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - twitter4j-stream (http://twitter4j.org/)
-       repo/twitter4j-stream-4.0.3.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: Continuation (http://www.eclipse.org/jetty/jetty-continuation)
-       repo/jetty-continuation-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: Http Utility (http://www.eclipse.org/jetty/jetty-http)
-       repo/jetty-http-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: IO Utility (http://www.eclipse.org/jetty/jetty-io)
-       repo/jetty-io-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: Security (http://www.eclipse.org/jetty/jetty-security)
-       repo/jetty-security-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: Server Core (http://www.eclipse.org/jetty)
-       repo/jetty-server-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: Servlet Handling (http://www.eclipse.org/jetty/jetty-servlet)
-       repo/jetty-servlet-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: Utilities (http://www.eclipse.org/jetty/jetty-util)
-       repo/jetty-util-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: Webapp Application Support (http://www.eclipse.org/jetty/jetty-webapp)
-       repo/jetty-webapp-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty :: XML utilities (http://www.eclipse.org/jetty/jetty-xml)
-       repo/jetty-xml-8.0.0.RC0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Servlet API (http://www.eclipse.org/jetty/jetty-parent/servlet-api)
-       repo/servlet-api-3.0.20100224.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - BoneCP :: Core Library (http://jolbox.com/bonecp)
-       repo/bonecp-0.8.0.RELEASE.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - FindBugs-jsr305 (http://findbugs.sourceforge.net/)
-       repo/jsr305-1.3.9.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Guava: Google Core Libraries for Java (http://code.google.com/p/guava-libraries/guava)
-       repo/guava-18.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/guava-18.0.jar
-     - JSON.simple (http://code.google.com/p/json-simple/)
-       repo/json-simple-1.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Microsoft Windows Azure Client API (https://github.com/WindowsAzure/azure-sdk-for-java)
-       repo/microsoft-windowsazure-api-0.4.4.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - javax.inject (http://code.google.com/p/atinject/)
-       repo/javax.inject-1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Thrift (http://thrift.apache.org)
-       repo/libfb303-0.9.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Thrift (http://thrift.apache.org)
-       repo/libthrift-0.9.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - DataNucleus JDO API plugin (http://www.datanucleus.org)
-       repo/datanucleus-api-jdo-3.2.6.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - DataNucleus Core (http://www.datanucleus.org)
-       repo/datanucleus-core-3.2.10.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - DataNucleus RDBMS (http://www.datanucleus.org)
-       repo/datanucleus-rdbms-3.2.9.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - JAXB2 CommonsValue Constructor Plugin (http://java.net/projects/jaxb2-commons/pages/value-constructor)
-       repo/jaxb2-value-constructor-3.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - StAX API (http://stax.codehaus.org/)
-       repo/stax-api-1.0.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - StAX
-       repo/stax-1.1.1-dev.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Wicket Core (http://wicket.apache.org/wicket-core/wicket-core)
-       repo/wicket-core-1.5.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Wicket Request (http://maven.apache.org)
-       repo/wicket-request-1.5.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Wicket Util (http://maven.apache.org)
-       repo/wicket-util-1.5.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Hadoop Annotations
-       repo/hadoop-annotations-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Hadoop Auth
-       repo/hadoop-auth-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/hadoop-auth-2.2.0.jar
-     - Apache Hadoop Client
-       repo/hadoop-client-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Hadoop Common
-       repo/hadoop-common-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/hadoop-common-2.2.0.jar
-     - Apache Hadoop Common (tests)
-       repo/hadoop-common-2.2.0-tests.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/hadoop-common-2.2.0-tests.jar
-     - Apache Hadoop HDFS
-       repo/hadoop-hdfs-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/hadoop-hdfs-2.2.0.jar
-     - Apache Hadoop HDFS
-       repo/hadoop-hdfs-2.2.0-tests.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/hadoop-hdfs-2.2.0-tests.jar
-     - hadoop-mapreduce-client-app
-       repo/hadoop-mapreduce-client-app-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-mapreduce-client-common
-       repo/hadoop-mapreduce-client-common-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-mapreduce-client-core
-       repo/hadoop-mapreduce-client-core-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-mapreduce-client-hs
-       repo/hadoop-mapreduce-client-hs-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-mapreduce-client-jobclient
-       repo/hadoop-mapreduce-client-jobclient-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-mapreduce-client-jobclient
-       repo/hadoop-mapreduce-client-jobclient-2.2.0-tests.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-mapreduce-client-shuffle
-       repo/hadoop-mapreduce-client-shuffle-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Hadoop Mini-Cluster
-       repo/hadoop-minicluster-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - zookeeper
-       repo/zookeeper-3.4.5.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-yarn-api
-       repo/hadoop-yarn-api-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/hadoop-yarn-api-2.2.0.jar
-     - hadoop-yarn-client
-       repo/hadoop-yarn-client-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/hadoop-yarn-client-2.2.0.jar
-     - hadoop-yarn-common
-       repo/hadoop-yarn-common-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/hadoop-yarn-common-2.2.0.jar
-     - hadoop-yarn-server-common
-       repo/hadoop-yarn-server-common-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-yarn-server-nodemanager
-       repo/hadoop-yarn-server-nodemanager-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-yarn-server-resourcemanager
-       repo/hadoop-yarn-server-resourcemanager-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-yarn-server-tests
-       repo/hadoop-yarn-server-tests-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - hadoop-yarn-server-web-proxy
-       repo/hadoop-yarn-server-web-proxy-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Plexus Common Utilities (http://plexus.codehaus.org/plexus-utils)
-       repo/plexus-utils-3.0.7.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jettison
-       repo/jettison-1.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jackson (http://jackson.codehaus.org)
-       repo/jackson-core-asl-1.8.8.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - JAX-RS provider for JSON content type (http://jackson.codehaus.org)
-       repo/jackson-jaxrs-1.8.3.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Data Mapper for Jackson (http://jackson.codehaus.org)
-       repo/jackson-mapper-asl-1.9.12.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Xml Compatibility extensions for Jackson (http://jackson.codehaus.org)
-       repo/jackson-mapper-xc-1.8.3.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jackson-core (http://wiki.fasterxml.com/JacksonHome)
-       repo/jackson-core-2.2.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Google GuiceCore Library (http://code.google.com/p/google-guice/guice/)
-       repo/guice-3.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Google GuiceExtensionsServlet (http://code.google.com/p/google-guice/extensions-parent/guice-servlet/)
-       repo/guice-servlet-3.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty Server (http://jetty.mortbay.org/)
-       repo/jetty-6.1.26.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jetty Utilities (http://jetty.mortbay.org/)
-       repo/jetty-util-6.1.26.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Commons Configuration (http://commons.apache.org/${pom.artifactId.substring(8)}/)
-       repo/commons-configuration-1.6.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/commons-configuration-3.2.1.jar
-     - Digester (http://jakarta.apache.org/commons/digester/)
-       repo/commons-digester-1.8.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - EL (http://jakarta.apache.org/commons/el/)
-       repo/commons-el-1.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Commons BeanUtils
-       repo/commons-beanutils-1.7.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Commons BeanUtils Core (http://commons.apache.org/beanutils/)
-       repo/commons-beanutils-core-1.8.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Commons CLI (http://commons.apache.org/cli/)
-       repo/commons-cli-1.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/commons-cli-1.2.jar
-     - Apache Commons Codec (http://commons.apache.org/codec/commons-codec)
-       repo/commons-codec-1.4.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/commons-codec-1.4.jar
-     - Apache Commons Collections (http://commons.apache.org/collections/commons-collections)
-       repo/commons-collections-3.2.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/commons-collections-3.2.1.jar
-     - Commons Daemon (http://commons.apache.org/daemon/)
-       repo/commons-daemon-1.0.13.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Commons IO (http://commons.apache.org/io/)
-       repo/commons-io-2.4.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/commons-io-2.4.jar
-     - Commons Lang (http://commons.apache.org/lang/)
-       repo/commons-lang-2.5.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/commons-lang-2.5.jar
-     - Apache Commons Logging (http://commons.apache.org/logging)
-       repo/commons-logging-1.0.5.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/commons-logging-1.0.5.jar
-     - Apache Commons Logging Api (http://commons.apache.org/logging)
-       repo/commons-logging-api-1.0.4.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Commons Net (http://commons.apache.org/net/)
-       repo/commons-net-3.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Log4j (http://logging.apache.org:80/log4j/1.2/log4j)
-       repo/log4j-1.2.17.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-       and
-       lib/log4j-1.2.17.jar
-     - Apache Ant Core (http://ant.apache.org/)
-       repo/ant-1.9.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Ant Launcher (http://ant.apache.org/)
-       repo/ant-launcher-1.9.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Avro (http://avro.apache.org)
-       repo/avro-1.7.5.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Commons Compress (http://commons.apache.org/compress/)
-       repo/commons-compress-1.4.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Commons Lang (http://commons.apache.org/lang/)
-       repo/commons-lang3-3.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Commons Math (http://commons.apache.org/math/)
-       repo/commons-math-2.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Ant Utilities (http://hive.apache.org/hive-ant)
-       repo/hive-ant-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Common (http://hive.apache.org/hive-common)
-       repo/hive-common-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Query Language (http://hive.apache.org/hive-exec)
-       repo/hive-exec-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Metastore (http://hive.apache.org/hive-metastore)
-       repo/hive-metastore-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Serde (http://hive.apache.org/hive-serde)
-       repo/hive-serde-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Shims (http://hive.apache.org/hive-shims)
-       repo/hive-shims-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Shims 0.20 (http://hive.apache.org/hive-shims-0.20)
-       repo/hive-shims-0.20-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Shims 0.20S (http://hive.apache.org/hive-shims-0.20S)
-       repo/hive-shims-0.20S-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Shims 0.23 (http://hive.apache.org/hive-shims-0.23)
-       repo/hive-shims-0.23-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Shims Common (http://hive.apache.org/hive-shims-common)
-       repo/hive-shims-common-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Hive Shims Secure Common (http://hive.apache.org/hive-shims-common-secure)
-       repo/hive-shims-secure-common-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Apache Velocity (http://velocity.apache.org/engine/releases/velocity-1.5/)
-       repo/velocity-1.5.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Jakarta ORO
-       repo/oro-2.0.8.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - ROME
-       repo/rome-1.0.1-modified-01.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - jasper-compiler (http://tomcat.apache.org/jasper-compiler)
-       repo/jasper-compiler-5.5.23.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - jasper-runtime (http://tomcat.apache.org/jasper-runtime)
-       repo/jasper-runtime-5.5.23.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Xerces2 Java Parser (http://xerces.apache.org/xerces2-j)
-       repo/xercesImpl-2.9.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - XML APIs (http://xml.apache.org/commons/components/external/xml-apis)
-       repo/xml-apis-1.3.04.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Groovy (http://groovy.codehaus.org/)
-       repo/groovy-all-2.1.6.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-     - Snappy for Java (http://github.com/xerial/snappy-java/)
-       repo/snappy-java-1.0.4.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-   ===
 
    Component(s):
    - Java Servlet API (http://servlet-spec.java.n)
diff --git a/asterix-yarn/src/main/licenses/NOTICE b/asterix-yarn/src/main/licenses/NOTICE
index 7c12f0c..79a6c1a 100644
--- a/asterix-yarn/src/main/licenses/NOTICE
+++ b/asterix-yarn/src/main/licenses/NOTICE
@@ -1,4 +1,4 @@
-Apache AsterixDB
+Apache AsterixDB Hadoop YARN installer
 Copyright 2016 The Apache Software Foundation
 
 This product includes software developed at
@@ -6,339 +6,136 @@
 
 AsterixDB utilizes many libraries, which come with the following applicable NOTICE(s):
 
- - repo/algebricks-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-algebricks-common
-Copyright 2016 The Apache Software Foundation
-
- - repo/algebricks-compiler-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-algebricks-compiler
-Copyright 2016 The Apache Software Foundation
-
- - repo/algebricks-core-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-algebricks-core
-Copyright 2016 The Apache Software Foundation
-
- - repo/algebricks-data-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-algebricks-data
-Copyright 2016 The Apache Software Foundation
-
- - repo/algebricks-rewriter-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-algebricks-rewriter
-Copyright 2016 The Apache Software Foundation
-
- - repo/algebricks-runtime-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-algebricks-runtime
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-algebra-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-algebra
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-app-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-app
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-aql-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-aql
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-common-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-common
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-events-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-events
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-external-data-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-external-data
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-fuzzyjoin-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-fuzzyjoin
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-metadata-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-metadata
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-om-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-om
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-runtime-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-runtime
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-server-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-server
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-tools-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-tools
-Copyright 2016 The Apache Software Foundation
-
- - repo/asterix-transactions-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-asterix-transactions
-Copyright 2016 The Apache Software Foundation
-
  - repo/avro-1.7.4.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Apache Avro
-Copyright 2009-2013 The Apache Software Foundation
+    Apache Avro
+    Copyright 2009-2013 The Apache Software Foundation
 
  - repo/commons-logging-1.1.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+   and lib/commons-logging-1.1.1.jar
 
-Commons Logging
-Copyright 2001-2007 The Apache Software Foundation
+    Commons Logging
+    Copyright 2001-2007 The Apache Software Foundation
 
  - repo/derby-10.10.1.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Apache Derby
-Copyright 2004-2013 The Apache Software Foundation
+    Apache Derby
+    Copyright 2004-2013 The Apache Software Foundation
 
-=========================================================================
+    =========================================================================
 
-Portions of Derby were originally developed by
-International Business Machines Corporation and are
-licensed to the Apache Software Foundation under the
-"Software Grant and Corporate Contribution License Agreement",
-informally known as the "Derby CLA".
-The following copyright notice(s) were affixed to portions of the code
-with which this file is now or was at one time distributed
-and are placed here unaltered.
+    Portions of Derby were originally developed by
+    International Business Machines Corporation and are
+    licensed to the Apache Software Foundation under the
+    "Software Grant and Corporate Contribution License Agreement",
+    informally known as the "Derby CLA".
+    The following copyright notice(s) were affixed to portions of the code
+    with which this file is now or was at one time distributed
+    and are placed here unaltered.
 
-(C) Copyright 1997,2004 International Business Machines Corporation.  All rights reserved.
+    (C) Copyright 1997,2004 International Business Machines Corporation.  All rights reserved.
 
-(C) Copyright IBM Corp. 2003. 
+    (C) Copyright IBM Corp. 2003. 
 
 
-=========================================================================
+    =========================================================================
 
 
-The JDBC apis for small devices and JDBC3 (under java/stubs/jsr169 and
-java/stubs/jdbc3) were produced by trimming sources supplied by the
-Apache Harmony project. In addition, the Harmony SerialBlob and
-SerialClob implementations are used. The following notice covers the Harmony sources:
+    The JDBC apis for small devices and JDBC3 (under java/stubs/jsr169 and
+    java/stubs/jdbc3) were produced by trimming sources supplied by the
+    Apache Harmony project. In addition, the Harmony SerialBlob and
+    SerialClob implementations are used. The following notice covers the Harmony sources:
 
-Portions of Harmony were originally developed by
-Intel Corporation and are licensed to the Apache Software
-Foundation under the "Software Grant and Corporate Contribution
-License Agreement", informally known as the "Intel Harmony CLA".
+    Portions of Harmony were originally developed by
+    Intel Corporation and are licensed to the Apache Software
+    Foundation under the "Software Grant and Corporate Contribution
+    License Agreement", informally known as the "Intel Harmony CLA".
 
 
  - repo/guice-3.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Google Guice - Core Library
-Copyright 2006-2011 Google, Inc.
+    Google Guice - Core Library
+    Copyright 2006-2011 Google, Inc.
 
  - repo/guice-servlet-3.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Google Guice - Extensions - Servlet
-Copyright 2006-2011 Google, Inc.
+    Google Guice - Extensions - Servlet
+    Copyright 2006-2011 Google, Inc.
 
  - repo/hive-ant-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Ant Utilities
-Copyright 2014 The Apache Software Foundation
+    Hive Ant Utilities
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-common-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Common
-Copyright 2014 The Apache Software Foundation
+    Hive Common
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-exec-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Query Language
-Copyright 2014 The Apache Software Foundation
+    Hive Query Language
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-metastore-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Metastore
-Copyright 2014 The Apache Software Foundation
+    Hive Metastore
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-serde-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Serde
-Copyright 2014 The Apache Software Foundation
+    Hive Serde
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-shims-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Shims
-Copyright 2014 The Apache Software Foundation
+    Hive Shims
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-shims-0.20-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Shims 0.20
-Copyright 2014 The Apache Software Foundation
+    Hive Shims 0.20
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-shims-0.20S-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Shims 0.20S
-Copyright 2014 The Apache Software Foundation
+    Hive Shims 0.20S
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-shims-0.23-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Shims 0.23
-Copyright 2014 The Apache Software Foundation
+    Hive Shims 0.23
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-shims-common-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Shims Common
-Copyright 2014 The Apache Software Foundation
+    Hive Shims Common
+    Copyright 2014 The Apache Software Foundation
 
  - repo/hive-shims-common-secure-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Hive Shims Secure Common
-Copyright 2014 The Apache Software Foundation
-
- - repo/hyracks-api-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-api
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-client-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-client
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-comm-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-comm
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-control-cc-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-control-cc
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-control-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-control-common
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-control-nc-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-control-nc
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-dataflow-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-dataflow-common
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-dataflow-std-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-dataflow-std
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-data-std-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-data-std
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-hdfs-2.x-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-hdfs-2.x
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-hdfs-core-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-hdfs-core
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-ipc-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-ipc
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-net-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-net
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-am-bloomfilter-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-am-bloomfilter
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-am-btree-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-am-btree
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-am-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-am-common
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-am-lsm-btree-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-am-lsm-btree
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-am-lsm-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-am-lsm-common
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-am-lsm-invertedindex-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-am-lsm-invertedindex
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-am-lsm-rtree-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-am-lsm-rtree
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-am-rtree-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-am-rtree
-Copyright 2016 The Apache Software Foundation
-
- - repo/hyracks-storage-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-
-hyracks-storage-common
-Copyright 2016 The Apache Software Foundation
+    Hive Shims Secure Common
+    Copyright 2014 The Apache Software Foundation
 
  - repo/plexus-utils-3.0.7.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-This product includes software developed by the Indiana University 
-  Extreme! Lab (http://www.extreme.indiana.edu/)
+    This product includes software developed by the Indiana University 
+      Extreme! Lab (http://www.extreme.indiana.edu/)
 
-This product includes software developed by
-ThoughtWorks (http://www.thoughtworks.com).
+    This product includes software developed by
+    ThoughtWorks (http://www.thoughtworks.com).
 
-This product includes software developed by
-javolution (http://javolution.org/).
+    This product includes software developed by
+    javolution (http://javolution.org/).
 
-This product includes software developed by
-Rome (https://rome.dev.java.net/).
+    This product includes software developed by
+    Rome (https://rome.dev.java.net/).
 
 - repo/velocity-1.5.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
-Apache Velocity
 
-Copyright (C) 2000-2007 The Apache Software Foundation
+    Apache Velocity
+
+    Copyright (C) 2000-2007 The Apache Software Foundation
 
  - repo/wicket-core-1.5.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
    Apache Wicket
@@ -371,13 +168,13 @@
    [1]: http://the-stickman.com/web-development/javascript/upload-multiple-files-with-a-single-file-element/
  - repo/wicket-request-1.5.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Wicket Request
-Copyright 2006-2011 Apache Software Foundation
+    Wicket Request
+    Copyright 2006-2011 Apache Software Foundation
 
  - repo/wicket-util-1.5.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
-Wicket Util
-Copyright 2006-2011 Apache Software Foundation
+    Wicket Util
+    Copyright 2006-2011 Apache Software Foundation
 
  - repo/xercesImpl-2.9.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
 
@@ -401,3 +198,527 @@
      - software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
      - software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
      - software copyright (c) 2000 World Wide Web Consortium, http://www.w3.org
+
+ - repo/httpclient-4.2.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+    Apache HttpComponents HttpClient
+    Copyright 1999-2012 The Apache Software Foundation
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/httpcore-4.2.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+    Apache HttpComponents HttpCore
+    Copyright 2005-2012 The Apache Software Foundation
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+    This project contains annotations derived from JCIP-ANNOTATIONS
+    Copyright (c) 2005 Brian Goetz and Tim Peierls. See http://www.jcip.net
+
+- repo/ant-1.9.1.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+   Apache Ant
+   Copyright 1999-2013 The Apache Software Foundation
+
+   The <sync> task is based on code Copyright (c) 2002, Landmark
+   Graphics Corp that has been kindly donated to the Apache Software
+   Foundation.
+ - repo/ant-launcher-1.9.1.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+   Apache Ant
+   Copyright 1999-2013 The Apache Software Foundation
+
+   The <sync> task is based on code Copyright (c) 2002, Landmark
+   Graphics Corp that has been kindly donated to the Apache Software
+   Foundation.
+ - repo/commons-beanutils-1.7.0.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-beanutils-core-1.8.0.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+    Apache Commons BeanUtils
+
+    Copyright 2000-2008 The Apache Software Foundation
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-cli-1.2.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+   and lib/commons-cli-1.2.jar
+
+    Apache Commons CLI
+    Copyright 2001-2009 The Apache Software Foundation
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-codec-1.4.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+   and lib/commons-codec-1.4.jar
+
+    Apache Commons Codec
+
+    Copyright 2002-2009 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+
+ - repo/commons-collections-3.2.1.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+   and lib/commons-collections-3.2.1.jar
+
+    Apache Commons Collections
+
+    Copyright 2001-2008 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-compress-1.4.1.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Commons Compress
+    Copyright 2002-2012 The Apache Software Foundation
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-configuration-1.6.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+   and lib/commons-configuration-1.6.jar
+
+    Apache Commons Configuration
+
+    Copyright 2001-2008 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-daemon-1.0.13.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Commons Daemon
+    Copyright 1999-2013 The Apache Software Foundation
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+     - repo/commons-digester-1.8.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+    Apache Jakarta Commons Digester
+
+    Copyright 2001-2006 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-io-2.4.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+   and lib/commons-io-2.4.jar
+
+    Apache Commons IO
+
+    Copyright 2002-2012 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+
+
+ - repo/commons-lang-2.5.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+   and lib/commons-lang-2.5.jar
+
+    Apache Commons Lang
+
+    Copyright 2001-2010 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-lang3-3.1.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Commons Lang
+    Copyright 2001-2011 The Apache Software Foundation
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+    This product includes software from the Spring Framework,
+    under the Apache License 2.0 (see: StringUtils.containsWhitespace())
+
+ - repo/commons-logging-api-1.0.4.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/commons-math-2.1.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Commons Math
+    Copyright 2001-2010 The Apache Software Foundation
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+    ===============================================================================
+    The LinearConstraint, LinearObjectiveFunction, LinearOptimizer,
+    RelationShip, SimplexSolver and SimplexTableau classes in package
+    org.apache.commons.math.optimization.linear include software developed by
+    Benjamin McCann (http://www.benmccann.com) and distributed with
+    the following copyright: Copyright 2009 Google Inc.
+    ===============================================================================
+
+    This product includes software developed by the
+    University of Chicago, as Operator of Argonne National
+    Laboratory.
+    The LevenbergMarquardtOptimizer class in package
+    org.apache.commons.math.optimization.general includes software
+    translated from the lmder, lmpar and qrsolv Fortran routines
+    from the Minpack package
+    Minpack Copyright Notice (1999) University of Chicago.  All rights reserved
+    ===============================================================================
+
+    The GraggBulirschStoerIntegrator class in package
+    org.apache.commons.math.ode.nonstiff includes software translated
+    from the odex Fortran routine developed by E. Hairer and G. Wanner.
+    Original source copyright:
+    Copyright (c) 2004, Ernst Hairer
+    ===============================================================================
+
+    The EigenDecompositionImpl class in package
+    org.apache.commons.math.linear includes software translated
+    from some LAPACK Fortran routines.  Original source copyright:
+    Copyright (c) 1992-2008 The University of Tennessee.  All rights reserved.
+    ===============================================================================
+
+    The MersenneTwister class in package org.apache.commons.math.random
+    includes software translated from the 2002-01-26 version of
+    the Mersenne-Twister generator written in C by Makoto Matsumoto and Takuji
+    Nishimura. Original source copyright:
+    Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
+    All rights reserved
+    ===============================================================================
+
+    The complete text of licenses and disclaimers associated with the the original
+    sources enumerated above at the time of code translation are in the LICENSE.txt
+    file.
+
+ - repo/commons-net-3.1.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Commons Net
+
+    Copyright 2001-2012 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+
+
+ - repo/datanucleus-api-jdo-3.2.6.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    =========================================================================
+    ==  NOTICE file corresponding to section 4(d) of the Apache License,   ==
+    ==  Version 2.0, in this case for the DataNucleus distribution.        ==
+    =========================================================================
+
+    ===================================================================
+    This product includes software developed by many individuals,
+    including the following:
+    ===================================================================
+    Erik Bengtson
+    Andy Jefferson
+
+
+    ===================================================================
+    This product has included contributions from some individuals,
+    including the following:
+    ===================================================================
+
+ - repo/datanucleus-core-3.2.10.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    =========================================================================
+    ==  NOTICE file corresponding to section 4(d) of the Apache License,   ==
+    ==  Version 2.0, in this case for the DataNucleus distribution.        ==
+    =========================================================================
+
+    ===================================================================
+    This product includes software developed by many individuals,
+    including the following:
+    ===================================================================
+    Erik Bengtson
+    Andy Jefferson
+
+
+    ===================================================================
+    This product has included contributions from some individuals,
+    including the following:
+    ===================================================================
+    Joerg von Frantzius
+    Thomas Marti
+    Barry Haddow
+    Marco Schulze
+    Ralph Ullrich
+    David Ezzio
+    Brendan de Beer
+    David Eaves
+    Martin Taal
+    Tony Lai
+    Roland Szabo
+    Marcus Mennemeier
+    Xuan Baldauf
+    Eric Sultan
+
+
+    ===================================================================
+    This product also includes software developed by the TJDO project
+    (http://tjdo.sourceforge.net/).
+    ===================================================================
+
+ - repo/datanucleus-rdbms-3.2.9.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+    =========================================================================
+    ==  NOTICE file corresponding to section 4(d) of the Apache License,   ==
+    ==  Version 2.0, in this case for the DataNucleus distribution.        ==
+    =========================================================================
+
+    ===================================================================
+    This product includes software developed by many individuals,
+    including the following:
+    ===================================================================
+    Andy Jefferson
+    Erik Bengtson
+    Joerg von Frantzius
+    Marco Schulze
+
+
+    ===================================================================
+    This product has included contributions from some individuals,
+    including the following:
+    ===================================================================
+    Barry Haddow
+    Ralph Ullrich
+    David Ezzio
+    Brendan de Beer
+    David Eaves
+    Martin Taal
+    Tony Lai
+    Roland Szabo
+    Anton Troshin (Timesten)
+
+
+    ===================================================================
+    This product also includes software developed by the TJDO project
+    (http://tjdo.sourceforge.net/).
+    ===================================================================
+
+    ===================================================================
+    This product also includes software developed by the Apache Commons project
+    (http://commons.apache.org/).
+    ===================================================================
+
+ - repo/groovy-all-2.1.6.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Commons CLI
+    Copyright 2001-2009 The Apache Software Foundation
+
+    This product includes software developed by
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/hive-exec-0.13.0.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Thrift
+    Copyright 2006-2010 The Apache Software Foundation.
+
+    This product includes software developed at
+    The Apache Software Foundation (http://www.apache.org/). 
+
+ - repo/httpclient-4.2.2.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache HttpComponents HttpClient
+
+    Copyright 1999-2012 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+
+ - repo/httpcore-4.2.2.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache HttpComponents HttpCore
+
+    Copyright 2005-2012 The Apache Software Foundation
+
+
+
+    This product includes software developed by
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+
+
+    This project contains annotations derived from JCIP-ANNOTATIONS
+
+    Copyright (c) 2005 Brian Goetz and Tim Peierls. See http://www.jcip.net
+
+ - repo/jdo2-api-2.3-20090302111651.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Java Data Objects (JDO)
+    Copyright 2005-2006 The Apache Software Foundation
+
+    This product includes software developed at
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/jdo-api-3.0.1.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Java Data Objects (JDO)
+
+    Copyright 2005-2006 The Apache Software Foundation
+
+
+
+    This product includes software developed at
+
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/libthrift-0.9.0.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+    Apache Thrift
+    Copyright 2006-2010 The Apache Software Foundation.
+
+    This product includes software developed at
+    The Apache Software Foundation (http://www.apache.org/).
+
+ - repo/netty-3.2.2.Final.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+                                The Netty Project
+                                =================
+
+    Please visit the Netty web site for more information:
+
+      * http://www.jboss.org/netty/
+
+    Copyright 2009 Red Hat, Inc.
+
+    Red Hat licenses this product to you under the Apache License, version 2.0 (the
+    "License"); you may not use this product except in compliance with the License.
+    You may obtain a copy of the License at:
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software distributed
+    under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+    CONDITIONS OF ANY KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations under the License.
+
+    Also, please refer to each LICENSE.<component>.txt file, which is located in
+    the 'license' directory of the distribution file, for the license terms of the
+    components that this product depends on.
+
+    -------------------------------------------------------------------------------
+    This product contains the extensions to Java Collections Framework which has
+    been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene:
+
+      * LICENSE:
+        * license/LICENSE.jsr177y.txt (Public Domain)
+      * HOMEPAGE:
+        * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/
+        * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/
+
+    This product contains a modified version of Robert Harder's Public Domain
+    Base64 Encoder and Decoder, which can be obtained at:
+
+      * LICENSE:
+        * license/LICENSE.base64.txt (Public Domain)
+      * HOMEPAGE:
+        * http://iharder.sourceforge.net/current/java/base64/
+
+    This product contains a modified version of 'JZlib', a re-implementation of
+    zlib in pure Java, which can be obtained at:
+
+      * LICENSE:
+        * license/LICENSE.jzlib.txt (BSD Style License)
+      * HOMEPAGE:
+        * http://www.jcraft.com/jzlib/
+
+ - repo/netty-3.6.2.Final.jar in asterix/asterix-server-0.8.8-incubating-binary-assembly.zip
+
+                                The Netty Project
+                                =================
+
+    Please visit the Netty web site for more information:
+
+      * http://netty.io/
+
+    Copyright 2011 The Netty Project
+
+    The Netty Project licenses this file to you under the Apache License,
+    version 2.0 (the "License"); you may not use this file except in compliance
+    with the License. You may obtain a copy of the License at:
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+    License for the specific language governing permissions and limitations
+    under the License.
+
+    Also, please refer to each LICENSE.<component>.txt file, which is located in
+    the 'license' directory of the distribution file, for the license terms of the
+    components that this product depends on.
+
+    -------------------------------------------------------------------------------
+    This product contains the extensions to Java Collections Framework which has
+    been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene:
+
+      * LICENSE:
+        * license/LICENSE.jsr166y.txt (Public Domain)
+      * HOMEPAGE:
+        * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/
+        * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/
+
+    This product contains a modified version of Robert Harder's Public Domain
+    Base64 Encoder and Decoder, which can be obtained at:
+
+      * LICENSE:
+        * license/LICENSE.base64.txt (Public Domain)
+      * HOMEPAGE:
+        * http://iharder.sourceforge.net/current/java/base64/
+
+    This product contains a modified version of 'JZlib', a re-implementation of
+    zlib in pure Java, which can be obtained at:
+
+      * LICENSE:
+        * license/LICENSE.jzlib.txt (BSD Style License)
+      * HOMEPAGE:
+        * http://www.jcraft.com/jzlib/
+
+ - lib/log4j-1.2.17.jar
+
+    Apache log4j
+    Copyright 2007 The Apache Software Foundation
+
+    This product includes software developed at
+    The Apache Software Foundation (http://www.apache.org/).
+
