Apache OpenMeetings
Copyright 2011-2012 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

This product includes icons from FamFamFam Icon Set Silk.
http://www.famfamfam.com/lab/icons/silk/
