# Notices for CDO

This content is produced and maintained by the Eclipse CDO project.

* Project home: https://projects.eclipse.org/projects/modeling.emf.cdo

## Trademarks

Eclipse CDO, and CDO are trademarks of the Eclipse Foundation.

## Copyright

All content is the property of the respective authors or their employers. For
more information regarding authorship of content, please consult the listed
source code repository logs.

## Declared Project Licenses

This program and the accompanying materials are made available under the terms
of the Eclipse Public License v. 1.0 which is available at
http://www.eclipse.org/legal/epl-v10.html.

SPDX-License-Identifier: EPL-1.0

## Source Code

The project maintains the following source code repositories:

* http://git.eclipse.org/c/cdo/cdo.git
* http://git.eclipse.org/c/cdo/cdo.incubator.git
* http://git.eclipse.org/c/cdo/cdo.infrastructure.git

## Third-party Content

Apache Commons Codec (1.3)

* License: Apache License, 2.0

Apache Commons Lang (2.4)

* License: Apache License, 2.0

Apache Commons Lang (2.6)

* License: Apache License, 2.0

Apache Commons Logging Jar (1.1.1)

* License: Apache License, 2.0

Apache Derby (10.1.2.1)

* License: Apache License, 2.0

Apache Derby (10.5.1.1)

* License: Apache License, 2.0

Apache Derby (10.8.2.2)

* License: Apache License, 2.0

Apache HttpClient (3.1)

* License: Apache License, 2.0

easymock (2.4)

* License: MIT license

h2 Database (1.1.117)

* License: Eclipse Public License
* Project: http://www.h2database.com

h2 Database (1.3.168)

* License: Eclipse Public License

JMS Spec (1.1)

* License: Common Development and Distribution License
* Project: http://geronimo.apache.org/
* Source:
   http://repo1.maven.org/maven2/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.1/geronimo-jms_1.1_spec-1.1-sources.jar

MongoDB Java Driver (2.4)

* License: Apache License, 2.0
* Project: http://www.mongodb.org/display/DOCS/Java+Language+Center
* Source: https://github.com/mongodb/mongo-java-driver

## Cryptography

Content may contain encryption software. The country in which you are currently
may have restrictions on the import, possession, and use, and/or re-export to
another country, of encryption software. BEFORE using any encryption software,
please check the country's laws, regulations and policies concerning the import,
possession, or use, and re-export of encryption software, to see if this is
permitted.
