Apache Felix Service Diagnostics WebConsole Plugin
Copyright (c) 2013 The Apache Software Foundation

This software was developed at the Apache Software Foundation
(http://www.apache.org) and may have dependencies on other
Apache software licensed under Apache License 2.0.

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 software from http://raphaeljs.com
Copyright (c) 2008 Dmitry Baranovskiy
Licensed under the MIT License

This product includes software from http://dev.buildpatternd.com/trac
Copyright (c) 2006 Aslak Hellesoy <aslak.hellesoy@gmail.com>
Copyright (c) 2006 Dave Hoover <dave.hoover@gmail.com> 
Licensed under the MIT License


II. Used Third-Party Software

This product uses software developed at
The OSGi Alliance (http://www.osgi.org/).
Copyright (c) OSGi Alliance (2000, 2009).
Licensed under the Apache License 2.0.


III. License Summary

- Apache License 2.0
- MIT License
