This file lists license and version information of all code we did not
author, but ship together with the source so building Bazel requires
a minimal set of extra dependencies.


## [aether](http://eclipse.org/aether/)

* Version: 1.0.0 v20140518
* License: Eclipse Public License


## [android_common](http://mvnrepository.com/artifact/com.android.tools/sdk-common)

* Version: 22.8.4
* License: Apache License 2.0.


## [apache_commons_codec](http://commons.apache.org/proper/commons-codec/)

* Version: 1.9
* License: Apache License 2.0.


## [apache_commons_collections](http://commons.apache.org/proper/commons-collections/)

* Version: 3.2.2
* License: Apache License 2.0.


## [apache_commons_compress](http://commons.apache.org/proper/commons-compress/)

* Version: 1.9
* License: Apache License 2.0.


## [apache_commons_logging](http://commons.apache.org/proper/commons-logging/)

* Version: 1.1.1
* License: Apache License 2.0.

## [apache_commons_pool2](https://commons.apache.org/proper/commons-pool/)

* Version: 2.3
* License: Apache License 2.0.


## [apache_httpclient](http://hc.apache.org/httpclient-3.x/)

* Version: 4.2.5
* License: Apache License 2.0


## [apache_httpcore](https://hc.apache.org/httpcomponents-core-ga/)

* Version: 4.2.4
* License: Apache License 2.0


## [apache_velocity](http://velocity.apache.org/)

* Version: 1.7
* License: Apache License 2.0.


## apkbuilder

* [apkbuilder](http://search.maven.org/remotecontent?filepath=com/android/tools/sdklib/22.8.4/sdklib-22.8.4-sources.jar)
* [android common](http://search.maven.org/remotecontent?filepath=com/android/tools/sdk-common/22.8.4/sdk-common-22.8.4-sources.jar)
* Version: 22.8.4
* License: Apache License 2.0.


## apksigner

* [apksig](https://android.googlesource.com/platform/tools/apksig)
* License: Apache License 2.0


## [asm](https://asm.ow2.org)

* Version: 5.0.4
* License: 3-clause revised BSD


## [auto](https://github.com/google/auto)

* [auto_common](https://github.com/google/auto/tree/master/common) (version 0.3)
* [auto_service](https://github.com/google/auto/tree/master/service) (version 1.0-rc2)
* [auto_value](https://github.com/google/auto/tree/master/value) (version 1.0)
* License: Apache License 2.0


## [bytebuddy](https://github.com/raphw/byte-buddy)

* Version: 0.7-rc6
* License: Apache License 2.0


## [Google's Dagger](https://github.com/google/dagger)

* Version: 2.5
* License: Apache License 2.0

## [Error Prone](https://github.com/google/error-prone)

* Version: 2.0.11
* License: Apache License 2.0


## [JCIP Annotations](https://github.com/stephenc/jcip-annotations/)

* Version: 1.0-1
* License: Apache License 2.0


## [PCollections](https://github.com/pcollections/pcollections/)

* Version: 2.1.2
* License: MIT


## [jFormatString](https://code.google.com/p/j-format-string/)

* Version: 3.0.0
* License: GNU GPL v2 with Classpath exception

## [Checker Framework Dataflow](http://code.google.com/p/checker-framework/)

* Version: 1.8.10
* License: GNU GPL v2 with Classpath exception, portions MIT

## [Checker Framework Javacutil](http://code.google.com/p/checker-framework/)

* Version: 1.8.10
* License: GNU GPL v2 with Classpath exception, portions MIT

## [Buck (iOS support)](http://facebook.github.io/buck/)

* Version: commit id 2ff4f45a971776afcfbe88333d78c4ca6bf03df9
* License: Apache License 2.0


## [d3](http://d3js.org/)

* Version: 3.4.12
* License: BSD license


## [dd_plist](http://plist.googlecode.com/svn-history/r111/trunk/)

* Version: r111
* License: MIT license


## [protobuf-java](https://code.google.com/p/protobuf/)

* Version: 2.5.0
* License: New BSD License


## [gtest](https://code.google.com/p/googletest/)

* Version: 1.7.0
* License: New BSD License


## [gson](https://code.google.com/p/google-gson/)

* Version: 2.2.4
* License: Apache License 2.0


## [guava](https://code.google.com/p/guava-libraries/)

* Version: 19.0
* License: Apache License 2.0


## [javac](https://github.com/google/error-prone-javac)

* Version: 1.9.0-dev-r2973-2 (javac7.jar) and 1.9.0-dev-r2644-2 (javac.jar)
* License: GNU GPL v2 with Classpath exception (plus other licenses, see third_party/java/jdk/langtools/LICENSE file).

## [jarjar](https://code.google.com/p/jarjar/)

* Version: 1.4
* License: Apache License 2.0


## [jgit](https://eclipse.org/jgit/)

* Version: 4.0.1.201506240215-r
* License: Eclipse Distribution License 1.0


## [JimFS](https://github.com/google/jimfs)

* Version: 1.1-rc1
* License: Apache License 2.0


## [joda_time](http://www.joda.org/joda-time/)

* Version: 2.3
* License: Apache License 2.0


## [jsr250](https://repository.apache.org/content/repositories/orgapachetomcat-002)

* Version: 8.0.5
* License: Apache License 2.0


## [jsch](http://www.jcraft.com/jsch/)

* Version: 0.1.51
* License: BSD-style license


## [jsr305](https://code.google.com/p/jsr-305/)

* Version: latest as of 2014-05-07
* License: New BSD License


## [jsr330_inject](https://code.google.com/p/atinject/)

* Version: 1
* License: Apache License 2.0


## [jquery](http://jquery.com)

* Version: v2_0_3
* License: MIT license


## [maven](http://mvnrepository.com/artifact/org.apache.maven)

* Version: 3.3.3
* License: Apache License 2.0


## [maven_model](http://maven.apache.org/ref/3.2.3/maven-model/)

* Version: 3.2.3
* License: Apache License 2.0


## [plexus_component_annotations](http://mvnrepository.com/artifact/org.codehaus.plexus/plexus-component-annotations)

* Version: 1.6
* License: Apache License 2.0

## [plexus_interpolation](http://mvnrepository.com/artifact/org.codehaus.plexus/plexus-interpolation)

* Version: 1.22
* License: Apache License 2.0


## [plexus_utils](http://mvnrepository.com/artifact/org.codehaus.plexus/plexus-utils)

* Version: 3.0.21
* License: Apache License 2.0


## [slf4j](http://www.slf4j.org/)

* Version: 1.7.7
* License: MIT license


## [hazelcast](http://hazelcast.org/)

* Version: 3.6.4
* License: Apache License 2.0


# Testing

## [hamcrest](https://code.google.com/p/hamcrest/)

* Version: 1.3
* License: New BSD License


## [iossim](https://code.google.com/p/chromium/codesearch#chromium/src/testing/iossim/)

* Version: latest as of 2015-10-09
* License: 3-clause BSD


## [junit](http://junit.org/)

* Version: 4.11
* License: Eclipse Public License Version 1.0


## [truth](http://google.github.io/truth/)

* Version: 0.28
* License: Apache License 2.0

## [xz](http://tukaani.org/xz/java.html)

* Version: 1.5
* License: Public Domain

## [netty](http://netty.io/)

* Version: 4.1.0.CR4
* License: Apache License 2.0

