Apache Directory Studio
Copyright 2007-2016 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

This product uses Apache Ant (http://ant.apache.org/).

This product includes/uses Apache Commons (http://commons.apache.org/).

This product includes/uses Apache Loggin Services (http://logging.apache.org/).

This product includes/uses Apache Felix (http://felix.apache.org/).

This product uses Apache Maven (http://maven.apache.org/).

This product includes/uses Apache Mina (http://mina.apache.org/).

This product includes/uses software, AntLR Parser Generator (http://www.antlr.org/).

This product uses DocBook (http://www.oasis-open.org/docbook/).

This product includes software developed at 
the Eclipse Foundation (http://www.eclipse.org).

This product uses software, JUnit (http://junit.org),
developed by JUnit (http://www.junit.org)

This product includes/uses software, dom4j (http://dom4j.org),
developed by MetaStuff Ltd.  (http://sourceforge.net/projects/dom4j).

This product includes/uses software, SLF4J API Module (http://www.slf4j.org),
developed by QOS.ch  (http://www.qos.ch)

This product includes/uses software, XMLPullParser 3 - xpp3:xpp3:jar:1.1.3.4.O (http://www.extreme.indiana.edu/xgws/xsoap/xpp/mxp1/)
