Apache MINA
Copyright 2006 The Apache Software Foundation.

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

Message logging is provided by the SLF4J library package,
which is open source software, written by Ceki Gülcü, and
copyright by SLF4J.ORG and QOS.ch.  The original software is
available from

   http://www.slf4j.org/

Data compression support is provided by the JZLib library package,
which is open source software, written by JCraft, and copyright
by JCraft.  The original software is available from

   http://www.jcraft.com/jzlib/

Spring framework is provided by the Spring framework library
package, which is open source software, written by Rod Johnson
et al, and copyright by Springframework.org.  The original
software is available from

   http://www.springframework.org/

