   =========================================================================
   ==  NOTICE file corresponding to the section 4 d of                    ==
   ==  the Apache License, Version 2.0,                                   ==
   ==  in this case for the Apache Synapse distribution.                  ==
   =========================================================================

	This product includes software developed at
	The Apache Software Foundation (http://www.apache.org/).

The Apache Synapse binary distribution includes software distributed under the
Apache License (AL) Version 1.1, COMMON DEVELOPMENT AND DISTRIBUTION LICENSE
(CDDL) Version 1.0, and the Creative Commons Public Domain license. See the
LICENSE file for details.

COPYRIGHT NOTICES

* Synapse binary is bundled with jaxen-1.1-beta-10.jar
     Copyright 2003-2006 The Werken Company. All Rights Reserved.


 
