Subversion
Copyright 2010 The Apache Software Foundation

This product includes software developed by many people, and distributed
under Contributor License Agreements to The Apache Software Foundation
(http://www.apache.org/).  See the accompanying COMMITTERS file and the
revision logs for an exact contribution history.

Portions of the test suite for Subversion's Python bindings are copyrighted
by Edgewall Software, Jonas Borgström and Christopher Lenz.
For more information, see LICENSE.

This product includes software developed under the X Consortium License
see: build/install-sh

This product includes software developed by Markus Kuhn under a permissive
license, see LICENSE.

This software contains code derived from the RSA Data Security
Inc. MD5 Message-Digest Algorithm, including various
modifications by Spyglass Inc., Carnegie Mellon University, and
Bell Communications Research, Inc (Bellcore).

