Apache Felix UPnP Sample TV
Copyright 2006-2009 The Apache Software Foundation


I. Included 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 developed by Satoshi Konno
(http://sourceforge.net/projects/cgupnpjava/)
Copyright 2003-2008 Satoshi Konno,
Licensed under the BSD License.

II. Used Software

This product uses software developed at
The OSGi Alliance (http://www.osgi.org/).
Copyright 2006-2008 The OSGi Alliance.
Licensed under the Apache License 2.0.

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


III. License Summary
- Apache License 2.0
- BSD License
