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: 25.0.0
* 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/25.0.0/sdklib-25.0.0-sources.jar)
* [android common](http://search.maven.org/remotecontent?filepath=com/android/tools/sdk-common/25.0.0/sdk-common-25.0.0-sources.jar)
* Version: 25.0.0
* License: Apache License 2.0.


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

* Version: 5.1
* 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.18
* 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


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

* Version: r111
* License: MIT license


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

* Version: 3.0.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://github.com/google/guava)

* Version: 21.0
* License: Apache License 2.0


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

* Version: 9-dev-r3297-4 (javac-9-dev-r3297-4.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
* 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


## [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

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

* Version: 0.1-20170104
* 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.31
* 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

