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

------------------------------------------------------------------------
See the file LICENSE.txt
See licenses for accompanying products in the "/licenses" subdirectory.
------------------------------------------------------------------------

