I. Included Third-Party Software

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
Licensed under the Apache License 2.0.

This product includes icons from the Silk Icon set
(http://www.famfamfam.com/lab/icons/silk/)
Copyright (c) 2006 Mark James
Licensed under the Creative Commons Attribution 2.5 License


II. Used Third-Party Software

-

III. License Summary

- Apache License 2.0
- Creative Commons Attribution 2.5 License
