
Apache OpenEJB
Copyright 1999-2011 The Apache Software Foundation

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

This product includes schema files developed for the Glassfish Java EE
reference implementation (http://java.sun.com/xml/ns/j2ee/).
Apache OpenEJB elects to include this software in this distribution
under the CDDL license.  You can obtain a copy of the License at:
    https://glassfish.dev.java.net/public/CDDL+GPL.html

"Twitter Bootstrap" is licensed under Apache License v2.0.
You can obtain a copy of the License at: https://github.com/twitter/bootstrap/wiki/License

"less.js " is licensed under the Apache License.
You can obtain a copy of the License at: https://github.com/cloudhead/less.js/blob/master/LICENSE

"jquery" is licensed under the MIT License.
You can obtain a copy of the License at: https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt

"handlebars.js" is licensed under the MIT License.
You can obtain a copy of the License at: https://github.com/wycats/handlebars.js/blob/master/LICENSE

"codemirror" is licensed under the MIT License.
You can obtain a copy of the License at: http://codemirror.net/LICENSE

"require.js" is licensed under the MIT License.
You can obtain a copy of the License at: https://github.com/jrburke/requirejs/blob/master/LICENSE